reinventing the wheel is exactly what allows us to travel 80mph without even feeling it. the original wheel fell apart at about 5mph after 100 yards. now they’re rubber, self-healing, last 4000 times longer. whoever intended the phrase “you’re reinventing the wheel” to be an insult was an idiot.
That’s not what “reinventing the wheel” (when used as an insult) usually means. I guess that the inventor of the tyre was aware of the earlier types of wheel, their advantages, and their shortcomings. Conversely, the people who typically receive this insult don’t even bother to research the prior art on whatever they are doing.
To go along with what army1987 said, “reinventing the wheel” isn’t going from the wooden wheel to the rubber one. “Reinventing the wheel” is ignoring the rubber wheels that exist and spending months of R&D to make a wooden circle.
For example, trying to write a function to do date calculations, when there’s a perfectly good library.
For example, trying to write a function to do date calculations, when there’s a perfectly good library.
One obvious caveat is when the cost of finding, linking/registering and learning-to-use the library is greater than the cost of writing + debugging a function that suits your needs (of course, subject to the planning fallacy when doing estimates beforehand). More pronounced when the language/API/environment in question is one you’re less fluent/comfortable with.
In this optic, “reinventing the wheel” should be further restricted to when an irrational decision was taken to do something with less expected utility—cost than simply using the existing version(s).
That’s why I chose the example of date calculations specifically. In practice, anyone who tries to write one of those from scratch will get it wrong in lots of different ways all at once.
Yes. It’s a good example. I was more or less making a point against a strawman (made of expected inference), rather than trying to oppose your specific statements; I just felt it was too easy for someone not intimate with the headaches of date functions to mistake this for a general assertion that any rewriting of existing good libraries is a Bad Thing.
--rickest on IRC
That’s not what “reinventing the wheel” (when used as an insult) usually means. I guess that the inventor of the tyre was aware of the earlier types of wheel, their advantages, and their shortcomings. Conversely, the people who typically receive this insult don’t even bother to research the prior art on whatever they are doing.
To go along with what army1987 said, “reinventing the wheel” isn’t going from the wooden wheel to the rubber one. “Reinventing the wheel” is ignoring the rubber wheels that exist and spending months of R&D to make a wooden circle.
For example, trying to write a function to do date calculations, when there’s a perfectly good library.
One obvious caveat is when the cost of finding, linking/registering and learning-to-use the library is greater than the cost of writing + debugging a function that suits your needs (of course, subject to the planning fallacy when doing estimates beforehand). More pronounced when the language/API/environment in question is one you’re less fluent/comfortable with.
In this optic, “reinventing the wheel” should be further restricted to when an irrational decision was taken to do something with less expected utility—cost than simply using the existing version(s).
That’s why I chose the example of date calculations specifically. In practice, anyone who tries to write one of those from scratch will get it wrong in lots of different ways all at once.
Yes. It’s a good example. I was more or less making a point against a strawman (made of expected inference), rather than trying to oppose your specific statements; I just felt it was too easy for someone not intimate with the headaches of date functions to mistake this for a general assertion that any rewriting of existing good libraries is a Bad Thing.
Jeff Atwood
Clever-sounding and wrong is perhaps the worst combination in a rationality quote.