Assuming you’re a programmer, I bet that you’ve heard the phrase reinventing the wheel before. I usually cringe when I hear someone say it, for two reasons:
1. It’s actually reimplementing the wheel
The phrase is almost always used when someone is implementing something that has been implemented by a library or framework. (That’s at least what my anecdotal evidence suggests.) So it’s reimplementing, not reinventing. Reinventing would be someone implementing a sort function, but completely ignoring all research done in that area, trying to come up with their own algorithm. I don’t think that’s common.
But there are valid reasons for implementing something that has been implemented before, here just a few:
- You want to actually understand what’s going on, and be able to tune freely, because it’s an important part of your application
- Libraries age far more quickly than research, and are not available in all environments
- You just want to keep things simple (note that I’m not using simple synonymously with easy here)
- It’s faster
- You and your colleagues don’t need to learn and remember the theory
- Depending on the library and programmers in question, often higher reliability
2. It’s condescending
It might be said with the best of intentions to safe someone else from wasting time, but it’s still saying they’re actually wasting their time. Without having a clue about why they chose to implement something themselves instead of using an existing implementation, that’s downright condescending.
Making assumptions about something you don’t know is generally not a good idea. Why not assume people actually know what they’re doing unless evidence suggests otherwise?