Analysis Paralysis is a methodological anti-pattern comprising a situation that occurs when a decision must be made as to how to proceed, but is not made due to a variety of factors, thus "paralyzing" the project.
Decisions which are complex or large in scope can be seen as "too important" to get wrong, and thus (in the mind of the decider) no choice can be made until every last possibility is researched, analyzed, and valued. What this results in is a project that never gets done.
The Rundown
- Name: Analysis Paralysis
- Summary: A project is stalled because an important decision must be made to proceed, but that decision is very difficult to make, and so the project languishes.
- Type: Methodological
- Common?: Uhhh, I dunno... Give me a minute to figure it out...
A Brief History
The term "analysis paralysis" is relatively new, first appearing in that order in the 1970s; but the idea behind the term is much older, going as far back as Aesop's Fables. A story in the Fables tells us about a fox and a cat, and when hounds are approaching to eat them, the fox boasts of knowing a hundred ways to escape hounds, while the cat says he knows only one. Guess which one gets eaten?
This is one of many "software" anti-patterns that aren't really about software at all; rather, they are about us humans and our foibles. Analysis paralysis arises from our collective aversion to making poor choices, and a desire to know what each path will take.
This is not a software or programming concept, it is a human one, and as such it needs a human solution.
Tell Me a Story!
I have three kids ages 8 and under (at time of writing) and one of them, the oldest boy B, has a bit of a problem. Whenever we go out (to eat dinner, to get ice cream, even to rent a movie), B spends agonizing minutes flip-flopping over which flavor is better, which drink he really wants, which film he wants to see more.
I finally decided to ask him why it's so difficult for him to make a decision like this, and he told me:
"I want to pick one, but part of my brain is telling me, 'But what if I'd like the other one better?'"
Poor B often finds himself stuck in analysis paralysis. To him, being a child, the choices presented are often vast, daunting, maybe even a bit scary. It is entirely possible that he would like the other choice better, but he cannot know that until he makes a decision.
It is exactly the same with grown-up, real-world analysis paralysis: sometimes, you cannot know if you'd like a different choice better until you've made a choice.
When Does This Happen?
In my experience, analysis paralysis occurs due to two related situations:
- Where there is not enough data or conflicting data as to which solution is the correct choice OR
- The person in charge of the decision does not have the necessary experience with any of the proposed solutions to make an informed decision.
I will argue that the first scenario is much less common than the second; it is far more likely that the person needing to make a decision cannot easily do so.
Strategies to Solve
First, we need to find out if analysis paralysis is really the root cause. We can check to see if we've gotten enough data about our potential solutions, or with our business or employer to see if they favor one of the solutions.
If we do this and still have no clear winner, then the answer is simple: just flip a coin!
The real trick to solving analysis paralysis is to be able to react to change.If we can pick a solution on nothing more than intuition, but change that solution if it becomes apparent that it is wrong, we can eliminate analysis paralysis every time. This solution is why this anti-pattern is often associated with the Waterfall methodology, because in Waterfall, you cannot react to change later in the process. "Modern" software development processes like Agile tend to mitigate analysis paralysis, because by their nature they force teams to react to change.
If you can admit the selected solution was not optimal, and can change what you use later, then you will never have analysis paralysis.
Summary
Analysis Paralysis happens when a decision that needs to be made in order for a project to progress is difficult, or impossible, to make given current data.
It is not a software anti-pattern, rather, it is a human anti-pattern. Therefore it requires a human solution: figure out if you're truly in analysis paralysis, and if you are, just pick a solution! At random, or however you like.
Did I miss a story or real-world analogue for this anti-pattern? Do you have a better definition of what Analysis Paralysis is, or how it can affect projects? Let me know in the comments! Or else head on back to the series index page to see some more anti-patterns.
Happy Coding!