The Idea of Not “Reinventing the Wheel”
I’ve heard the phrase “don’t reinvent the wheel” before, but the idea for this post came to mind when I was reading a book the other week.
I was reading a book called “Money: Master the Game” by Tony Robbins, which is about how money and investing works, and where he interviews many different experts in the investing industry.
Now, I’m not here to promote the book or anything like that, but one thing he mentioned in the book was that people try to make investing much more complicated than it should be. He mentioned that there are methods out there that already work, and there’s no point “reinventing the wheel”.
I realised then that the same thought can be applied to software development.
So, what does this concept even mean?
What Does “Don’t Reinvent the Wheel” Mean?
In a time before the wheel was invented, it was hard to move things around. There were no cars, no wagons, no trolleys.
Then, someone invented a thin, round object, called the wheel, which they then attached to other things, like a flat piece of wood. This meant that you can put things on the flat piece of wood and push it along to make it easier to move.
It was the invention of the wheel. This concept changed people’s lives and it allowed for a lot of other things to be invented.
Now, the wheel already exists, and does the job quite well. Nobody needs to “reinvent” it, they just use it in different ways – cars with rubber tyres, attaching it to wheelchairs, bicycles, and so on.
So, when someone says “don’t reinvent the wheel”, it means that you don’t need to design a solution from nothing when a solution already exists and could be what you’re looking for. You could just take the concept of a “wheel” and tweak it to fit your needs.
How Can You Apply This As A Software Developer?
You’re probably thinking, “That’s good, Ben, but what do wheels have to do with software, or being a developer?”
A lot, as it turns out.
If you’re having a problem with designing an area of your application, or trying to write a query to get something done on your database, you can apply this concept of “don’t reinvent the wheel”.
Why try to design something from nothing, when a solution already exists? Use an existing solution and tweak it to save time, save effort, and save yourself from a headache!
Some examples of using an existing solution are:
- Google – Whenever you Google a solution to a problem and find someone else’s answer, you’re using this concept. It’s a great way to save time.
- StackOverflow – StackOverflow is full of great solutions to people’s problems and advice on how to approach things.
- Frameworks – A framework is essentially someone’s “wheel invention”. Using a framework in your project allows you to build on what someone else has created.
- Design patterns – Similar to a framework, using a design pattern allows you to use a common design for source code to achieve a goal.
- Libraries – they contain code that allow you to get common tasks done.
In the web app that I’ve created, I used a framework to begin with. Why did I do this? I thought that were a bunch of core functions that I needed (login, logout, database access, header template, forms). I thought that someone must have created all of this already, as I didn’t feel like writing login access code from scratch. I like being more efficient.
So, I found a framework for PHP called CodeIgniter that was widely used and had everything I needed. I used it in my project and it saved me a lot of time. It’s probably more robust than anything I could have created, as it’s been contributed to and updated by many people.
The point of this article is to use existing solutions and build on them instead of writing things from nothing. It saves you time, which is important as a software developer.
Career Action Tip: Consider if any areas of your current project can use a solution that has already been created by others.
Lastly, if you enjoy the information and career advice I’ve been providing, sign up to my newsletter below to stay up-to-date on my articles. You’ll also receive a fantastic bonus. Thanks!
Image courtesy of taesmileland / FreeDigitalPhotos.net