Sometimes some people tell to not "reinvent the wheel" by creating things that already exists. It's been time to clarify why we should reinvent the wheel and why they are wrong!
The best argument you can say in this situation is that you want to learn. Revolutionary ideas don't come that easy, if you want to learn just do something you would like to do, don't focus on creating new things especially.
You need skills to create your ideas. Get those skills by doing anything that comes in your mind!
Understanding how something works
Doing something that already exists can make yourself understand how it works and how can it be improved. Things are not perfects but are perfectibles, let's see the smartphone industry for instance.
You want to do it
You reinvent the wheel? So what? Peoples should not lead you in unwanted situations. Just have fun making things. Doesn't matter if those already exists, at least you'll be happy and that's what matters the most.
The "wheel" has been improved
The metaphor "don't reinvent the wheel" is so wrong! The wheel, strictly speaking, has been reinvented tons of times. We didn't come with a full rubber wheel in high technology cars in the first try. Things evolves because peoples "reinvent the wheel", and it should continue like that.
In conclusion, just improve yourself without thinking about making a brand new idea. It's ain't easy to find something that haven't been created yet so don't think too much about it if your only goal is to discover and explore new things.
Ideas comes with discovery.
Discoveries comes with time.
Top comments (27)
Maybe my experience is just different than yours, but normally when I hear/say "don't re-invent the wheel" it's not around "don't do X, it's been done" but more "you're trying to build X that needs a Y, there's already a good enough Y why not use that and focus more on making your X awesome".
If you are trying to build an app, why make your own database when there are plenty available for you to use? It's a distraction from building your app. Sure, if you want to build your own database to learn, or because you think you can build a better one, or because none of the existing ones meet your exact requirements. But if your goal is to build an app, why but focus on that?
In your case you want to create an app because it doesn't already exists or the existing one(s) doesn't match your requirement.
Using something that already exists to help you create another things is not reinventing the wheel, or at least un my mind. Today there is not a lot of peuples who do things totally from scratch, you use something else to support your creation.
Reinventing the wheel is more a fact of "don't mind if there is something like you want to create that already exists".
First of all, great article. Second, I totally agree with you.
I've been working as a software engineer (full stack) for a while now, 6 years to be exact. During that time I've used all popular front-end frameworks on various projects.
From time to time I've been noticing that things could be done differently or in a way to be easier to use, if not better. From that point on, my thoughts were the same as this article is describing. At first, I was curious how something was done and implemented. After that I wanted to learn it and understand it because by doing that I could meet my need to make something different or easier to use, as mentioned at the start of this comment.
In simple terms, I reached the point when I wanted to reinvent the wheel. :)
By doing this we are constantly improving the tools we use as developers and making them better.
Here is my attempt to reinvent the wheel and give something back to the community that gave me so much: GitHub:plazar-js
I don't know if it's going to be easier to use or better, that is something community should decide, but it's different.
I wish you best of luck!
Understanding how something works is the best way to use it perfectly. Continue like that, that's a good project right there!
Thank you very much, I will do my best :)
There are a few examples that comes to mind, where they made a new wheel, and it was a better one in the end.
Kubernetes was made by and with Google Borg (their internal equivalent tool) knowledge and developers, to be made open source, and with new features and issues fixed (that were not in their tool).
Kafka was made even if other similar tools existed for years and were mature (see *MQ tools).
If everyone would have used the libssh, many services would have been screwed.
I know that a few big companies like Amazon started to even build their own SSL tools after some vulnerabilities appeared in the open source world. Indeed OpenSSL quality was very low (no tests)
MariaDB is a fork of MySQL, and they solved many tech issues (some of which mysql does not and some only in the enterprise version), and also updated their license so no other evil corporation can hurt it in the future, like Oracle did.
Bottom line, there are a couple strong reasons, as the article stated too
But ... 99% of the people who get this reply they are just wasting their resources in build an worst wheel for the wrong reasons.
I agree with you, peoples should not totally reinventing the wheel for a serious project, I think they should improve it, if they want too btw.
I absolutely agree. But do you also think that a professional developer should get paid for reinventing wheels?
Absolutely not! For work productivity it's better to take the fastest option. This article is for peoples who do things by passion.
Actually I didn't expect such a distinct answer. Many of the things you describe are also beneficial for the employer, like potential reduction of technical debt, motivation and education of employees. On the other hand there is a certain risk that the employee will just waste time, come up with a solution that is worse than existing ones and doesn't even learn a lot during that process. I personally think that employees should get a certain amount of paid time for activities like this.
What I believe is that if something can be done at no cost, time and money included, then it's better to do it. The best example I can give you is WordPress, it can do tons of actions and can fulfill the client's needs.
I think that employees need "experimentations" time during their works hours. But employers will not accept this because they don't pay peoples to do non-productive work :(
I don't agree with the last statement: At least some of them pay for things like trainings or teambuilding events. They do it because they expect these to boost productivity in the long run. Just like what you describe in your original post.
A smart employer actually WILL pay for experimentation and reinvention, at least in approved arenas. Game engines generally reinvent the wheel on hundreds of levels, not least of all with brand new data structure implementations, if for no other reason than ensuing they don't have to weigh their engine down by linking to yet one more dependency. Performance gains are typically a goal of that, too.
Even inefficient behemoths like EA "reinvent the wheel". Just read "Game Engine Architecture" by Jason Gregory for a good look at that!
It all depends on the employers, a big company like EA can afford R&D for sure!
A number of smaller ones do as well. Honestly, to survive, no company can afford not having "R&D" style operations in some fashion! Size has absolutely nothing to do with it.
However, I think you misunderstand. The reinvention work Jason Gregory describes wasn't in R&D. It was in the run-of-the-mill software development department.
Writing your own implementation of something is as common and valid in professional development as using someone else's. It just has to be taken case-by-case.
The best article I ever read 😍 you're a magician 👍
I totally agree when the goal is to learn
Reinvent wheel, reinvent another wheel, yet another wheel, then one day you can INVENT a new wheel.
Sure, creativity need a bit of thinking. The point of reinventing the wheel is more for personal knowledge than for society helping
We don't really reinvent, necessity is the mother of invention. CREATIVITY, the 'irresponsible' father... 😨
I am writing to ask permission to use the artwork from Nathanael Demacon's article Why you should reinvent the wheel posted on October 27, 2018.
I would like to use the picture of the two cavemen and a wheelbarrow for an article in a nonprofit magazine for Open Water Lifeguards - American Lifeguard magazine.
Thank you for your time. Kay Smiley
Funny, I wrote something like this a couple years back...
Please Reinvent The Wheel
Jason C. McDonald
I wrote a short post very early in the DEV project along these lines too
Maybe Reinvent The Wheel
Reinventing wheels is awesome.
Hahah! So we've all reinvented the wheel on that concept!
Really great developed article!
Meanwhile, yours was delightfully to the point!