Pre-Mortems: Imagining Failure to Ensure Success
Pretend your project failed. Don't cry, this is just an exercise.
Everyone's heard of post-mortems in the tech world.
Teams gather after a project or sprint to dissect what went wrong, where improvements can be made, and how to avoid similar issues in the future. While this is valuable, there's an equally powerful tool that is often overlooked: the pre-mortem.
What is a Pre-Mortem?
A pre-mortem is all about spotting problems before they become problems. The idea is to ask the question "What could go wrong?".
This anticipatory exercise helps identify potential risks, weak points in the plan, and areas where the project might fail — all before the work starts.
By addressing these risks proactively, you can be prepared for some issues should they arise, and you can prevent others entirely.
This can reduce bugs, avoid regressions, improve development speed, and reduce the time it takes to fix issues. It's about preparing for failure so that it doesn't happen.
Why Should You Bother with a Pre-Mortem?
Identifying Hidden Risks
Teams often overlook potential problems when they're in the midst of planning. A pre-mortem forces the team to step back and think critically about the project.
This can help uncover risks related to code quality, external dependencies, stakeholder expectations, or timing issues that might not have been identified otherwise.
Faster Resolution of Issues
By thinking ahead about potential failures, teams can preemptively build in safeguards or backups.
This might mean setting aside time for testing more thoroughly, automating certain processes, or building in time for handling unexpected delays. If something does go wrong, the team is better equipped to fix it quickly.
Reduced Bugs and Regressions
One of the most frustrating parts of software development is dealing with bugs and regressions.
By using pre-mortems to anticipate where code could fail, teams can plan more effective testing strategies, implement better error handling, and reduce the likelihood of bugs slipping through.
Improved Development Speed
When risks are mitigated early, the development process becomes smoother. Teams can work with fewer interruptions, avoiding the "firefighting" mode that occurs when unexpected issues arise. This helps improve overall velocity.
Better Communication and Alignment
A pre-mortem brings the team together to discuss potential challenges openly. This fosters better communication and ensures everyone is on the same page about risks, priorities, and expectations. The clarity gained from this exercise can reduce misunderstandings down the line.
Pre-Mortem Practices in Other Industries
Pre-mortems aren't unique to software development. Several industries already use this kind of forward-thinking planning to avoid costly mistakes.
-
Aviation Industry Pilots and engineers in aviation simulate potential problems before flights. They go through scenarios such as engine failure or bad weather and plan how they would respond to these events. This practice dramatically increases safety and ensures pilots are prepared for the worst-case scenario.
-
Healthcare Surgeons often perform simulations or discuss potential complications before a complex surgery. By thinking through possible issues like unexpected bleeding or anesthesia reactions, the team can be ready to act swiftly, reducing the likelihood of mistakes.
-
Military The military has long used war games and simulations to anticipate enemy movements and other potential threats. These pre-planning exercises help commanders prepare for a wide range of contingencies, ensuring that they aren't caught off-guard when an actual conflict arises.
-
Construction Construction managers regularly conduct pre-construction risk assessments. They identify potential challenges, such as supply chain delays, unexpected weather, or engineering miscalculations. By anticipating these issues, they can keep projects on time and within budget.
How to Run a Pre-Mortem
Want to try a pre-mortem with your team? Here's a simple way to run one:
-
Set the Stage Begin by explaining the concept to the team. Let them know that the goal is to think about potential failures—not to criticize anyone's work.
-
Envision Failure Pretend the project has either failed, or has been completed late due to issues. Ask each team member to write down all the reasons why this could have happened.
-
Collect and Categorize Risks Once everyone has shared their thoughts, group the risks into categories: technical, process-related, external factors, etc.
-
Prioritize and Plan Prioritize the risks based on their likelihood and potential impact. Then, create action plans to address the most significant risks. This might involve adding more time for testing, increasing communication with stakeholders, or conducting additional code reviews.
Wrapping it up
While post-mortems offer valuable insights after a project's completion, pre-mortems provide the proactive foresight needed to prevent problems from occurring in the first place.
By simulating potential failures early on, teams can address risks, reduce bugs, and improve development speed. As other industries have demonstrated, planning for failure is one of the best ways to ensure success.
Implementing pre-mortems in your development cycle can drastically improve team efficiency and project outcomes.