An exploded-view drawing of a wheel with an electric drive system

Image source

Don’t reinvent the wheel” is the standard advice. And I think that it’s usually good advice. Most of the time, it’s a waste of time and effort to redo something that’s already been done, if you can just reuse the existing thing instead. Most of the time, but not always. As I said in my introduction, sometimes it’s good to reinvent the wheel. Here I'll discuss some of the reasons to do so.

One of the best reasons is for learning. That’s the primary reason I’m doing it with this blog. The best way to learn is by doing. Studying how someone else achieved something is great, but by doing it yourself, you’re forced to engage with it at a deeper level, which gives you a better understanding of what goes into it.

Another reason is if the existing wheel doesn’t do what you want it to do. In this case, it’s still usually better to start with what already exists and figure out how to modify it to fit your needs. But sometimes you just need to restart from the ground up. A good example of this is git. Linus Torvalds created git because none of the existing source control management systems that existed at the time met his needs, so he built his own.

Reinventing the wheel can also mitigate the risks of having a monoculture. In agriculture, it’s common to grow a single species in a field. This is efficient, but also fragile. If there’s a disease, it can easily wipe out the whole field. This idea applies to technology too. For example, if many people use the same operating system, it’s easier to develop software that they can all use. But if that operating system has any vulnerabilities, then everyone who uses it is exposed in the same way. Having multiple co-existing systems can also be beneficial by encouraging competition and enabling cross-pollination of ideas. In this case, the benefit of reinventing the wheel is not just for the person or organization doing it, but for the community as a whole.

All of this is from the perspective of software development, where reusing existing technology is especially easy, but I think these same basic ideas apply to other fields too.