Why to keep it simple
Tags: beginners, productivity
Published: 2022-11-07 16:35:49

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?