Don't Reinvent the Wheel

If there's one phrase I hate, it's "don't reinvent the wheel". I despise this phrase with a passion. The phrase itself is flawed. I hate it even more when it's used in the developer community though which is a rapidly changing field. We're constantly pushing to do more with less. That doesn't happen on it's own.

For one, let's start with the phrase itself. "Don't reinvent the wheel". It's actually quite hilarious if you think about it. Is there anything more reinvented than the wheel? The first one was most likely made of stone or wood as far back as mid 4th millennium BCE. Can you imagine us using a stone wheel? We're constantly coming up with new wheels. We've got training wheels, race car wheels, skateboard wheels, etc. Each of those is made from a different material. Each of those has it's pros and cons, but best of all, each of those was a reinvention. New wheels are constantly being invented for numerous reasons whether for longevity, strength, or cosmetics.

This phrase is even more ridiculous tho in the developer community. The funniest part is the people I get "don't reinvent the wheel" from the most are the people who have used about 10 different jQuery sliders, 3 different modal scripts, and blogs lists of "cool new slideshows". Look at Microsoft. They reinvented 2 of the most popular pieces of software ever. Windows, a rip off of other OSs at the time such as the Apple Lisa and IE, a rip off of the Mosaic browser by Spyglass Inc. Shit, even the Kinect is a reinvention to bring motion capture, which has been used for years, to your home.

Can you imagine if John Resig didn't feel like reinventing JS or the other libraries like MooTools? How about if Linus Torvalds didn't reinvent Unix or SVN with Linux or Git? How about if Rasmus Lerdorf didn't reinvent a programming language and then Zeev Suraski and Andi Gutmans didn't reinvent his parser completely in PHP3?

Seriously developers, if you love what you do stop saying this. You sound like an cretin. In no way am I saying rewrite everything you do every time and never use any libraries or plugins, I'm saying, if you feel like something could be done better, do it better. Everything can be better. If someone criticizes a project, encourage them to write something of their own, don't criticize them and discourage them. If the project you or they take on ends up being too hard, good. Not only have you pushed yourself to your limits, you've probably learned a lot of new tricks, and you've reinforced the reason to use that library or plugin. And hell, maybe you weren't able to reinvent it completely, but maybe you found ways to improve upon the library.

Get out there. Reinvent an OS, library, programming language, data format, or anything else you want and change the world. Reinventing the wheel is what makes good developers legends, not the other way around. Remember that.