So you’ve started you’re Agile project and the first thing that a team member asks you is “What is my Role and what are my Responsibilities?” At this point it’s common for Agile practitioners to start waxing philosophically about shared responsibility, the advantages of being multi-skilled and how responsibility should be shared by the team.
Although this is all well and good, it’s not concrete advice and does not directly answer the question. From the point of view of a developer (or Analyst, or Tester etc) that is accustomed to working in a structured environment the lack of clearly defined roles and responsibilities can be very unsettling.
I’ve used variations of the following framework on previous projects. I’ve found it useful in that it does not explicitly define what an individual should do, but provides enough guidance to ensure that team members are comfortable.
Roles for Agile projects
The framework is divided into three very broad categories which are: Customer, Implementor and Facilitator.
- Customer. The customer is the business representative that controls the definition and prioritization of Stories (Product Backlog Items) and has a detailed understanding of the business. In many cases, the Customer is also responsibile for the project budget and/or the business case. [Sidebar: In many large companies where software development is treated as it’s own cost center, it is common for the project manager to be responsible for both the budget and managing the team. I this situation the PM needs to decide if he wants to be either the Customer, or the Facilitator (but not both).] Customers may be anyone of the following: Product Manager, Product Owner, Analyst (or Business Analyst), and occasionally Project Manager.
- Implementor. An Implementor is anyone who accepts and completes a Story (an item from the product backlog). This may involve the creation, testing and/or maintenance of a software product. Because the Stories (Product Backlog Items) define business functionality, an Implementor will frequently need to be able to solve many problems in areas that may be outside of his area of specialization. Implementors may be anyone of the following: Developer (including Senior Developer), Testers, Designer, Architect, DBA, or Configuration Engineer.
- Facilitator. The Facilitator is someone who manages the process of creating the software, and although they are committed (a Scrum “Pig”) they are not directly responsible for writing code or prioritizing the requirements. Rather, the Facilitator helps the Customer describe the business problems, remove developer impediments, support the testers request for test coverage tools etc. It is not uncommon for new Agile teams to have more than one Facilitator; an Agile coach and an apprentice. Facilitators may be anyone of the following: Agile Coach, ScrumMaster, Agile Mentor, or Iteration Manager.
Mapping traditional roles into the new framework
Throughout the life of an Agile project, each team member will identify strongly with one of these roles, but due to the broad nature of the framework described above, it’s quite common for traditional roles to fall into more than one category. A senior developer who is mentoring others, may be both an Implementor and a Facilitator. A business Analyst who has a great deal of knowledge regarding exception cases may find that they may represent both the Customer and Implementor (via Testing).
This overlap of categorization encourages cross fertilization between team members, allowing them to share knowledge and ultimately improving communication between different parts of the team. I’ve drawn a diagram that attempts to summarizes how traditional roles may fall into one or more categories:
After completing this diagram I found that Mary Poppenieck has a similar concept which she calls “Three legged chair”. She has an excellent paper  where this is mentioned.
Responsibilities on an Agile Project
The final part of the framework is to define Responsibilities. A substantial amount of work has already been done on the responsibilities of the Implementor  and Customer Roles ,  by the Extreme Programming (XP) community. All that remains is to define the responsibilities of the Facilitator. A good place to start is with the roles and responsibilities of a ScurmMaster. Jeff Sutherland has good presentation  of the roots of Scrum in which the responsibilities are spelt out. That is a good starting point. I’ve taken the liberty off adding an additional two additional responsibilities to this list:
Jeff Sutherlands responsibilities for ScrumMasters:
- “Ensures that the team is fully functional and productive
- Enables close cooperation across all roles and functions and removes barriers
- Shields the team from external interferences
- Ensures that the process is followed. Invites to daily scrum, iteration review and planning meetings“
And my additions:
- Enables Communication between teams and across team boundaries
- Mentors Apprentice Facilitators (ScrumMasters, Interation Managers etc)
I’ve presented as generalized framework of Roles and Responsibilities for an Agile project which includes three roles: the Customer, the Implementor and the Facilitator. I’ve also discussed the responsibilities of the Facilitator role, and provided references for responsibilities of both the Implementor and Customer roles.
A MS Word document that contains the framework is attached here. I hope you find it useful.
As always you can find my blogs archived here and at http://kanemar.wordpress.com/
Download the PDF version: Agile Roles and Responsibilities blog