If we were a perfect team, we would:
- Predict with 100% certainty what we can deliver, so that we can keep our commitments to our customers.
- Always prioritize the most important things to build, so that we maximize the value we create.
- Feel proud of what we build, so that we find the work we do rewarding.
- Ensure that everyone on the team has visibility into what we are working on, so that they can provide input and share with other stakeholders.
However, we are not a perfect team. We don’t always make deadlines. We repeatedly pushed out the release date to accommodate unforeseen issues for our last product. In the process, we burnt precious goodwill and the enormous amount of stress took a toll on the team. And when we trimmed our sails to go faster by trading quality for quantity on the product, we almost reached the point where it wasn’t good enough to launch.
We need a system that enables us to find the smallest increment of time where we can be perfect. And then, learn how we can make that period last longer.
A system to build better teams
A system that builds better team has the following traits:
- Increase the number of feedback loops. Course correcting what we are prioritizing and how we are working together enables us to tackle inefficiencies faster.
- Have a clear start/stop. When there are boundaries on what work needs to be done, the reward for completing work earlier is not more work. Instead, time back is breathing room to explore the highest leverage opportunities, not just the most urgent ones. In some cases, the most important thing to do could be to just recharge.
- Build a cadence. Think of it as a crew rowing a boat. One person rowing faster than others doesn’t move the boat faster, it slows down the team. When there is a rhythm on which the product is built, it’s easy to build momentum around planning and celebrating success.
- Measure how we build things. Without tracking progress, it’s hard to know whether we are steering towards the right direction and how fast we are moving towards becoming a better organization.
Tools to make it happen
Thinking of a sprint as a discrete period of time to get things done. In our system the sprint has four objectives, predictability, prioritization accuracy, team happiness, and visibility.
Predictability in delivering on commitments
- Tasks are well defined
- Product and technical planning has been completed ahead of the sprint
- Buffer has been added to account for unknowns
Progress is measured by how well we were able to stick to the list of planned tasks and how many of those tasks we were able to plan before the start of the sprint.
Notably, we are not tracking is what percentage of planned work was done because that’s a derived number. Tracking that doesn’t give us any signal on what areas to fix.
- Critical set of what needs to be done has been validated
- External commitments are common knowledge across the team
- Ad hoc work is minimized, so that instead of taking on configuration or user feedback as one offs, it’s part of the plan
Progress is measured by tracking how much more scope needed to be added to hit the critical set, how much high priority feedback needed to be addressed post launch, and how much time we ended up spending on one off migrations.
- There is a shared source of truth that everyone can reference to see what is being worked on and it’s current status
- Tasks are small enough that progress can be understood by someone other than the person working on the task.
Progress is measured by tracking how long it takes to complete tasks, large tasks are opaque. We also track how easy it is for people to make sense of someone else’s progress, overly granular tasks are noise.
- Task execution requires leveling up on skills
- There is visibility into why the problem being solved matters
- There is autonomy in how the task should be completed
Progress is measured by qualitative feedback in retros and by asking people how proud they are are of the work they did.