*** Welcome to piglix ***

Reinventing the wheel


To reinvent the wheel is to duplicate a basic method that has already previously been created or optimized by others.

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 has already been invented, and is not considered to have any 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.

The phrase is sometimes used without derision, when a person's activities might be perceived as merely reinventing the wheel, when they actually possess additional value. For example, "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.

"Reinventing the wheel" may be an ironic cliche – it is not clear when the wheel itself was actually invented. The modern "invention" of the wheel might actually be a "re-invention" of an age-old invention. Additionally, many different wheels featuring enhancements on existing wheels (such as the many types of available tires) are regularly developed and marketed. The metaphor emphasizes understanding existing solutions, but not necessarily settling for them.

In software development, reinventing the wheel is often necessary in order to 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 quicksort for a script written in JavaScript and destined to be embedded in a web page. The quicksort algorithm is well known and readily available from libraries for software developers writing general-purpose applications in C++ or Java, but some Javascript implementations do not provide this specific algorithm. Hence, if a developer wants to reliably use quicksort on their web page, they must "reinvent the wheel" by reimplementing the algorithm. They could conceivably copy it from another web page, but then they could run into copyright and software licensing issues. Reinventing the wheel in this case provides the missing functionality and also avoids copyright issues.


...
Wikipedia

...