I believe that the classic idiom "Don't reinvent the wheel " is fundimentally flawed. It implies that if something works, why change it. I've heard a lot of people using this phrase where it shouldn't be used. In some cases, it's true (that you shouldn't reinvent the wheel), but in a lot of cases, the wheel could (or dare I say it, should?) be reinveted.
The WheelThe whole prase "Don't reinvent the wheel" only makes sense with a certain axiom. It depends on the implication that the wheel is perfect. Not that it's the best possible design for a particular application. Not that it's the only logical choice. It requires the wheel to be PERFECT. If the wheel is anything less than perfect, then reinventing it makes sense in certain applications. The RoadWe know from modern technology that the wheel is not perfect. Several better alternatives exist for certain applications (such as treads on a tank or backhoe). Infact, the wheel can be reinvented depending on the road it needs to function on. The wheel is only perfect, until you find a road it does not work on. The wheel is only perfect until you find a better solution for your problem. The wheel is only perfect if you assume it is. What am I blabing about?In programming, there are an infinate number of methods to solving any problem (ok, so not that many GOOD methods, but they do exist). Because of this, smart people (way smarter than I) have come up with a few design strategies that tend to work well (Such as MVC, event based archetecture, OOP, etc). Infact, some of these strategies are seen as so powerful, that they become "wheels"... The flaw
Imperfection can sometimes be masked by the lack of a good comparison. Basically, just because a solution works, is used, or is seen as "best", that DOES NOT MAKE IT PERFECT. The catch 22 is that you may never know if a better solution exists, until you find it. Does that mean that we should take the wheel for gospel? Since nothing man made can achieve perfection (we are imperfect, therefore anything we make must be as such), when is close enough, well, close enough? Some things we wouldn't have...- Linux (hey, Unix worked just fine)
- PHP (You could do it in PERL)
- C++ (Afterall, it's just C to the compiler)
- LCD (Hey, CRTs' work)
- Electric Lights (Candles work fine!)
- Hospitals (Care in the home is just as good, right?)
- Clothing (...)
- need I say more?
So I say REINVENT the wheel. Do it until you find a better wheel. That's what innovation is about. The saying "If it's not broke, don't fix it" is flawed! It assumes perfection. And you know what it means to assume (it makes an ass out of u and me). Discuss this article on the forums. (0 posts) |