Tim Bryce: And why we should avoid doing so.
I’m a big believer or reusing things, particularly if I know something has already proven itself to be a viable solution. As a small example, I maintain a library of templates for such things as word processing and desktop publishing documents, web pages, and simple data base designs. I select a template, and then fine tune it until I get what I want. I find this saves me a lot of time as opposed to developing something from scratch. If I find something else useful along the way, I add it to my library. In the systems world, I have always advocated the sharing and reusing of information resources, such as data and processing components, which I often refer to as “building blocks” for developing systems. It’s just a smarter way of operating and, frankly, I don’t like to reinvent the wheel with every project I’m working on. Instead, I want to get the job done. If that means reusing something, so be it, regardless of its age; if it works, it works.
I’m not much of a proponent of “throwing the baby out with the bath water,” but I know a lot of people who are just the antithesis of this and are constantly reinventing the wheel. I don’t know why this is, but I suspect it probably has something to do with human ego. It’s kind of like someone saying, “Well, if I didn’t think of it, it can’t be any good and I’ll go and invent one myself.” We saw this for years when we sold our “PRIDE” methodology for systems design. We met several people who thought our methodology was nice, but thought they could do it better themselves and invested thousands of dollars trying to reinvent our wheel. Inevitably, such undertakings ended up as disasters and we sold them our product in the end. I always marveled at the amount of time and money these companies wasted in the process though; all because of ego.
Years ago General Motors took some heat for slipping a Pontiac engine into an Oldsmobile chassis. People thought they were getting gypped by getting a “cheap” engine. To me, I thought GM was brilliant. Here we had a company who designed products with interchangeable parts in mind. This allowed them to reduce inventory overhead, integrate their product lines, and still produce quality products less expensively. And I can tell you, there is nothing “cheap” about a Pontiac engine. Nonetheless, the public didn’t see it this way.
In the systems world, I think you would be surprised to see how much computer software is thrown out with each release of a product. Instead of reusing program code, a lot of companies simply reinvent the wheel with each release. I find this rather strange and a huge waste of money. Maybe it’s because people don’t know how to share and reuse component parts; either that or they simply don’t want to. Either way, the human tendency to avoid sharing and reusing anything, and reinventing the wheel each go around, leads to increased development costs, which, of course, is inflationary.
Another reason for not sharing is I believe we no longer have a sense of history anymore. We do not study what worked or what didn’t years ago, we are only interested in the present. Consequently, this leads people into reinventing a wheel that was invented some time ago.
There have been plenty of tools introduced over the years for standardizing and sharing components; everything from Bill of Material Processors (BOMP) in the manufacturing sector, to Repositories in the I.T. field. You can find such tools in just about every field of endeavor. The technology is certainly available to share and reuse components, but the desire and discipline to do so is not. I can tell you this, sharing and reusing things doesn’t happen by itself. It requires a concerted management effort to make it happen. However, if management is oblivious to the problem and doesn’t care about the amount of money they waste year after year, then I guess we will be “reinventing the wheel” for a long time to come.
Keep the Faith!