DEV Community

DS: Simplicity Matters
DS: Simplicity Matters

Posted on • Updated on • Originally published at

"Simplicity is prerequisite for reliability"

Note: this is a snapshot of an older wiki topic, see for the new "Simplicity as a Prerequisite for Reliability in Modern Software Development" series.

Simple is not easy, easy is not simple

Let's first get that out of the way. People are often equating easiness with simplicity, but they are very different words.

  • Simple (vs complex) - from "sim plex", literally: one-fold (i.e. not braided)

  • Easy (vs hard) - from "lying at, lie near"; familiar, near to our understanding

Rich Hickey goes more into details about this in his presentation. If you haven't already, check it out (I don't agree with everything he said, but it's a good presentation, definitely worth watching).

Most often, achieving simplicity is the hardest thing to do in software development and usually it requires an enormous experience.

Simplicity is probably the most important aspect of software development. As Edsger Dijkstra put it, "Simplicity is prerequisite for reliability".

If your design is not simple, the whole thing will eventually become fragile, unreliable and starting to fall apart.

Unfortunately, complexity sells much better and when you combine that with cargo-cult programming and resume driven development, you get the modern web development mess.

The same goes for modern system administration (or devops, if you will) - if you've been working with UNIX long enough, all you need to do is take a look at Kubernetes mess.

I created as a simple, wiki-like place, focused mostly on addressing those issues, avoiding complexity traps and as a quick way to find&explore the better/saner alternatives. There's still lot of work to do, but it's getting better. If you like the idea, follow me on or here for the updates.

Discussion (2)

sirseanofloxley profile image
Sean Allin Newell

Would be interested in more of your thoughts on "kubernetes mess".

devsimplicity profile image
DS: Simple, Not Easy Author • Edited on

Sure, I need to create a page about it, but I'll add just a few quick thoughts here.

I've been using linux/bsd on all my desktops and servers since early 00's. I like being "close to the metal" and having the full control over things; I get that I'm not the target audience for k8s.

What I don't like is all this propaganda about k8s being a "magic bullet". I wish younger people would, instead of spending enormous amount of time on k8s (which may tomorrow collapse under its complexity), rather spend some of that time on learning more about the OS itself and UNIX way of doing things. There's a good chance that they'll realize that they already have everything they need, rock-solid and battle-tested for a very long time. Even if, after that, still decide on k8s, they'll have much better understanding how things work underneath and what are the trade-offs.

I'll write more about this soon.