What is Scrum?
In the previous section, we mentioned that in the late 1990s several visionaries were experimenting with flexible and adaptive ways to develop software. Two of these visionaries were Ken Schwaber and Jeff Sutherland. They came up with an Agile framework called Scrum, which was based on using the scientific method of empiricism, rather than strictly following a pre-defined plan. Scrum embraces Agile, not only because it was created by two of the people involved in the creation of the Agile Manifesto, but also because the Scrum values are actively derived from Agile principles (see Scrum Values meet Agile Principles in the Further reading section). In fact, most organizations that have adopted Agile methods use Scrum (see The State of Agile in the Further reading section).
It is important to emphasize that Scrum is a process framework, not a process by itself. It introduces a number of rules, milestones, and checkpoints that must be adhered to, regardless of the underlying development process. The Scrum framework can be used to contain a varied number of popular development methodologies, processes, or techniques, as per the organization's working practices. Scrum doesn't tell us how to perform our work, it just sets up a container within which to perform it. We can use whichever development methods and design or release processes we like, within Scrum. As long as these abide by the Agile and Scrum principles, it is absolutely fine to do so.
Scrum encourages the adoption of values such as respect for people, openness, and commitment in order to help us to cope with uncertainty and solving complex problems. It promotes the creation of self-organizing and cross-functional teams that are able to deliver working software independently and in spite of ever-changing external requirements and circumstances.
The Scrum framework consists of three components:
- The Scrum Team: A self-organizing, cross-functional set of people who will deliver the working software.
- Scrum Events: A number of time-boxed events that help create regularity, provide feedback, foster self-adjustment, and promote an iterative and incremental lifecycle.
- Scrum Artifacts: Items that represent work or added value and that provide transparency for the team's work progress and achievements. Artifacts are also the cornerstone of inspection and adaptation.
The Scrum Team attends Scrum Events and creates Scrum Artifacts as well as working software. Events are attended at predetermined intervals and may trigger the generation or modification of artifacts. Artifacts may be inspected by the team but also by external inspectors. The following diagram illustrates these interactions:
The usefulness of Scrum lies in its three main components (Teams, Events, and Artifacts) and their interactions. We'll be discussing these components and interactions in detail in Chapters 3, The Scrum Team, Chapter 4, Scrum Events, and Chapter 5, Scrum Artifacts.
For now, let's take a look at one of the ways Scrum makes us work more efficiently and productively with the adoption of an iterative and incremental development lifecycle.