|Book Review: Agile Estimating and Planning|
Agile Estimating and Planning
Written by: Mike Cohn. Upper Saddle River, NJ: Prentice Hall, 2005. 330 + xxx pages.
A quiet revolution is taking place in the software development industry: Agile methods, including Scrum (Schwaber and Beedle, 2001) and Extreme Programming (Beck and Andres, 2004), have been changing the way software-based products are developed. Small dedicated teams collaborate closely with customers, focus on transforming requirements into software quickly, have regular joint review and planning sessions, and are empowered to do their own planning. Mike Cohn's book presents agile project management methods in a way that they can be applied to software and non-software development projects alike.
Five years ago, mainly small companies and information technology (IT) shops embraced agile. Today, global players including Microsoft, Yahoo, and Nokia have started to go agile. Why? Agile promises to improve productivity, to reduce development time, and to increase quality significantly. This comes at a price: Employees, managers, and engineers alike must change their thinking and behavior; different functions must collaborate; and new techniques must be embraced, implying a culture change for most organizations.
Even though agile delivers, many people still believe that this method equates to unplanned or even chaotic product development. The reality could not be further from the truth: Agile requires considerable planning and estimating and provides a high degree of feedback and control. Agile Estimating and Planning is the first comprehensive guide to preparing and planning agile projects. Cohn is a highly recognized software development consultant, speaker, and author. He has extensive experience in planning and managing agile projects and a special gift for making a complex matter understandable.
To appreciate this book, you must understand how agile development works. Agile's approach to maximizing value creation is to do less work much faster. Agile projects use work cycles called iterations that typically last between one and four weeks. Each iteration transforms a subset of the most valuable, highest-priority product requirements into a potentially shippable product increment ready for inspection by the customer or product manager. The customer then decides either to stop development and ship the product or to continue development and change or add features. This process is called “inspect and adapt.” It allows a product to evolve while taking into account the insights gained in each iteration. An agile project is thus a sequence of iterations and staged deliveries. Inspecting the product development progress frequently allows customers and product managers to make informed trade-off decisions early on: Should the original delivery date be maintained and lower priority features be deferred to the next product version, or should all the features planned for this version be implemented and the release date be delayed?
Most people are intrigued by the power and flexibility of agile development but find it hard to imagine how agile projects can be planned and managed systematically. Isn't everything based on inspect and adapt? How can we plan for six months if the customer can change her mind every two weeks? How can we forecast our speed of feature delivery? And how are multiple teams managed?
Agile Estimating and Planning is published at a time when many companies are looking for innovative ways to create new products while shortening lead time and increasing productivity. It provides sound, proven answers to the questions just posed. It is divided into seven parts, six of them highlighting a specific project management area and the last one describing how the various techniques can be put into practice.
Part I of the book provides motivation for agile planning by describing the purpose of planning and common failures associated with conventional planning approaches. Part II covers estimation techniques used for agile release planning. Release planning forecasts how long it is likely to take to deliver all product requirements. Notice that agile project management aims to provide a customer with reliable and repeatable value delivery on a regular basis.
Part III introduces techniques for maximizing the delivery of business value ranging from financial measures to the Kano model. It also provides tips to refine and manage product requirements using a popular agile requirements engineering technique called user stories.
Part IV describes agile scheduling approaches. It introduces release planning and iteration planning techniques. In the agile approach, the team responsible for the development of a product is self-managing and takes on planning responsibilities: The team estimates the complexity of product requirements and its ability to deliver requirements on an iterative basis. The team also decides how much work it can take on in a specific iteration and creates a detailed task-based plan for each iteration that forms the basis for self-organization and close collaboration. Part IV also recommends the controlled application of project buffers (Goldratt, 1997) and provides insights into the management of multiteam projects.
Even though the book's title seems to restrict the contents to estimating and planning, part V covers progress control in an agile project and provides recommendations for agile project progress reports. Part VI acts as an executive summary stating key reasons why agile planning works and can yield better results than conventional planning techniques if applied properly. Finally, part VII puts the techniques of parts II to V into context by describing a fictitious case study.
If your business depends on software creation and delivery, this book will enable you to thoroughly understand how to apply agile project management techniques successfully. If your products do not involve software, this book still offers you insights into incrementally delivering value. Agile planning techniques are particularly suited to innovative product development projects that carry a great deal of risk and uncertainty. Using conventional linear project management techniques where a development project is first planned in great detail and then the execution of the project is managed according to the plan often results in waste and frustration as the gap between plan and reality widens. Agile project management acknowledges that our ability to foresee the future is limited and offers the right tools for an iterative planning and execution approach. Notice that depending on your type of product development, you may have to tailor some of the agile project management techniques to your needs. You may have to extend the iteration length to more than four weeks, for instance.
This book would benefit from a real-world case study that demonstrates the application of the estimating and planning techniques Cohn describes. More discussion of managing multiple teams using agile techniques would also be helpful. Even though Agile Estimating and Planning discusses multiteam management, it does not cover advanced topics such as work-load leveling and constraint exploitation and removal.
I highly recommend studying this book to benefit from project management techniques that enable you to cope better with innovation and change in an ever more dynamic world.