Reinvent The Wheel Or Not? My Personal Take

Here Is A Little Anecdote That Might Interest You

I have a friend I’ve been working with for some time now on a startup idea. I handled the front-end part of the site while he is to take on the back-end. Three months and a lot of frustration and disappointments later from when the front-end part was ready, we are still struggling with the back-end. I had no idea what the problem was until I asked him a very specific question,” Are you using a framework or are you trying to build this thing from scratch?” To my chagrin, he was building it from scratch. I tried arguing things out with him but he insisted on defending his position (he seems to take pride in suffering). End of my story.

Now I understand that some people might think it’s sexy and cool to build from scratch — you know, something like,” I built a freaking website from scratch!!, no modules!, no frameworks!, from complete scratch!”. Or “ all this people that pride themselves as programmers are just Ctrl c Ctrl v experts. None of them can program. Only copying and pasting and using frameworks upandan” — , one thing I learnt from a couple of years in embedded systems programming though is to never reinvent the wheels!!! Never!

Here are my personal thoughts as to why you shouldn’t do that, out of thousands of other reasons.

Horrific Code Base

It leads to a very horrific and terrifying code base, with very little structure and common ground. Imaging what will happen if there was no S.I unit of measurement or IEEE. Not only can others not work on the codes you wrote, you run the risk of not understanding it yourself after some time. You can now imaging what will happen if you eventually need to scale and hire more programmers — chaos! (Honestly, only God and my friend knows what kinda monstrosity my friend is building on that backend).

Unemployed Genius

You come out with all your knowledge in, say python or javascript and still find it very hard to get a job. I have a background in embedded systems design, we wrote programmes in assemble language back then and took pride in the fact that we are coding in one of the hardest languages to understand. Enter the job market, most companies just won’t listen to you if you mention assemble. Bringing this to web development, some of the big companies that’ll hire you already have their platform built on a particular framework, stuffs like django or libraries like react. They don’t care if you can create a human being with your codes, they only want you to maintain their code base and if you can’t do this, you are useless to them.

Security Concerns

Talk of the security issues. Django for example comes with argon2 and other hashing packages that hashes user passwords with SHA256 hash algorithm and generates a compulsory super secure verification token for extra security. The truth is, to get to the level of security some of this frameworks provide, you might have to write for years (And maybe by the time you finish, you’re language of choice might have upgraded to the point that your efforts will become waste). You just can’t beat the codes and efforts that thousands of people have put into developing these frameworks. You are just a tiny man in a tiny room writing a relatively tiny code.

Time To Market

Talk of time to market (exactly the issue I’m facing with my guy). With these frameworks, there are thousands of modules already written by thousands of people to handle thousands of various scenarios. The question now is, why suffer yourself? Why waste precious time, when you can always easily plug and play, allowing you to focus on the really unique parts of your project that nothing else can handle? If you insist suffering is good, then I suggest you build your own payment gateways too. Never use other peoples api, build your own dedicated search engine and never ask stack overflow for answers, just read up the language documentation and start typing away on your key board. Let’s see how far you go with that. like Newton said,

”If I have seen a little further, it is by standing on the shoulders of giants”.

Be like newton, don’t wait to become a giant before you can make a difference, instead find a giant to stand on the shoulders.

I can go on and on but I believe you got the point. I’m not saying it’s bad to try out things on your own anymore (It’ll definitely do you good to learn how things work at the minute level), what I’m saying is, instead of reinventing the wheel, perfect it. If you really want to know how things work, contribute to open source projects instead of writing codes from scratch. The former will help you gain experience and meet new people even as you get your hands dirty learning the in’s and out’s of your language of choice

Recommended Read