Reinventing the wheel
From Wikipedia, the free encyclopedia
It has been suggested that Not Invented Here be merged into this article or section. (Discuss) |
This article or section includes a list of references or external links, but its sources remain unclear because it lacks in-text citations. You can improve this article by introducing more precise citations. |
Reinventing the wheel (aka. "Not built here") is a phrase that means a generally accepted technique or solution is ignored in favor of a locally invented solution. To "reinvent the wheel" is to duplicate a basic method that has long since been accepted and even taken for granted.
The inspiration for this idiomatic metaphor lies in the fact that the wheel is the archetype of human ingenuity, both by virtue of the added power and flexibility it affords its users, and also in the ancient origins which allow it to underlie much, if not all, of modern technology. As it is not considered to have operational flaws, an attempt to reinvent it would be pointless and add no value to the object, and would be a waste of time, diverting the investigator's resources from possibly more worthy goals which his or her skills could advance more substantially.
At the same time, however, "reinventing the wheel" is an important tool in the instruction of complex ideas. Rather than providing students simply with a list of known facts and techniques and expecting them to incorporate these ideas perfectly and rapidly, the instructor instead will build up the material anew, leaving the student to work out those key steps which embody the reasoning characteristic of the field.
The phrase is sometimes used without derision, especially when the user applies it reflexively, possibly to indicate that although his or her activities might be perceived as merely reinventing the wheel, they actually possess additional value. This added value may work around software licensing incompatibilities or around technical limitations present in parts or modules provided by third-parties. An example would be to implement a bubble sort for a script written in Javascript and destined to be embedded in a web page. The bubble sort algorithm is well known and readily available from libraries for software developers writing general-purpose applications in C++ or Java but Javascript by default provides no such sorting algorithm. Hence, if a developer wants to use bubble sort on his web page, he must "reinvent the wheel" by reimplementing the algorithm. He could conceivably copy it from another web page but then he could run into copyright and software licensing issues. Reinventing the wheel in this case provides the missing functionality and also avoids copyright issues.
[edit] Related phrases
"Reinventing the square wheel" is the practice of unnecessarily engineering artifacts that provide functionality already provided by existing standard artifacts (reinventing the wheel) and ending up with a worse result than the standard (a square wheel). This is an anti-pattern which occurs when the engineer is unaware or contemptuous of the standard solution or does not understand the problem or the standard solution sufficiently to avoid problems overcome by the standard. It is mostly an affliction of inexperienced engineers.
Many problems contain subtleties which were resolved long ago in mainstream engineering (such as the importance of a wheel's rim being smooth). Anyone starting from scratch, ignoring the prior art, will naturally face these problems afresh, and to produce a satisfactory result they will have to spend time developing solutions for them (most likely the same solutions that are already well known). However, when reinventing the wheel is undertaken as a subtask of a bigger engineering project, rather than as a project in its own right hoping to produce a better wheel, the engineer often does not anticipate spending much time on it. The result is that an underdeveloped, poorly performing version of the wheel is used, when using a standard wheel would have been quicker and easier, and would have given better results.
Also, "preinventing the wheel", which means to hold off undertaking a task if it is expected to be undertaken at a later date and rolled out. An example would be, "We don't want to preinvent the wheel" when discussing a solution to a problem when it is known that the solution is being developed elsewhere. Referenced in "Change Leadership Project" P Brandt 2003
"Reinventing the wheel" may be an ironic cliche - it is not clear when the wheel itself was actually invented. The modern "invention" of wheel might actually be a "re-invention" of an old age invention.
[edit] References
- Steve Kemper: A Story of Genius, Innovation, and Grand Ambition, Harper Business, ISBN 0-06-076138-5
- Peter D. Hershock: A Buddhist Response to the Information Age, State University of New York Press, ISBN 0-7914-4232-2
- Peter Brandt: Change Leadership Project, Unpublished 2003