DEV Community

loading...
Cover image for Why you should reinvent the wheel

Why you should reinvent the wheel

quantumsheep profile image Nathanael Demacon ・2 min read

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!

Learning

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.

Reinventing the wheel

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.

Discussion (27)

pic
Editor guide
Collapse
simonhaisz profile image
simonhaisz

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?

Collapse
quantumsheep profile image
Nathanael Demacon Author

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".

Collapse
proticm profile image
Milos Protic

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!

Collapse
quantumsheep profile image
Nathanael Demacon Author

Understanding how something works is the best way to use it perfectly. Continue like that, that's a good project right there!

Collapse
proticm profile image
Milos Protic

Thank you very much, I will do my best :)

Collapse
fpuffer profile image
Frank Puffer • Edited

I absolutely agree. But do you also think that a professional developer should get paid for reinventing wheels?

Collapse
quantumsheep profile image
Nathanael Demacon Author

Absolutely not! For work productivity it's better to take the fastest option. This article is for peoples who do things by passion.

Collapse
fpuffer profile image
Frank Puffer • Edited

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.

Thread Thread
quantumsheep profile image
Nathanael Demacon Author

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 :(

Thread Thread
fpuffer profile image
Frank Puffer

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.

Thread Thread
codemouse92 profile image
Jason C. McDonald • Edited

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!

Thread Thread
quantumsheep profile image
Nathanael Demacon Author

It all depends on the employers, a big company like EA can afford R&D for sure!

Thread Thread
codemouse92 profile image
Jason C. McDonald

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.

Collapse
bgadrian profile image
Adrian B.G. • Edited

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

  • to learn it
  • to make a new better version

But ... 99% of the people who get this reply they are just wasting their resources in build an worst wheel for the wrong reasons.

Collapse
quantumsheep profile image
Nathanael Demacon Author

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.

Collapse
dimensi0n profile image
Erwan ROUSSEL

The best article I ever read 😍 you're a magician 👍

Collapse
ioiotinez profile image
Dieguito

I totally agree when the goal is to learn

Collapse
quantumsheep profile image
Nathanael Demacon Author

Sure, creativity need a bit of thinking. The point of reinventing the wheel is more for personal knowledge than for society helping

Collapse
didxga profile image
Carter Chen

Reinvent wheel, reinvent another wheel, yet another wheel, then one day you can INVENT a new wheel.

Collapse
ciri3dg profile image
Da2@ciri3dg

We don't really reinvent, necessity is the mother of invention. CREATIVITY, the 'irresponsible' father... 😨

Collapse
lidajr profile image
LidaJR

Hello,
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

Collapse
codemouse92 profile image
Collapse
ben profile image
Ben Halpern

I wrote a short post very early in the DEV project along these lines too

Reinventing wheels is awesome.

Collapse
codemouse92 profile image
Jason C. McDonald

Hahah! So we've all reinvented the wheel on that concept!

Collapse
quantumsheep profile image
Nathanael Demacon Author

Really great developed article!

Collapse
codemouse92 profile image
Jason C. McDonald

Meanwhile, yours was delightfully to the point!