The simplicity paradox
The hard thing about software is the emerging complexity. It mostly comes from the always growing size of our applications and the more and more sophisticated technologies we use. The only hope we have to keep it under control is to aim for simplicity in every possible way when we write code. We even made an acronym for that : KISS.
Anyone can agree on the goal, but it is very hard to define or measure it. Simple is not simplistic. Simple is always relative, to other solutions, to the problem complexity and constraints, to people knowledge… Keeping things simple is not an easy task and there is a lot to say about it. But in this article, I want to explore why only few people really aim for simplicity after reading Knowing how to do complicated things doesn’t make you a good developer [FR] from Arnaud Lemaire.
Hard because it’s an additional step once you already have a working solution. It requires a lot of knowledge of the problem, the system you are working with, but also higher abstraction capabilities and a lot of experience to be able to come up with a significantly simpler solution.
Not rewarding because once the solution is found, it seems obvious. Nobody will be impressed by a simple solution. Nobody is going to feel smart understanding it. Worst, a simple solution can be deceptive and people will try to “improve” it (aka complexify).
As a developer, choosing the software simplicity path is like climbing the north face. You have to work harder, but it will not be recognized. Neither the efforts nor the result. Most of your colleagues will chase new and trendy technologies, building complex things and bragging about it. You may feel alone but deep inside you, you know it’s the right thing to do for the project and for the company.
It’s hard to know when a code is simple or not. You never know if you have done a good job on this. But, as you see more and more projects, you can recognize a pattern. Some of them, with good and simple code, evolve easily when new features are required. They need very low maintenance and have almost no bug. Developers discovering the code are quite happy with it as they understand it easily and can contribute quickly. And, sometimes, at the bend of a conversation, you can even hear genuine compliments. And that is worth everything.
Maybe this story resonates with your experience. If it does, please tell us in the comments and let’s benefit from them to relate stories about simple code and brag a little about them!