I am asked this question quite often. What is Agile Coaching and what does and Agile Coach actually do? When I started thinking about how to answer the question, I found it difficult to put the answer into words because there is no real formula for an Agile Coach to help the team be more effective in product development. However when I started thinking about some of the coaching situations I have encountered a pattern did start to emerge.
Agility in software development is about identifying the roadblocks to effectiveness for the team as well as the individuals that are on the team. Many of these are very common, yet each instance has it's own form and smell.
Discovering these roadblocks is like the optimization of a program or module in software. There is always the worst problem and each one has a cost in effort and risk to resolve the issue. And just when you get that one solved, you discover another #1 issue.
The first step is observation. What is the team doing? How are the team members interacting? Can I tell what is being worked on from the outside and can I see progress day to day in the project?
Sometimes I observe problems with understanding exactly what each goal means in terms of the actual work to be done. This probably means the team needs help breaking the work down into smaller chunks. Smaller, more understandable chunks of work leads to better estimation and better predictability. Ultimately the better understanding leads to better software because the team builds what is needed instead of a guess formed from cloudy understanding of the requirements.
Sometimes I observe the team not knowing what to do next or getting in each other's way because the work dependencies are not clear. This can be due to a lack of project task visibility. Visibility is a difficult issue, especially with a distributed team. Lack of good iteration visibility can lead teams to spend too much time on tracking and reporting and other teams to doing too little. I work with the team to find the right level and detail for project and task reporting and work with them to make the publication of the reports as automatic as possible.
Sometimes I sense that the team is not comfortable with the process they are using. The struggle against some of the practices and ignore others. Most of the time this is due to the fact that certain members of the team do not recognize the underlying principles that the practices are intended to follow. Sometimes there is an unstated fear of change or loss of status, influence or control that is causing them to not follow the agreed upon process. In this case I start (or continue) individual coaching where the goal is to uncover the lack of understanding of the principles that make teams more agile or the fear that can paralyze an individual and a team.
I could cite many more examples, but let's get back to the answer for the original question.
Agile Coaching is a process where an experienced coach observes the team to understand what attitudes, practices and communication problems are keeping them from being more effective. This is done over a course of several days to a couple of weeks or more. The coach will identify issues that are disrupting the flow of work, causing rework or causing redundant work or other wasted effort. The coach will identify patterns of behavior that are not improving the team and the product.
The Agile Coach will then work with the team to help them see the issues and work with the team and management to facilitate improvement in the issues. This is often a very subtle and Socratic in nature. The coach does not often tell people what do differently or that they are wrong in what they are doing, but rather helps the team and the individuals discover a better path for themselves.
Just as the agile process itself the changes are incremental and are often only seen when looking back to recognize the improvement over time.
The Agile Coach is not a team member in the traditional sense of the word. Rather they are a trusted adviser who can identify the patterns of attitude and behavior that are often not seen by the team or not understood as roadblocks to a more efficient, happy and productive team.
The successful Agile Coach will work himself out of a job. Not because the team achieved true agility, but rather learned how to chart the path to agility for themselves.