I wanna share with you one of the most important lessons I've learned working as a software developer: Do not overengineer your software.
Most of the software developers I know—including myself.— when we were young, wild, and free—and by that I mean: junior.—, we used to think that by offering complex solutions to simple problems, we were going to impress everybody with our code. Well, let me tell you... We didn't!
Lets see my experience. It was December 2014 when I got this call from a man who had seen a few simple web pages I had developed using raw HTML, CSS, and javascript, so he wanted to make me an offer I couldn't refuse.
He wanted a social media platform where people could talk about their spiritual beliefs. It sounded fun, so I thought: "Yeah! Why not? That would be cool!"
Besides, by that time, I had developed a custom blank theme for WordPress, a PHP calendar, and even a basic CMS using PHP and this simple MVC framework I'd created myself.–reading a lot of blog posts though– and... How to forget... This WYSIWYG jQuery plugin. I Miss those times.
What could go wrong? [sight]... Everything went wrong! 🤡
We started development in 2015. It was a difficult journey due of my lack of experience in real-life projects... We made it happen though.
I'm not planning on going deeper into details, but it was this huge monolithic app mixing an actually solid backend and the mess of a frontend with a lot of .phtml files mixing PHP, CSS, HTML, and even javascript.
To achieve all the requirements I made this super huge javascript function that worked as a data access layer, interpreter, and presenter at the same time, while also offering utilities I actually didn't reuse that much.
I made it work decently, nontheless whenever they asked for a new feature it was a pain in the ass to the point that I had to re-engineer it from scratch several times.
It wasn't scalable, it wasn't easy to implement, and you needed to add a lot of code just to get a simple button. Even the layers in the backend closer to the frontend were getting affected by this bad practice. Then I couldn't handle it anymore so I left the project. The code stayed there, and nobody was able to implement it once again. You can imagine my frustration.
The reason I'm sharing this is that I've seen a lot of people out there creating super complex solutions, maybe thinking it will guarantee a job or just trying to demonstrate their knowledge by creating their own stuff, which is not bad, as long as you keep it simple.
My best advice for juniors is basically that. Keep it simple, don't stop thinking about solutions, don't stop, don't stop being a rebel, keep it simple though. There's no need for you to reinvent the wheel. There are a lot of helpful tools and resources at your disposal, use them to build something better. Keep your code as clean as possible, and something really important: frontend might be the new backend... It's not the same though.
Now I would like to read your experiences. Have you ever face this situation? what did you do to overcome the neccesity of overengineering software?
Top comments (0)