Invest in people skills or forget about effective development teams
November 7, 2019Roles Definition Framework for Agile Organizations
December 12, 2019Cognitive tunnelling is a very useful phenomenon of our brains that helps us to focus on a single, most important task. It allows us to filter out stimuli like visual objects, sounds, smells, etc. that would distract our attention. Unfortunately, this brain phenomena has some drawbacks too: it may lead a pilot to crash a plane or.. a software project to fail terribly.
Cognitive tunneling
One of the most well known examples of cognitive tunneling that lead to a tragedy happened in 2009 – Air France plane with 228 passengers onboard crashed into the ocean. After the investigation, it turned out that the aircraft speed sensor was frozen and was giving a faulty readings. The pilot was fixated about compensating flight parameters and hasn’t noticed that he lifted the nose of the aircraft so rapidly that the plane stalled and started falling from the height of 8 km into the ocean. Even though, he still had a chance to recover the aircraft during the 3.5 minute fall, the pilot was unable to determine what was going on until the very end.
Sometimes our focused attention can make us blind, even to obvious signals and objects in our sight.
Cognitive tunneling (a.k.a. inattentional blindness) happens to all of us and enables without us noticing it. Usually, when we are under pressure, overwhelmed with information and trying to make a decision. We all experienced it: burning a turkey in the oven while you try to complete the side dish and the hungry guests are already waiting, not noticing a door ring while reading an interesting book or bumping into a car in front of you because you were thinking how to bypass the traffic.
Hyper focused organisations
Inattentional blindness is quite common in software development too. Programmers working on a complicated coding challenge sometimes become so focused on solving the problem and implementation details that they can spend long hours writing, debugging, polishing and refactoring the code without noticing the world around them. Don’t get me wrong – creating an environment where employees can focus and be productive is very important.
What I find particularly destructive is a work environment which causes “tunnel vision” like behaviors. Such organisations focus on execution and forget what goals they are pursuing by building their products. Tunnel vision in software project can lead to:
- gold plating (a.k.a. scope creep) – working on features that are not needed at a given time just because it was in the backlog or someone was on a coding spree. Team fails to work on top priority tasks which results in project schedule day-by-day slips.
- losing customer perspective – creating features simply by solving the technical challenge, without thinking about how a user will interact with the software. If we take the user out of the picture, it will create a risk of implementing a poor user experience. We might also miss an opportunity of innovation which happens when we link together business need and technical expertise.
- doing something that has already been done
- not implementing full Acceptance Criteria
- etc.
If you won’t realize on time that you are marching down the cognitive tunnel, you may miss the business opportunity or end up with a Frankenstein product – some features are over complicated, while some must-have functionalities are still missing. Such products are lacking integrity and usually have poor user experience. It all leads to low customer satisfaction and poor adoption of the product.
How to escape from a cognitive tunneling trap?
There are, however, a few techniques that enable a wider view among the team as well as proven ways of escaping the cognitive tunnel.
Before you start coding, it is necessary to build a common understanding of the business problems that our software is aiming:
- Design thinking workshops and prototyping – understand the business need to build the right product
- MVP (Minimum Viable Product) – focus your attention only on top priority functionalities and reduce the amount of distractions.
- User story mapping – This keeps technical tasks linked with customer need and prevents losing the business goal.
- Planning Poker – the Team estimates the tasks in the backlog collaboratively which enables discussion and multiple views on a problem.
- ScrumTale simulation game workshop – a magnifying glass to spotlight all the typical problems of a Software Development team. Working them out in a safe environment will help you to build an efficient team that will be able to detect tunnel vision syndromes faster.
Techniques that I find particularly useful when the team already started development:
- Pair programming – Extreme Programming technique in which two developers are creating code on a single workstation. This helps a developer to notice the context of the tasks.
- Rubber Duck debugging – Similar as above, however you are using a rubber duck (or other item) to describe out loud what the code does.
- Daily Stand-ups – one of the Scrum rituals that forces the developers to leave their caves and share update on what they are up to. Discussing ongoing problems that we are trying to solve is a great way to get some new insights if you are in a cognitive lock-down.
- Sprint Review (a.k.a. Demo) – another Scrum ritual which is aimed to demonstrate some new features of the working software. It is a great opportunity for the business side of the project to realise that they are blind to some aspects.
- Team social space – Table football, gaming consoles or a coffee machine corner is a great place where people come to change the context and share their frustrations. I’ve seen multiple examples where it led to opening a new horizon of ideas.
Do you know of any other examples of inattentional blindness in software development? Happy to hear about it and your methods for preventing and escaping cognitive tunnel vision!