Why You May Need an 'Agile Coach' (Whatever One Is)
Ask an 'agile coach' what he or she does and the answer could range from write code to run meetings. It's not what you'd necessarily expect an agile coach to be doing, but that doesn't mean the role is unnecessary.
Tue, October 15, 2013
CIO — For the most part, attendees at last month's Agile2013 Nashville conference downplayed their title. Programmers, managers, DevOps and testers instead described themselves as "agilists" there to share the experience.
However, there was one group that stuck out, one group that didn't exist 10 years ago: The agile coaches. The role is new, and hard to define.
One attendee describes himself as someone who "used to be a programmer" but is now a coach. I ask what he's been doing, in an effort to define agile coach by example. His company won a contract to convert a large company to scrum and was putting employees through three days of the Certified ScrumMaster course — but he wasn't a trainer.
More from Agile2013: How to Move Beyond Project Estimates and Provide Better Value
"What do you do?" I ask.
"Whatever it takes," he answers. "Programming, if I need to."
That's right. Pressured to describe his role, his one example was the thing he claimed he wasn't doing lately.
Where Does an Agile Coach Come From?
The earliest mention of the "coach" role in agile software development comes from extreme programming, codified in Kent Beck's Extreme Programming Explained: Embrace Change. For Beck, the coach was equal parts traditional manager and 'tracker.'
Beck positions the coach as someone who might otherwise be a lead programmer or system architect. While those terms "conjure up visions of isolated geniuses making the important decisions on the project," he continues, "the coach is just the opposite. The measure of a coach is how few technical decisions he or she makes. The job is to get everybody else making good decisions."
The responsibility Beck gives the coach probably mimics what the attendee I spoke to actually does on his project — partnering with developers (especially junior ones) to figure out development tasks and helping programmers develop technical skills such as unit testing and refactoring, all while serving as a translator to explain the process to upper-level management.