No Wrong Software Design Exists - Importance of Simplicity

Bahadir
3 min readOct 29, 2020

The biggest complaint software architects make today is “Nobody understands the solution I found.” At the same time, we often hear a developer who is involved in a new project, or who is running a maintenance job saying “There is an incredibly complex and unnecessary design. It will take a lot of time to solve.” And undoubtedly, these dissatisfaction does not yield a positive result either for the service providing company or for the customer / user receiving the service. So what is the reason for being such incomprehensible and difficult? What are the reasons that make a software or the solution and the design in a software incomprehensible and impossible to maintain? There are, of course, multiple reasons for this. Do not immediately defend yourself and try to claim that the design you choose actually works. Because we all already know that there is no wrong design, every solution you find solves the problem, of course. But the real question we have to focus on and look for an answer is whether your design is simple and understandable enough or not. Because remember, simplicity is the ultimate sophistication as Leonardo da Vinci stated. Now let’s examine the main reasons for these in this article. But let me warn you now that all of the reasons I will list below put all the responsibility on software architects and lead developers. Of course, we wouldn’t blame the young and inexperienced developers who just started work, right?

Let’s start by overestimating the problem at hand. I assure you that most of the time a problem similar to yours has been encountered by others before and various solutions have been applied by them. This means that an easier and simpler solution than those you can think of has already been applied. It is sometimes stored as a library, or sometimes recorded as a design pattern. For this reason, you should do a good research before thinking about the solution. A software architect who has stayed away from the literature can’t be successful.

Second, we can blame the effort of being extraordinary. Of course, personal ambitions and the effort to make a difference are one of the main reasons for this. The desire to prove himself/herself and to be appreciated can lead belittling the known and well-working solutions and moving away from the simplicity as it should be. It should not be forgotten that your reputation and fame will last until the next software architect starts the work. I have attended change of design meetings many times before. Each time, it was explained why the design at hand did not work and why a new solution was required. And I’m sure this existing design, which we are trying to give up, was considered a great idea years ago when it was first considered.

Another reason for complexity is that the software architect or product manager chooses to be overprotective and secure. Often, our hero thinks about features that will never come, makes predictions about features that are not listed in requirements. As a result, they will put additional responsibilities to the software that may never happen. Today, demands from customers or users must be met quickly. Therefore, instead of thinking benchmark solutions to problems that will never be touched again, approaching to practical applications will take you one step ahead. I recommend readers who want to obtain statistics about this, to research the prevalence of software tools that detect dead codes. Behind all dead codes is an over-thought solution.

Finally, it should not be forgotten that our work ultimately needs human resources. If you do not have crazy dreams to be in the software hall of fame, it is important to remember that in most companies people come and go, but processes are permanent. This creates an obligation to prepare for the future developers after you. On that account, choosing solutions that communities are not familiar with and not applying the known rule-of-thumbs will prevent the software you produce from being human-independent. What you really need to watch out for is what will happen when you are out of place. Consequently, you need to get rid of “nobody understands me” loneliness and start believing in the power of simplicity.

--

--

Bahadir

Mathematician. Software Engineer. PhD Student at Maths. 12+ Years Experience in Software.