Why readability should be the top priority in design?

Liang Du
3 min readApr 16, 2021

Since my first job as a software engineer 10 years ago, I have been thinking that the program is made for machines to understand. If the machine doesn’t understand it means it does not work which is valueless, so I have been assuming that the target users were machines.

After a long time of work and reading the following books Refactoring, Test-driven development, Clean Code, Clean Architecture, etc. I found it seems they are all making a lot of efforts to explain “clean”, what is clean?

This means many things, one of which is readability = lower complexity = simple = easy.

If the code is not clean, human beings might not be able to understand it very well, usually when some software is buggy, hard to change is because the design has exceeded the limit for a human to understand well, which is complex.

When we fix some bugs we found bugs caused by the fix, we failed to understand the behavior, but that’s not the reader’s fault, that’s the writer's fault. It’s the writer's responsibility to make it as clean as possible for readers to understand. If you make that happen you provide value to them.

Not just code and design need to be clean, if you keep observing how the world actually works, you might find good writers are usually good at making their ideas clean to their readers, good tools are clean for the customers to use, good partners, are usually clean to work with.

“clean” is value, to provide value from “clean”, we need to know programs are not just created for machines, the goal of the programs is to provide value to users who are human beings, if a software product is not clean to the customer it won’t survive long. If the design of the program is not clean to be well understood by other engineers, it won’t survive long either, because its value is lowered for not being clean.

What’s the value of “clean”?

Firstly, if you are the owner of the code, it’s written for yourself, no matter how well you understand that there is just no reason to not make your life easier.

Secondly, if you work together with other people you are making their life easier, you won’t be happy to work with people who make trouble for you right?

If you work for your clients you are providing more values: “it works”, As Uncle Bob said it’s the value for today, and “it’s easy to work with” which is the value for tomorrow, your clients hire you because they believe you can provide value for them if you can not only provide value for today but also for tomororw why they don’t like you?

“make it easy” is the principle I used recently, usually “easy” means value, if you make it easier, it means you make the cost lower, and your clients get the values by spending less coat.

“Easier” sometimes means quicker, cheaper, happier, and nobody hates that.

By improving the readability you can make it easier to provide value and you get value from that.

--

--