To me, Coaching is about getting the most out of individuals or teams by raising their awareness levels, about their current environment, about the environment outside theirs, and most important of all, about their own potential. This is done mostly by asking them the right questions, and not by providing them ready-made answers.
My definition of an Agile Coach is even less restrictive. As an Agile Coach, coaching is my primary modus operandi. But there are times when I make recommendations based on my practitioner background. I also complement coaching with aspects of mentoring and training. For example, relating personal experiences and sharing useful resources can increase someone's curiosity and give them a clear direction. Conducting a workshop can help kickstart a group on practices like TDD and Refactoring.
Even within the scope of Agile Coaching, I have been exposed to a variety of roles.
Role-based Practices Coaching
An Agile Coach helps team members understand their roles in an Agile setting. This involves skills-building. You may join a team as a single cross-skilled coach or as a trio of role-specific coaches: a Tech Coach, a QA Coach, and a BA Coach. With Developers, a coach will pair actively to spread practices like TDD, Refactoring, CI, etc, and will run workshops and brown bag sessions. With Testers, a coach could cover creating test scenarios from acceptance criteria, automated testing, test pyramid, and so on. For Business Analysts or Product Owners, the focus will be on prioritization exercises, negotiation skills, story writing, story slicing, determining NFRs, etc.
While focusing on role-specific skills and practices is important, some teams may need help in determining what process works for them, adapting them over time, and so on. This could involve defining how each role contributes to the process, and also in general, how the entire team collaborates and focuses on improvement. Having effective stand ups, planning meetings, demos, and retrospectives fall under this. Other aspects could involve helping the team determine some metrics to observe and improve. Eg: pairing matrix, confidence meter, deployments per week, velocity, cycle time, etc.
At times, it is not only team members who need coaching, but their leadership as well. These may include the Team Lead, the Project Manager, the Lead Architect, the Programme Manager, the Department Head, and so on. The conversation topics are usually broader level and strategic, such as prioritization of teams for Agile adoption, facilitating empowered teams, investing in appropriate infrastructure or continuous delivery initiatives, reducing overhead in IT policies, identifying improvements in architecture and ecosystem, etc.
In most cases, a single Agile Coach on an engagement will touch upon all of the above but to varying degrees. It will be a factor of the company culture, need of the hour, and personal motivations of the people involved.
The following provide further insights: