An Agile Coach is a talented professional developer who is brought in to a team to help them raise their bar of excellence. This person is a servant-leader, an advocate, a teacher, a helper, and a technical resource as well.
A coach is there to guide the team, help them to do their best. This should be true of a coach on any team. An Agile Coach is someone who is well versed in the practices of an agile developer - XP, SCRUM, LEAN, etc. They have been around a few blocks and have some experience in various teams in various circumstances.
This person is sought out for their experience and their ability to convey their knowledge in a positive way. They are an active and participating member of the team - not someone on the outside. The Agile Coach should be developing code right along with the rest of the team. Sometimes the coach can be the team's representative to outside meetings also, where a developer is needed rather than a scrum master.
The coach should work directly with the scrum master, and be aligned in being able to protect the team from outside influence, as well as randomizations from meetings and questions from other groups. The Agile Coach should show leadership in how code should be written, and the behavior expected from the development team when it comes to coding both main-line and tests.
The coach should encourage continuous learning and growth, facilitating this wherever and whenever possible. He should encourage the team members strive to improve, while being there to assist and support them while they do, and ensure their success. The coach should set the tone for the team in modeling the attitude that will best serve the client, customers, and users.
COACH: Champion, Observer, Advocate, Cheerleader, Helper