ouldn't you like to read about a software development process that realistically addresses the needs that you face in your projects? One that acknowledges fast paced environments and changing priorities and that gives you guidelines to succeed in this kind of environment. Meet Scrum.
Scrum is an agile process to manage software development projects. Scrum is not prescriptive on engineering practices, but rather it is a lightweight framework based on a few (common sense) guidelines for managing projects. Scrum follows an empirical process control in which the team adapts based on experience rather than following a rigorous set of steps or a very detailed plan. The word Scrum itself comes from rugby and refers to a way of restarting the game.
This article presents an overview of the different roles that each team member plays in Scrum, the life cycle of projects managed with Scrum, a description of Scrum's key practices, why they work, and some practical advice on how to implement them.
Scrum as we know it today is the result of the work and collaboration of Jeff Sutherland and Ken Schwaber, circa 1995. In 2001 Ken Schwaber and Mike Beedle wrote the book Agile Software Development with Scrum, which helped the practices reach a broader audience and become a mainstream software development process.
Most Scrum team members are found in traditional development teams. Yet there are subtle differences in their responsibilities when working in a Scrum team that are worth discussing first.
The Scrum Team
There are three main roles in a Scrum team: ScrumMaster, Product Owner, and Development Team.
The ScrumMaster role is somewhat similar to a project manager in traditional software development; however, the creators of Scrum gave it a different name to emphasize the different nature of this role. Although the ScrumMaster is responsible for making sure the team is moving as quickly as possible, the role is more of a facilitator and coach than of exercising control and making decisions. The ScrumMaster helps the team follow the Scrum principles (such as making sure iterations are time-boxed, removing roadblocks, fostering collaboration among team members, and so on). Unlike traditional project manager roles, the ScrumMaster does not assign individual tasks to the developers or QA. Instead, the development team self-organizes on each iteration and determines who performs each task. The ScrumMaster must be available at all times to remove roadblocks and ensure that the team has all required resources for the job.
The Product Owner is a representative from the business side who determines the priorities of the items to be developed. The Product Owner must be either on-site or available to the team at all times to answer questions and clarify unclear requirements. For example, the product owner should reply to e-mails and return phone calls promptly, and attend demos of the work in progress to verify that the team is moving in the right direction. Unlike other development processes, the Scrum Product Owner is actively involved in the project throughout its duration, not just at the beginning or at the end.
The Development Team in Scrum can be composed of developers, QA, and business analysts. The development team provides estimates and does the work. However, the development team does not select what features should be developed—that's the Product Owner's job. Once an iteration starts, the development team self-organizes and decides who will do each item and what is the best way to approach it. During each iteration, developers, QA, and business analysts work very closely on a daily basis to make sure the work is properly designed, coded, tested, fixed, and potentially shippable at the end of the iteration.
Team collaboration and self-organization are key practices in Scrum teams, because they allow the people doing the work to decide on the best approach for getting the job done and carrying it out. It is amazing how much productivity improves when members of a cross-functional team collaborate with each other on a daily basis. This synergy between team members in a Scrum team is one of the greatest benefits of Scrum—and in my experience, accounts for a large portion of the success of Scrum teams.
|Editor's Note: This article was first published in the May/June 2008 issue of CoDe Magazine, and is reprinted here by permission.|