I have a problem with making decisions - it’s very easy to focus purely on the positive values and avoid critically evaluating the negatives. This is relevant in all walks of life, but manifests daily at work, writing software.
Both myself and my team have started using this ‘three-column’ way of evaluating courses of action.
For a given action, call it X:
Improve | No Change | Worsen |
---|---|---|
What will improve if we do X? | What won’t change if we do X? | What will get worse if we do X? |
The most valuable thing is that the third column is almost never empty - if it is, then we probably need to sit and think about it a bit more.
Two examples
1 - Our team is considering adopting a different service for automated incident management. Below is a rough cut of the points we made and which informed our next steps.
Improve | No Change | Worsen |
---|---|---|
On-call experience - a more feature-rich platform will enable our developers to have better control and analytics over the state of our alerting | Alert quality - a new service won’t change how we are writing our checks and monitoring | Cost (£££) - the pricing model will change and take a larger amount of our budget |
Extensibility - a platform with multiple integrations enables us to experiment with new implementations of observability tooling | Training - a new system will take time to get used to and for our developers to fully get to grips with | |
SLAs - a service with SLA guarantees for e.g. message delivery will improve operational stability of our alerting infrastructure | Control - a managed service is a balance, trading control over the system for reduced operational overhead |
2 - Earlier this year we were doing a piece of work for another team that inflated in scope as the story progressed. We didn’t use this framework as preparation for the story and this could have saved us precious time by extracting the exact problem we were trying to solve and realising this was not aligned with expectations.
Value in the act and the output
Even if the choice is a “foregone conclusion”, compelling ourselves to articulate these points engages our own understanding of the problems that we are facing.
In particular, if we can’t explain the problem, then the solution probably isn’t the right one.