Agile Principles & Scrum: An Overview
This chapter describes the underlying agile principles that drive and inform the mechanics of Scrum.
For years, companies have run software development projects using a plan-driven process (also known as waterfall, traditional, sequential or predictive). This process works well if you are applying it to problems that are well defined, predictable, and unlikely to undergo any significant change. The problem is that most product development efforts are anything but predictable, especially at the beginning. So, while a plan-driven, sequential, process gives the impression of an orderly, accountable, and measurable approach, that impression can lead to a false sense of security. After all, developing a product rarely goes as planned, no matter how "perfect" the upfront plans seem. (For more on the fallacy of perfect predictive planning, read the blog post, "Agile Risk Management: The Role of Traditional Risk Management.")
Scrum, on the other hand, is based on a different set of beliefs—ones that do map well to problems with enough uncertainty to make high levels of predictability difficult. These beliefs, or agile principles, are described in this chapter. I also encourage you to check out this at-a-glance comparison of the underlying principles of plan-driven process and Scrum.
Agile Principle #1: Variability and Uncertainty
Scrum leverages the variability and uncertainty in product development to create innovative solutions. The four principles described below all relate to variability and uncertainty.
- Embrace Helpful Variability: Product manufacturing uses a defined process that is designed to repeatedly reproduce the same finished product. Product development requires a process that will help create a unique single instance of a product. To create something new, companies require a process that embraces variability.
- Employ Iterative and Incremental Development: Scrum is based on iterative and incremental development, which are two distinct concepts that complement one another. Iterative development is a planned rework strategy, where teams use multiple passes to improve what they are building in order to converge on a good solution. In incremental development, teams break the product into smaller pieces so that they can build a small chunk, learn how each piece acts in the environment in which it must exist, adapt, and then build more. Scrum's use of timeboxed iterations (sprints) leverages the benefits of both iterative and incremental development, while negating the disadvantages of using them individually.
- Leverage Variability through Inspection, Adaptation, and Transparency. At the heart of Scrum are the principles of inspection, adaptation, and transparency. In Scrum, teams inspect and adapt not only what they are building (sprint reviews), but also how they are building it (sprint retrospectives).
- Reduce All Forms of Uncertainty Simultaneously. Scrum teams don't try to eliminate uncertainty through comprehensive upfront documentation. Instead, they seek to reduce small bits of all of the forms of uncertainty simultaneously through incremental and iterative development coupled with inspection and adaptation.
Agile Principle #2: Prediction and Adaptation
When using Scrum, we are constantly balancing the desire for prediction with the need for adaptation. The five principles below focus on this topic.
- Keep Options Open. Scrum teams try to keep their options open until the last responsible moment (LRM). They gather information and delay commitment until the cost of not making a decision is greater than the cost of making a decision.
- Accept That You Can’t Get It Right Up Front. Scrum teams produce some requirements and plans up front, but just sufficiently, and with the assumption that they will fill in the details of those requirements and plans as their understanding of the product grows. A great read for those who want to know more about adaptive planning, is "Plan Like an Extreme Skier,".
- Favor an Adaptive, Exploratory Approach. When Scrum teams face uncertainty, rather than trying to predict it away, teams use low-cost exploration (e.g., prototype, study, experiment, etc.) to buy relevant information to help them decide how to make a step forward. They then use feedback from this step to decide how best to proceed.
- Embrace Change in an Economically Sensible Way. Scrum teams seek to minimize waste by embracing economically sensible change. (The blog post, Economically Sensible Change explains the subtle but important difference between embracing change, and embracing economically sensible change.) The goal is to keep the cost-of-change curve flat for as long as possible—making it economically sensible to embrace even late change. To do this, Scrum teams manage the amount of work in process and the flow of work so that the cost of change is less affected by time.
- Balance Predictive Up-Front Work with Adaptive Just-in-Time Work. Scrum teams look for ways to maximize the amount of ongoing adaptation based on fast feedback and minimize the amount of upfront prediction, while still meeting compliance, regulatory, and or corporate objectives. To help your teams learn how to plan using agile principles, Innolution offers the on-site training course, Agile Estimating and Planning.
Agile Principle #3: Validated Learning
Scrum teams acquire validated learning when they obtain knowledge that confirms or refutes an assumption that they have made. The three principles below focus on this topic.
- Validate Important Assumptions Fast. An assumption is a guess, or belief that is assumed to be true, real, or certain even though we have no validated learning to know that it is true. Scrum is not tolerant of long-lived assumptions because they represent a significant development risk. Scrum uses a combination of iterative and incremental development along with a focus on low-cost exploration to validate assumptions quickly.
- Leverage Multiple Concurrent Learning Loops. Scrum allows teams to identify and exploit feedback loops, such as the daily scrum and the sprint review to increase learning. Scrum is also flexible enough to embrace many other learning loops, including pair programming and test-driven development. A typical learning loop pattern is shown below.
- Organize Workflow for Fast Feedback. Scrum teams know that fast feedback is critical for helping teams truncate wrong paths sooner and is vital for quickly uncovering and exploiting time-sensitive emergent opportunities. Scrum organizes the flow of work to move through learning loops in order to get feedback as quickly as possible. This moves the feedback closer in time to the original work, which in turn prevents errors from compounding into exponentially larger failures.
Agile Principle #4: Work in Process (WIP)
Limiting work in process is a vital principle too often overlooked by many agile and Scrum teams. The four principles below focus on this topic.
(Innolution offers corporate training in Kanban, an excellent agile method to help teams optimize work flow and work in process).
- Use Economically Sensible Batch Sizes. Economically sensible batch sizes have many benefits, including reduced cycle time, reduced flow variability, accelerated feedback, reduced risk, reduced overhead, increased motivation and urgency, and reduced cost of schedule growth.
- Recognize Inventory and Manage It for Good Flow. Though many principles of manufacturing do not apply in product development, the high-cost of inventory does. No competent manufacturer sits on a large quantity of inventory, because to do so would be wasteful and costly. Neither should Scrum teams.
- Focus on Idle Work, Not Idle Workers. Scrum teams are acutely aware that finding the bottlenecks in the work flow and focusing efforts on eliminating them is a far more economically sensible activity than trying to keep everyone 100% busy. One helpful resource to provide more clarity on these and other principles is "Scrum Teams, Idle Work, and Adaptive Planning."
- Consider Cost of Delay. Scrum teams can use the cost of delay, the financial cost associated with delaying work or delaying achievement of a milestone, to make informed tradeoffs. To learn more about how these and other agile principles work together and reinforce each other, read the blog post, "Agile Portfolio Management: This Ain't No Cafeteria!"
Agile Principle #5: Progress
When using Scrum, teams measure progress by what they have delivered and validated, not by how they are proceeding according to the predefined plan or how far they are into a particular phase or stage of development. The three principles below focus on this topic.
- Adapt to Real-Time Information and Replan. Scrum is based on the principle that pressure to conform to a set plan often blinds people to the fact that the plan might be wrong. Scrum teams, therefore, rapidly replan and adapt to the stream of economically important information that is continuously arriving during the development effort.
- Measure Progress by Validating Working Assets. Scrum teams measure progress by building working, validated assets that deliver value and that can be used to validate important assumptions. In Scrum, it's not about how much work a team starts, but what customer-valuable work a team finishes.
- Focus on Value-Centric Delivery. Scrum is a customer-value-centric form of development. It is based on a prioritized, incremental model of delivery in which the highest-value features are continuously built and delivered in the next iteration. As a result, customers get a continuous flow of high-value features sooner. Value is generated by delivering working assets to customers, by validating important assumptions, or by acquiring valuable knowledge.
Agile Principle #6: Performance
There are specific performance-related characteristics we expect when using Scrum. The three principles below focus on this topic.
- Go Fast but Never Hurry. One core goal of Scrum is to be nimble, adaptable and speedy. By going fast, teams get feedback faster, and get value into the hands of customers sooner. At the same time, however, Scrum teams don't rush to get things done. To do so would violate the principle of sustainable pace: people should be able to work at a pace that they can continue for an extended period of time. In addition, rushing usually comes at the expense of quality.
- Build In Quality. In Scrum, quality isn't something a testing team "tests in" once development ends; quality is owned and built in by a cross-functional Scrum team and verified each sprint. Each increment of value that a Scrum team creates is completed to a high level of confidence—It could potentially be put into production or shipped to customers.
- Employ Minimally Sufficient Ceremony. Frequently, Scrum's focus on minimal ceremony is misinterpreted to mean "Scrum is anti-documentation." That isn't accurate. Rather, Scrum teams adopt an economic perspective and carefully review which documents they create.
Agile and Scrum Principles Summary
The core agile principles are the fundamental beliefs that drive how teams develop with Scrum. A more in-depth discussion and additional examples of these principles can be found in Chapter 3 of the Essential Scrum book. The next chapter begins a series of discussions about the mechanics of Scrum, starting with sprints.
What to learn more about core agile principles, consider taking an Innolution training class.