André Correia
Keep it simple, but not stupid
Posted on 2024-04-25
This is the first post of a series of articles about software principles and patterns that we can (and should) follow, but trying to point also the problem about not seeing above that.
As a software engineers from the early beginnings, we listen how important are the programming principles, and that we need to follow. Otherwise, we are not a good one. One of the first ones that caught my eyes was the KISS principle - keep it simple, stupid - and I tried to follow it religiously.
The benefits can be at some point obvious, making things simple, make them easy to understand in the perspective of evolution and also clear to anyone that are seeing the implementation for the first time. Moreover, building solutions in a simple way it’s faster to reach an objective and to understand what could be the struggles from the scalability perspective.
But, in my opinion, the issue comes with the “stupid” part of the principle. The reasoning behind my opinion takes in consideration two, let's call it: pain points.
One is because when we try to create the solutions with that in mind the simplicity will be lost while we try to make it stupid because too much simplicity will fork into two distinct paths. The one where we are too much verbose because we write everything like if the computer needs to understand as a plain English what we want to build. On the other hand, we can end up implementing complexity because simplicity can be misleading to abstraction (a topic for a future article).
Innovation is the second negative point about being stupid when following this kind of principle. To keep things stupid, we need to be pretty linear and avoid creating solutions that are out of the box. As a creativity job, that seems pretty confusing* and against the idea of why I believe that we end up being what we are as a worker in the society. Stupidity is one of the opposites of being creative (let’s not make confusion with over engineering - another good topic for a future article), and that is what makes me feel confused about KISS.
So, keep things simple, for the reasons that I mentioned and much more that can be listed. Think about the others, but don’t go for the stupid way. Try to break walls and make something different and out of the box every time that you have the opportunity.