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.
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.