I have recently been very excited about Scrum and agile software development in general. Today, I was thinking about the team roles in Scrum. Scrum has only three roles - Product Owner, Scrummaster, and Team.
The Team role includes all the people that actually do the work. This means you have coders, testers, business analysts, DBAs, architects, and whatever else you may call your people. Scrum lumps them all together to enforce the "we're all in it together" attitude. An important way to look at a role in a team is to look at what things that role has control over. The team controls the source code. Only the team can make changes to the product and they have to decide how to make those changes in the most efficient way that meets the organizational polices. Trying to decide between MSSQL, Oracle, or MySQL? The Team decides. Trying to decide between C#, Java, or Ruby. The Team decides.
The next role is the Product Owner (PO). The PO is responsible for defining and prioritizing the product backlog. The PO owns the backlog. No changes can be made to the backlog without the PO's involvement. What that means to the team is that all the outside influences of "can you do this for me" should go through the PO. This is the guy that everyone has to talk to if they want a feature added to the product and she has the authority to say "no" to any feature. Of course, the way you say "no" in Scrum is to add the request to the product backlog with such a low priority that it will never get done. Everything goes on the product backlog, even if it is just plain stupid.
The last role is the Scrummaster. Scrummasters are there to facilitate team communications and educate everyone (inside the team and out) on how Scrum works and what the basic operational rules are. The Scrummaster owns the process. Some will debate me on this point, but I think the Scrummaster should also own the engineering practices. The Scrummaster sets the benchmark for organizational compliance. For example, a Scrummaster may set the organizational policy that a daily build is required for all projects. This policy is "bigger" than one team. The Scrummaster does not own the team's internal procedures, he only deals with the policies. For example, at my organization there is a policy to "use C# unless there is a compelling reason to do otherwise." As such, 90% of our projects are on the .Net framework using C#.
But, there is a second responsibility that the Scrummaster has that is less obvious. The Scrummaster is the team facilitator. He guides discussions in meetings and helps to ensure time boxes for events. The Scrummaster has to get the team members to talk to each other and collaborate. This is no easy task. Let's face it, most of the programmers we work with are introverted and weird. The are non-communicative and more at home sending IMs to each other than speaking. They hang a picture of their avatar in a nice frame in the hallway. They are not the kind of people that want to talk or share or socialize or go outside when the sun is shining. Scrummasters have to break through the team's tendency to avoid communication and get them to be agile and collaborative.
There one last role that I should point out, even though it is not a Scrum role. That is the "everyone else" role. Managers, marketing guys, executives, and users all fall in the "everyone else" group and should address all their concerns with the PO or the Scrummaster. They should not disturb the Team during a sprint. To disturb the team during a sprint has a few specific effects. First, it slows the team down and reduces their velocity. Second, it undermines the authority given to the PO. This is a big deal because the team needs to look at the PO as the authority on the product features.
So, the Product Owner owns the backlog, the Scrummaster owns the process, and the Team owns the work.