Recently, I was invited for a podcast interview by my brilliant colleague João Rosa. It was my first podcast interview (yes I was excited and nervous), and it has been keeping my mind busy ever since I received that calendar invite. The idea was that we would discuss a heuristic and see where we’d end up after 30 minutes. The heuristic for my interview was ‘If something is too complex to understand, it must be wrong.’
My first reaction was “Yes! That’s actually a heuristic I regularly use myself; what a coincidence!”. As hours and days went by, I started to notice that something was changing in my convictions. After some careful consideration and hours of contemplating, I can now say that my expert opinion regarding this heuristic is: “It depends”. (Ha! Surprising answer for a consultant, right?)
Are you able to explain this within 10 seconds?
The heuristic was reformulated to be more generally applicable:
“As far as I’m concerned, if something is so complicated that you can’t explain it in 10 seconds, then it’s probably not worth knowing anyway.”
The motivation behind this heuristic is that you will not allow things that you don’t understand to survive. The principle could be used to attack parts of the code base that are no-go areas or considered dangerous to change based on no apparent good reasons. The principle can also be applied to processed and rules in organisations to help them change.
Tl;dr: kill what you cannot understand.
Now, upon further inspection, this might seem a little too black and white in my humble opinion. I do agree that if you understand something properly, it will be easier to explain it within 10 seconds. However, the question is how did you get to that understanding? How much effort is acceptable to get there? When do you decide something is too complex? And therefore wrong?
To get the context right, I’d like to tell you something about a man named Valentino Braitenberg.
Downhill invention, uphill analysis
In an organisational psychology course that I took during my study, I heard this great story that popped up in my head when I was thinking about this heuristic (thank you availability heuristic!).
Once upon a time (1984 to be specific), Valentino Braitenberg published Vehicles: Experiments in Synthetic Psychology. He was a neuroscientist that was popular amongst psychologists and robotics (now that’s my kind of guy), and experimented with pretty simple robots (in terms of internal structure) that could show surprisingly complex behavior. The conclusion of his experiments: synthesis is always easier than analysis.
In other words: creating something from scratch that acts complex is easier than analysing what looks like a complex system.*
That’s because “it is much more difficult to try to guess internal structure just from the observation of behavior than it is to create the structure that gives the behavior.” So it’s easier to build something up from scratch than it is to come to an existing working complex system and try to figure it out.
*This does not mean you have a carte-blanche to not refactor and start new projects each and every time, by the way.
It’s really about mental models
When you build something from scratch you get to build up your mental model bit by bit, feeling in control and understanding the whole thing. It might be(come) very complex, but it makes sense and it’s ‘correct’ in your perspective. If you are dragged into a complex working system, you have to build up the mental model based on what you see.
Imagine you get to a legacy system and you’re supposed to figure it out. How else would you be able to work on it? That means you have to uncover all the mental models that built up to this system. Next to that, you need to connect them and figure out why certain decisions were made.
And then, when I was listening to a talk by Jessica Kerr, I learned about a very wise thing that David Woods said: “Every sufficiently complex system, everyone’s mental model is incomplete and out of date, in different ways.” Like this wasn’t complex enough already! (See what I did there? ;-) )
If we are not aware of all these mental models that built up the complex system, we are missing information, context and insights that we do need to complete the mental model and make judgements about it.
The final verdict
Like most things, it’s not black and white. I do agree that when you really understand something, it’s easier to explain it within 10 seconds. I don’t agree that when something is really difficult to understand and explain because it’s complex, it must be wrong. Let alone not worth knowing anyway.
Deciding that something is too complex to understand and therefore wrong is a very useful coping mechanism though. I’ve been there; spending ages trying to figure something out and ending up completely frustrated shouting that “this doesn’t make sense anyway! Who made this?!”.
Coming to that conclusion does solve some cognitive dissonance for me, but it doesn’t (necessarily) tells me anything about right or wrong.
So if something is (too) complex to understand, it might very well be that that ‘something’ is a collection of so many mental models that you just need a great amount of time to grasp it. Once you get that point you can form a judgement about whether or not it’s suboptimal.
So, right or wrong?
There are a few questions we need to ask when making judgements about complexity and something being ‘right’ or ‘wrong’:
- Can I uncover and connect all mental models involved in this ‘complex thing’?
- How much time would it take me to figure this ‘complex thing’ out and build up the mental model?
- Is it worth it to put in that time and effort?
- Will this ‘complex thing’ change while I’m figuring it out?
- Who do I need to help me figuring it out?
Once you built up the mental model, get the context right and understand it, you might or might not be able to explain it within 10 seconds. And then we can get to fun part of making judgements about whether it’s ‘right’ or ‘wrong’.
In my humble opinion, the most important heuristic to keep in mind here is this:
‘Uncover the complete and accurate mental model
before judging about right and wrong’.
If you would like to hear my conversation with João about this, you can find the podcast here.
We empower companies to deliver reliable & high-quality software. Any questions? We are here to help! www.qxperts.io