Overcoming Chaos and Complexity
Last year, I posted an article about our team’s #noestimate approach to sprint planning. Given the healthy discussion that followed I wanted to share more context on our approach and why I think it worked.
We chose not to implement estimation ceremonies as a part of our process. We discussed new features and priorities at every stand up.
In the article, I stated that our team “innately knew” how much work they were capable of. We could easily assess new features and the effort needed to deliver them. We chose not to implement estimation ceremonies as a part of our process. Instead, we cultivated an ongoing dialogue about user and product needs. We discussed new features and priorities at every stand up.
The team’s focus was interactions and individuals over processes and tools.
Several readers commented that innately knowing is, in fact, a form of estimating: reference class forecasting. Reference Class Forecasting is predicting the future by looking at similar past situations and their outcomes. By that definition, we were technically estimating.
Regardless of how our approach is classified, the team’s focus was interactions and individuals over processes and tools.
Netflix promotes a culture of freedom and responsibility over process adherence. Something we tried to model.
Netflix describes a similar approach to handling complexity. A company’s operational complexity increases as it grows in size. Therefore, Netflix promotes a culture of freedom and responsibility over process adherence. Something we tried to model.
Our approach empowered the team to understand, react to, and communicate through complexity. I’m not sure we would have achieved those abilities through mechanical estimation rituals.
For anyone considering a #noestimates approach, here three tangible practices that might help with the transition:
1. Give your team up to 3 sprints to establish cadence and trust.
This is especially true if you are new to agile or are assembling a new team. It takes time to form trust and confidence within a team. Our “trial” sprints took the pressure off the team. They also allowed the team to focus on developing relationships with each other.
2. Discuss priorities for upcoming sprints during every stand up — even if it causes a stand up to run long.
For us, this eliminated the need for a separate meeting to plan our next sprint. We were planning our next sprint in real time with context. We met, when needed, to vet out requests where a preceding body of work was not available for reference. Examples included new integrations, new logic concepts, etc.
3. Co-locate your team, including representation from every functional area represented in the project.
Much of our success was due to co-location. Our entire team (including business stakeholders) was co-located. Co-location allowed natural conversations and learning to occur, minimizing demand for meetings. Cross functional leveling could also occur in real time.
The #noestimates conversation is not about whether estimates are needed, relevant, useful, etc. It is the reflection of a team’s philosophy for dealing with complexity and chaos.
That said: #noestimates