DEV Community

DS: Simple, Not Easy
DS: Simple, Not Easy

Posted on • Updated on • Originally published at

Simple, Not Easy: Introduction

"Simple, Not Easy" is a new, in-progress series of e-books (and wiki/blog topics) focused on the problems of drastically increasing complexity in the modern software development. Instead of trying to solve the problems of too many failing, complex and costly abstractions by adding even more complexity and bloat, let's try to move into the opposite direction.

A little background: I've been working on software development for over two decades - with various tech stacks at different levels and positions (development, system administration, architecture; small companies, big companies, my own projects). I've seen technologies come and go and too many times experienced the horrors of working on the software written by resume driven development and cargo cult programming followers.

Production software at most places today is often a huge, experimental ball of mud with ever increasing tower of duct-tape fixes upon duct-tape fixes.

To try to understand the problem, we need to dig a bit deeper into the underlying issues.

Snake-oil marketing

Two first comments in this HN thread: Will Kubernetes Collapse Under the Weight of Its Complexity? sums this issue well:

This whole image, to me, represents a big problem with software engineering today:
The industry is full of engineers who are experts in weirdly named "technologies" (which are really just products and libraries) but have no idea how the actual technologies (e.g. TCP/IP, file systems, memory hierarchy etc.) work. I don't know what to think when I meet engineers who know how to setup an ELB on AWS but don't quite understand what a socket is...

The overemphasis on products is a real problem because it makes the industry so susceptible to marketing snake-oil.
Who would trust a doctor who proclaims his expertise in terms of brand names: "I've got ten years of experience in Cipro and Amoxil. Lately I've been prescribing Zithromax too! It's exciting to write that big Z. I really like Pfizer's community, their Slack is so helpful."

Unfortunately, it's incredibly easy to sell the snake oil in our industry today and popular tech blogs are incredibly successful in that.

Short vs. long term thinking

Another aspect of the problem is the short vs long term thinking. Our industry is obsessed with getting results as quickly as possible, no matter what are the long term costs. Designing things that will survive the test of the time is not easy, it takes a lot of time and effort.

Simple vs. easy

This is directly related to the another important concept: easy vs simple thinking. People often conflate this two words, but they are very different. Complex means intertwined, braided together, the opposite of simple. A lot of things in software development these days are easy to start with, but later (when that buried complexity rears its ugly head) turn into painful and costly mess.

These problems are nothing new, but it's becoming much, much worse.

Our whole society is obsessed with making everything bigger and more complex. It's not surprising that this is also reflecting on the software development. The purpose of this series of topics is also to inspire you to try to approach things in a different way. To quote the great Ernst F. Schumacher:

"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius — and a lot of courage to move in the opposite direction."

Topic List >.

Discussion (2)

pavelee profile image

Love that! I am so exhausted by overdesign in software development. There is significant lack of self-though decision, "why this stack?", "is it really necessary?", "Could we do that simpler way?"

Somehow using "cool" stack overcome reasonable decision.

If we assume 20% of features is 80% of customer value, how much faster and simpler (more eco-friendly?) we could do if we could focus on a researching what customer really need.

Your evangelism about simplicity is so important to cure the industry, thank you!

devsimplicity profile image
DS: Simple, Not Easy Author

Thank you for your kind words.

I think the biggest part of the problem is that complexity sells extremely well - i.e. if you make the solution as complicated and as fragile you can, you're generating yourself a lot of future (billable) work.

On the other hand, if you go in the other direction - to really help someone by making things simple and reliable, it's likely that you'll remove yourself out of the picture.

To put another Dijkstra's quote:
"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."