You can keep reading here or jump to my blog to get the full experience, including the wonderful pink, blue and white palette.
Have you considered changing the one function being invoked instead of all the callers?
I could not believe I missed such a simple solution. But they were right, I could have changed one line instead of multiple files. One thing for sure, this ended up being one of the most influentials Pull Request I've been involved in.
I believe what shocked me was not being proven wrong. In fact, that's the exact reason why I appreciate code reviews. My surprise came from the fact that I clearly employed a complex solution while the simple one was right in front of my eyes. Still, I missed it.
I'm not particularly smart, thus I invest a lot into honing processes to be at the top of my game. This is why I could not accept the idea of being blindfolded. And who knows how many other times I made the same mistake.
I wanted to understand what happened to prevent it in the future. There's already enough complexity in software. As a professional, I want to solve the essential complexity, not introduce accidental complexity.
It took me quite some time to find an answer. I queried people all over the place. I was sure I was dealing with a bias but most folks mentioned the Confirmation Bias. However, its definition didn't satisfy me:
Confirmation bias is the tendency to search for, interpret, favor, and recall information that confirms or supports one's prior personal beliefs or values
It took me several weeks, then I stumbled upon the following sentence:
The Einstellung (set) effect occurs when the first idea that comes to mind, triggered by familiar features of a problem, prevents a better solution being found.
That. Was. It. I still remember reading the paper nodding the entire time.
Indeed what I had experienced was a bias. Unfortunately, as any other bias, it has its place. We probably do not want to be looking for the optimal solution at the supermarket for every item on the shopping list. However, there are situations where we need to get it right, not just good enough.
The number one trick I found to beat Einstellung is to talk to somebody else, a person with a different background and problem solving approach. If possible, it would be best not to bias them with our own solutions: individually solve the problem and only then discuss pros and cons. Not that it was needed, but here's another reason to support diversity.
Trying to outsmart biases by oneselves is probably not a great strategy: they grow smarter as we do. But should the need arise here's a couple of other tricks to mitigate Einstellung: always devise multiple solutions and confront them. Most importantly, ask yourself "why is this solution a bad one?" then answer with as many reasons as possible.
Get the latest content via email from me personally. Reply with your thoughts. Let's learn from each other. Subscribe to my PinkLetter!
Top comments (2)
Good article.
That's why diversity in teams is so important. Nowadays, when I do interviews, IT wants me to answer like they want me to answer. The problem is, if everybody think the same way in the team, the collective intelligence won't be very high.
With different people (with different culture, background, gender, and whatnot), the collective intelligence will be way higher.
It's not only for this specific bias. It's for all of them, and there are many.
Thanks Matthieu! I totally agree.
It's always inspiring for me to work with folks with a diverse background. Especially, because of the additional work they had to put in. Unlike me who just followed the computer engineering path without many obstacles on the way.
I believe we also need to get better at embracing diversity with inclusion. I have written a few things on the blog about it. I'd be interested to know what are your thoughts if you end up reading anything!
Here are the links to the Essential Skills category or the Team Work tag.