I’ve started this little series of posts about things that I remind myself frequently enough to make into my screensaver.
For each of these items, there’s a story and some thoughts that pop into my head when I see them, and I wanted to share them with you.
Here are the screensavers that I’m flicking through each day.
- Kindness is better
- Complex == Bad. Simple == Good - This post
- What would Jesus do?
- (DO(SOMETHING(SMALL(USEFUL(NOW())))))
- Turn up the good
Many years ago I worked for a big ~~ soul-crushing ~~ insurance company and we started their first-ever agile team. I thought I was the coolest cat in town. At one of the big open landscapes, I passed a man, Johan, that had a poster on his cubicle. It said:
Simple = Good Complex = Bad
And I just laughed out loud. I mean; Yeah, sure! Who wouldn’t sign off on that?
I moved on and didn’t think about it more. Until later, often, and frequently. And deep.
This is another of these very simple statements that acts like a guiding star and can actually help me in everyday decisions, and even in the large.
Complex vs Complicated
Let’s get a few definitions out of the way:
Complicated - consisting of parts intricately combined
Meaning that many small independent simple parts can make up a complicated system of things. It might not be simple, but ultimately knowable. How a car is built, or the source code for an application, for example.
Complicated - hard to separate, analyze, or solve
Complex is also made up of interrelated things, but for complex things, there’s an element of things that we cannot know unpredictable things. How humans react to a decision, how nature evolves over time etc.
I think the difference is best described in the Cynefin framework:
The complicated domain consists of the “known unknowns”. The complex domain represents the “unknown unknowns”
Some examples
Here is a list of some domains that I use the lesson in. Also, I have already written about this before if you want to go deeper.
Application structure
When building applications you very often end up with several different ways of implementing things. They all work and all have merits. This is why software development is interesting, I think.
But it makes it hard to choose. And what I’ve found is that more often than not, the simplest possible solution that can work actually is not only good enough but also last longer. Simple == Good. Complex == Bad
.
Microservices is an example of where this thinking leads to a good spot until it doesn’t. Because making a simple little service is easy. Service 2 - 20 is also easy, but then you started to create something very complicated and entangled, and unless you look out you have a complex system that is impossible to wrap your head around. (For example by having each service separately deployable and holding its own data, but that’s another blog post.)
XP and Agile
Interestingly enough the simplest thing that could possibly work
was a phrase thrown around in the project that created eXtreme Programming and has stuck in the agile community at large. Why? Because Simple == Good. Complex == Bad
.
I’ve spent 5 years designing education, and writing lectures and labs. Which involves rewrites of just about everything, many times. Because it turns out that not all people view the world as I did when I wrote the slides.
In these iterations, I’ve often cursed myself for making the first version of the lab or lecture too large or encompassing too many topics. This is not a good way to learn. Bite-sized chunks of learning that you can put together in your mind are much better.
Also, that is the way that we ended up designing the SALT bootcamps - making each day independent from other things. Making each week independent from other weeks.
When we have succeeded with this it’s easy to move things around and shift one day for another. When that is hard we have made something complex that has ties to many other things.
Simple == Good. Complex == Bad
.
Concluding thoughts
Aha - apparently the last section in the series will always be a personal reflection. Ok, then - let’s do this.
I have made some “stupid” decisions in my career, just because it would give me a simpler life. I have several times, taken a lower salary (or an hourly rate) to get a better, simpler situation for my personal life.
I have many times done the opposite when it comes to my private life, taking on too much, being part of several groups simultaneously, or trying to please many wills at once.
The simple answer (see what I did there…) is that created a complex situation, where a simple or even complicated one would have been better. I forgot that Simple == Good. Complex == Bad
.
Here’s the background image I use as my screensaver.