Why it’s sometimes good to re-invent the wheel

When I first started as a Software Engineer, I was told to never re-invent the wheel. After-all why waste time and energy when you can just re-use whats already out there. Whats already there is probably more mature and stable than what you can do anyway.

Over the years I came to realised that is only half of the story. Re-implementing something that already exists is often a good thing. It’s one of the best way to pick up a new technology. When I had to pick up Node.js for a particular project, as an exercise I decided to implement my own version of async.js and unit test framework. Comparing what I wrote and the official async.js library, I saw how others overcame the very same problems and how my thought process and designs differed from them. I grew as a developer because of this and I had learned more from this than all the online tutorials, StackOverflow posts and the actual project.

More importantly, I think as Engineers (and to a degree for us as human beings) it’s our job to continually question and seek ways to improve the status quo. Countless technologies wouldn’t have existed had the Engineers in question not seek and asked the question “can it be done better?”. Sure many if not most end as failures but isn’t that how we continue to improve? Always looking to make the wheel that little bit rounder?

In this day and age of Google, Github and StackOverflow, it’s become instinctive for many developers to search first and think later. Maybe every so often, it would be better if we stopped, sat back and asked the question “Could I do better?”