DO Reinvent the Wheel
Don’t reinvent the wheel - how many times have you heard this mantra?
If I had a dollar for every time I heard this, I’d probably be rich. I’m exaggerating a bit but this mantra really is common in the developer’s world and recenlty I had a realization about why it’s so commonly used and why I think it erodes on the developers’s way of thinking.
Silicon Valley is a series I’ve heard about for a while now but didn’t get arround to actually check it out. I finally did so yesterday evening and after watching the first episode of the first season it somehow stuck with me. Not for the ridiculousness of the startup world in Silicon Valley where every new company is “disrupting” something and “innovating” their asses off discovering a new way to do email or take selfies - which by the way, the show really seems to nail - but for the fact that actually “Pied Piper”, the startup of the series protagonists, is really doing something innovative in the realm of lossless compression. Even though lossless compression algorithms do have mathematical limitations, and there are a bunch of them tried and used, that doesn’t mean the status quo cannot be improved which is exaclty what “Pied Piper” is doing and the point of this post - the “question everything attitude” that gets eroded everytime we buy into the “don’t reinvent the wheel mantra”. The guys here are a good example of reinventing the wheel and having an attitude of challenging the status quo which has landed them on the road to changing the game. It’s useless to say that good lossless compression has a plethora of applications, from making data transfers faster, to using less space in the cloud, to making the internet fast on slow connections. They’ve tried, they’ve succeeded. They didn’t think that there are plenty of compression options out there and they can’t ever compete with the established companies on this.
This whole thing got me thinking about what I and other developers are doing on our daily jobs - solving business problems for our customers by using frameworks, technologies and platforms invented by others. Indeed in this situation it makes sense not to “reinvent the wheel” and use the wheels invented by others to solve the problems our customers need solved. They need to do that on a timely manner in order for their businesses to run smoothly. Innovation, on the other hand, actually takes time to happen which is not all that well received since in business that translates to money lost. So, somehow, this mantra got served to developers (I don’t know where or who said it first and actually I don’t really care) which happily embraced it and went on to put the “bricks” from different frameworks together trying to solve the problems at hand as quickly as possible in order to make the customers happy. Now don’t get me wrong, I don’t think there is anything wrong with this way of thinking and approaching problem solving, I just think that if we want to truly consider ourselves software engineers, we need a dose of reinventing wheels from time to time, otherwise our engineering spirit gets eroded away.
If we want more out of life, if we want to truly make a difference and not be just another cog in the machine, if we want to solve problems that really matter, we need to have a reinvent the wheel kind of attitude. We should question our methods, we should challenge the status quo. Think you can do a beter job at searching than Google? Do it! Prove everybody that says otherwise they’re wrong.
I must admit that I like to call myself a software engineer instead of a developer, just for the distinction exemplified above, but also I admit that my attitude is not always oriented towards reinventing wheels, but more towards using others’s wheels. I will try and change that as much as possible, at least in my personal projects. Who knows, maybe something good will come out of it or at least I won’t feel like an imposter when calling myself software engineer. I hope this will inspire at least some of my developer friends to think and do the same.