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 :)
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.
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.
The best article I ever read 😍 you're a magician 👍
I more or less agree with you. After a certain level of expertise has been reached, one should muck around trying to reinvent the wheel and come up with something that suits one's work better. You can always abandon it and go back to what everyone else is doing if it doesn't work. :-)
Sure, creativity need a bit of thinking. The point of reinventing the wheel is more for personal knowledge than for society helping
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.
We don't really reinvent, necessity is the mother of invention. CREATIVITY, the 'irresponsible' father... 😨
Funny, I wrote something like this a couple years back...
I wrote a short post very early in the DEV project along these lines too
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!
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.