Scrum is currently the most widely used agile method. Scrum features very short (one- to four-week) fixed-length development cycles; small, self-directed, cross-functional teams; development tasks chosen from a prioritized list of product features at the start of each cycle; daily short meetings and updates of tracking artifacts; and delivery of potentially shippable products at the end of each cycle. Scrum is named after a term from rugby because both the game and the development process are adaptive, quick, and self-organizing activities. Like other agile methods, Scrum was originally proposed and used for small-scale products, without rigorous security, safety, or reliability requirements. Now, many organizations attempt to use Scrum for large-scale product development; this presents many challenges.
The book explains the theoretical underpinnings of Scrum and suggests how to use it with large-scale projects. The agile methods literature is abundant, but little of it is very persuasive. Aside from the obvious advantages of short iterations and certain practices, such as thorough testing and continuous integration, agile approaches often seem to be arbitrary and incomplete collections of practices and techniques. In detailing the theory behind Scrum, Larman and Vodde present a cogent, coherent, and convincing foundation for agile methods. This is especially so because the presentation is based on some of the same disciplines--notably, quality control, management, and organizational theory--that underlie traditional software engineering. This basis is expanded to include systems thinking, queueing theory, and lean thinking--all disciplines that the software engineering community can respect. Suddenly, agile methods are not whimsical collections of hot topics pushed in trade books by trendy consultants, but well-founded methods with a solid grounding in theory.
The book is divided into three parts. Part 1 consists of chapters on systems thinking--mainly systems theory and quality theory; lean thinking, largely based on Japanese management trends, especially at Toyota; queueing theory as applied to organizations, not the mathematical material; false dichotomies--mainly between traditional and agile methods; and a pep talk about being agile. Part 2 consists of chapters about teams and feature teams; requirements areas that group feature teams for scaling Scrum to larger products; organizational structure and change; and a summary of the entire discussion of large-scale Scrum. Part 3 consists of an overview chapter on Scrum, recommended readings, a bibliography, and an index.
The authors cross-reference between parts of the book and cite interesting material outside the book. As is typical of agile methods books, there is not much connection to the traditional software engineering literature, although the authors do a better job than usual, in this regard. In fact, this book stands on its own as a major contribution to the software engineering literature. Unfortunately, the authors do not consider that the Software Engineering Institute’s work on software processes is based on the same foundation as the authors’ work on agile processes.
This book’s design is very attractive and functional. Most of the artwork is well done, except for the photographs, which are mostly of poor quality and little interest.
In summary, Larman and Vodde present solid foundations for agile methods--a task that has been too long in coming, but one that they carry out superbly.