How to Reach Long Term Productivity in an Agile Team
An important aspect of Agile software development is prioritization and delivery of those priorities. I've met teams which did a good job at keeping priorities and teams which did not.
Choosing to have bottle necks, single points of execution (one person working on one thing) or even silos (area of competence kept within a small group of people), will significantly slow a team's progress in a matter of months.
What can we do to avoid these problems?
Here's my short list:
1. No team member without back-up
This might seems pretty obvious. There are many teams which suffer from not implementing this. Having back-ups increases the team's bus factor from 1 to 2.
2. Team estimations
There are a lot of benefits from adopting team estimates. Eliminating single points of execution is one of them. This makes the team more productive overall as more team members become familiar with topics and can give multiple perspectives.
3. Shared code base
This approach comes from XP. It essentially consists of two guidelines:
We work and help each other as a team
Anyone is allowed to work anywhere in the code base (including technologies) to get stuff done
This will be easy to achieve if the team implements good coding standards and pair programming (from occasional to full-time).
Putting these practices in place will, not only have a positive impact on velocity and flow of development, but will help the team transition team members faster.