Why Building Simple Systems is Hard?

Mark Mishaev
2 min readAug 7, 2021

Going back to my previous post about achieving architectural simplicity, I’d like to ponder the question why is it so complex to build simple systems?

We can spot two main reasons for this difficulty: it requires (1) deep technical knowledge and (2) discipline.

Deep technical knowledge is needed in order to be able to capture the essence of the problem, identify what is really necessary in order to solve it and ignore all the rest.

Discipline is important to preserve the solution simplicity against potential attempts to add “nice-to-have features” that complicate the design.

This quote by Edsger W. Dijkstra expresses it very succinctly:

“Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.”

Deep technical knowledge and education for avoiding unnecessary complexity are especially important nowadays with the wide usage of cloud computing.

You’re offered a huge toolbox of cloud services and tools, where you can easily add more moving parts with just in a few clicks or a simple script. Cloud service providers are constantly adding new capabilities in virtually every domain of the cyber space.

Catching up with this pace and being able to use those tools wisely is not trivial task, which explains why it gave birth to the whole eco-system of start-up companies that offer professional and onboarding services.

And indeed complexity sells better, we see it in descriptions of many solutions, where their traction is amplified by usage of buzz-words such as, “artificial intelligence” , “machine learning”, “IoT” and others.

--

--

Mark Mishaev

I am really passionate about agile leadership, software security, systems development and architecture.