High Performance Teams and the Three Strands of Value
Teams don't actually deliver value. They increase their customers' capability to generate value. And the key to increasing this capability is not churning out features. It is learning about the problems the customers are trying to solve, and about the best ways to solve these problems.
Techniques like Scrum do place a strong emphasis on delivering customer value. But paradoxically, high performing teams do not focus all their efforts on delivering customer value. Even though Lean is all about eliminating waste, the need for "slack", or free time, is well known to Kanban practitioners.
But how do well-tuned teams use this slack? How do they ensure that any extra time doesn't get absorbed by low-value day-to-day activities? And how can teams justify this deliberate downtime to managers who still seem to see a team full of "under-utilised resources"?
Three Strands of Value
One way is to think of your team's activities is as Three Strands of Value. Each iteration, you need to be simultaneously increasing capability in three different areas:
- Customer capability,
- Team capability, and
- Individual capability
Customer capability
Your job is to increase your customer's capability to do something useful. So you need to deliver regular somethings that makes your customer happy. And these somethings need to have some demonstrable business value. But it's not only about getting a quicker ROI on your development efforts. We also do this helps keep the customer engaged. Customer engagement is essential to building the mutual trust, empathy and shared understanding that high performance teams need.
Team capability
Team capability is about making sure your team, as a whole, is able to understand and deliver changes and new features quickly. This varies over time. It increases as the team becomes more familiar with the customer needs. But at the same time it decreases as the code base becomes larger and more unwieldy.
BDD workshop techniques like Example Mapping and Feature Mapping give you structured ways to discover what you don't know. Practicing these techniques is an example of a way you can increase your team capability to understand customer needs.
Software projects, like most other things, are also subject to entropy. If you don't spend time making sure your code base stays clean, it will take longer and longer to deliver new features as the project grows. Paying down technical debt is another way to increase the team's capability to deliver faster.
Individual capability
Team capability is built on individual skills and capabilities, and these need to be practiced and honed to help the team deliver value sooner. Learning new things is also a great way to keep individual team members engaged.
Individual capability activities can be simply reading up on a new technology or approach, listening to pod-casts, running brown-bag sessions, or participating in coding and requirements dojos.
Keep the strands alive
Understanding the benefits of continuous improvement is one thing, but putting it into practice in a hectic, real-world project can be quite another.
But it is important not to neglect any of the three strands. If you fail to continuously improve your team's delivery capabilities, you won't be able to deliver customer value fast enough. And if you don't pay attention to individual capabilities, your overall team capability will fall.
Fortunately, there are many strategies that can help keep the three strands alive. These include:
- Putting swim-lanes on your board for different types of activities, or using different coloured cards;
- Reserve a regular time to watch training videos as a team, rather than expecting individuals to watch them in their own time;
- Scheduling weekly coding dojos (for developers) and requirements dojos. Requirements Dojos are sessions where the team practices 3-amigos techniques such as example mapping and feature mapping.
Software delivery is not factory work. It is a blend of craft, collaboration, creativity and knowledge work. Elite teams in any field spend a lot of time practicing their craft. Software development should be no different.