Introduction to Scrum
Scrum is an agile software development process to manage software projects. Scrum is based on three simple principles: visible progress, constant inspection, and adaptation. With Scrum, teams use an empirical approach to adapt to changing requirements and priorities. Teams using Scrum focus on delivering working software to their customers on a frequent basis.
In this article I will present an overview of the different roles that each of the team members play in Scrum, the life cycle of projects managed with Scrum, a description of its key practices, why they work, and some practical advice on how to implement them.
Scrum is not prescriptive on engineering practices, but rather is a lightweight framework based on a few (common sense) guidelines for managing projects.
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.
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 made the practices reach a broader audience and become a mainstream software development process.
Most of the members of a Scrum team are typically found in traditional development teams. Yet, there are some 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, this role is more of a facilitator and coach than one that exercises control and makes decisions. The ScrumMaster helps the team follow the Scrum principles (e.g. making sure iterations are time boxed, removing roadblocks, fostering collaboration among team members, et cetera.) Unlike traditional project manager roles, the ScrumMaster does not assign individual tasks to the developers or QA but rather the development team self-organizes on each iteration and determines who will do 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 highly available to the team at all times to answer questions and clarify unclear requirements. For example, she 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 Product Owner in Scrum 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. In a Scrum team the development team provides estimates and does the work. However, the development team does not select what features should be developed-that is the job of the Product Owner. 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 since they allow the people doing the work to decide what the best approach to get the job done is and carry 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.
By: Hector Correa
Hector is Lead Software Developer at Epiq Systems in Kansas City. Epiq Systems is a leading provider of integrated technology products and services for the legal profession. Hector is a certified ScrumMaster and a Microsoft Certified Software Developer.
Wouldn'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.