Chapter 1
IN THIS CHAPTER
Defining the Agile Manifesto and the 12 Agile Principles
Describing the Platinum Principles
Understanding what has changed in project management
Checking out the agile litmus test
This chapter describes the basics of what it means to be agile as outlined in the Agile Manifesto, with its four values, and the 12 Agile Principles behind the Agile Manifesto. It also expands on these basics with three additional Platinum Principles.
This foundation provides product development teams with the information needed to evaluate whether the team is following agile principles, as well as whether their actions and behaviors are consistent with agile values. When you understand these values and principles, you’ll be able to ask, “Is this agile?” and be confident in your answer.
In the mid-1990s, the Internet was changing the world right before our eyes. The people working in the booming dot-com industry were under constant pressure to be the first-to-market with fast-changing technologies. Development teams worked day and night, struggling to deliver new software releases before competitors made their companies obsolete. The information technology (IT) industry was completely reinvented in a few short years.
Given the pace of change at that time, cracks inevitably appeared in conventional project management practices. Using traditional methodologies such as waterfall didn’t allow developers to be responsive enough to the market’s dynamic nature and to emerging new approaches to business. Development teams started exploring alternatives to these outdated approaches to project management. In doing so, they noticed some common themes that produced better results.
In February 2001, 17 of these new methodology pioneers met in Snowbird, Utah, to share their experiences, ideas, and practices; to discuss how best to express them; and to suggest ways to improve the world of software development. They couldn’t have imagined the effect their meeting would have on the future of project management. The simplicity and clarity of the manifesto they produced and the subsequent principles they developed transformed the world of information technology and continue to revolutionize product development in every industry, not just software.
Over the next several months, these leaders constructed the following:
The group’s work was destined to make the software industry more productive, more humane, and more sustainable.
the right, we value the items on the left more.
* Agile Manifesto Copyright © 2001: Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas
This declaration may be freely copied in any form, but only in its entirety through this notice.
No one can deny that the Agile Manifesto is both a concise and an authoritative statement. Whereas traditional approaches emphasize a rigid plan, avoid change, document everything, and encourage hierarchical-based control, the manifesto focuses on
Research and experience illustrate why agile values are so important:
The creators of the Agile Manifesto originally focused on software development because they worked in the IT industry. However, agile techniques have spread beyond software development and even outside computer-related products. Today, agile approaches such as scrum (see Book 5) are disrupting biotech, manufacturing, aerospace, engineering, marketing, building construction, finance, shipping, automotive, utility, and energy industries with companies such as Apple, Microsoft, and Amazon leading the way. If you want early empirical feedback on the product or service you’re providing, you can benefit from agile methods.
The State of Scrum 2017–2018 report quoted a Scrum Alliance board member who said, “Any organization that does not go through an Agile transformation will die. It is the same as a company refusing to use computers.”
The Agile Manifesto was generated from experience, not from theory. As you review the values described in the following sections, consider what they would mean if you put them into practice. How do these values support meeting time-to-market goals, dealing with change, and valuing human innovation?
When you allow each person to contribute his or her unique value to a product, the result can be powerful. When these human interactions focus on solving problems, a unified purpose can emerge. Moreover, the agreements come about through processes and tools that are much simpler than conventional ones.
Consider what it means if you value individuals and interactions highly. Table 1-1 shows some differences between valuing individuals and interactions and valuing processes and tools.
TABLE 1-1 Individuals and Interactions Versus Processes and Tools
Individuals and Interactions Have High Value |
Processes and Tools Have High Value |
|
Pros |
Communication is clear and effective. Communication is quick and efficient. Teamwork becomes strong as people work together. Development teams can self-organize. Development teams have more chances to innovate. Development teams can quickly adjust processes as necessary. Development team members can take personal ownership of the product. Development team members can have deeper job satisfaction. |
Processes are clear and can be easy to follow. Written records of communication exist. |
Cons |
To enable more team empowerment and less command and control, managers may have to unlearn traditional leadership tendencies. People may need to let go of ego to work well as members of a team. |
People may over-rely on processes instead of finding the best ways to create good products. One process doesn’t fit all teams — different people have different work styles. One process doesn’t fit all products. Communication can be ambiguous and time-consuming. |
A development team’s focus should be on producing working functionality. With agile development, the only way to measure whether you are truly finished with a product requirement is to produce the working functionality associated with that requirement. For software products, working software means the software meets the definition of done: at the very least, developed, tested, integrated, and documented. After all, the working product is the reason for the investment.
Have you ever been in a status meeting where you reported that you were, say, 75 percent done with your project? What would happen if your customer told you, “We ran out of money. Can we have our 75 percent now?” On a traditional project, you wouldn’t have any working software to give the customer; 75 percent done traditionally means you are 75 percent in progress and 0 percent done. With agile product development, however, by using the definition of done, you would have working, potentially shippable functionality for 75 percent of your product requirements — the highest-priority 75 percent of requirements.
Tasks that distract from producing valuable functionality must be evaluated to see whether they support or undermine the job of creating a working product. Table 1-2 shows a few examples of traditional project documents and their usefulness. Think about whether documents produced on a recent project you were involved in added value to the functionality being delivered to your customer.
TABLE 1-2 Identifying Useful Documentation
Document |
Does the Document Add to Product Value? |
Is the Document Barely Sufficient or Gold-Plated? |
Project schedule created with expensive project management software, complete with Gantt Chart |
No. Start-to-finish schedules with detailed tasks and dates tend to provide more than what is necessary for product development. Also, many of these details change before you develop future features. |
Gold-plated. Although project managers may spend a lot of time creating and updating project schedules, team members tend to want to know only key deliverable dates. Management often wants to know only whether the deliverable is on time, ahead of schedule, or behind. |
Requirements documentation |
Yes. All products have requirements — details about product features and needs. Development teams need to know those needs to create a product. |
Possibly gold-plated; should be barely sufficient. Requirements documents can easily grow to include unnecessary details. Agile approaches provide simple ways to enable product requirement conversations. |
Product technical specifications |
Yes. Documenting how you created a product can make future changes easier. |
Possibly gold-plated; should be barely sufficient. Agile documentation includes just what it needs — development teams often don’t have time for extra flourishes and are keen to minimize documentation. |
Weekly status report |
No. Weekly status reports are for management purposes but do not assist product creation. |
Gold-plated. Knowing status is helpful, but traditional status reports contain outdated information and are much more burdensome than necessary. |
Detailed project communication plan |
No. Although a contact list can be helpful, the details in many communication plans are useless to product development teams. |
Gold-plated. Communication plans often end up being documents about documentation — an egregious example of busywork. |
All development requires some documentation. With agile product development, documents are useful only if they support development and are barely sufficient to serve the design, delivery, and deployment of a working product in the most direct, unceremonious way. Agile approaches dramatically simplify the administrative paperwork relating to time, cost control, scope control, or reporting.
Agile teams produce fewer, more streamlined documents that take less time to maintain and provide better visibility into potential issues. In later chapters, you find out how to create and use simple tools (such as a product backlog, a sprint backlog, and a task board) that allow teams to understand requirements and assess real-time status daily. With agile approaches, teams spend more time on development and less time on documentation, resulting in a more efficient delivery of a working product. See Chapter 2 in Book 4 for more on the product backlog, and see Chapter 3 in Book 4 to learn more about the sprint backlog.
The customer is not the enemy. Really.
Historical project management approaches usually limit customer involvement to a few development stages:
This historical focus on negotiation, avoidance of scope change, and limitation of direct customer involvement discourages potentially valuable customer input and can even create an adversarial relationship between customers and project teams.
The agile pioneers understood that collaboration, rather than confrontation, produced better, leaner, more useful products. As a result of this understanding, agile methods make the customer part of the product development on an ongoing basis.
Using an agile approach in practice, you’ll experience a partnership between the customer and the development team in which discovery, questioning, learning, and adjusting during the course of product development are routine, acceptable, and systematic.
Change is a valuable tool for creating great products. Teams that can respond quickly to customers, product users, and the market are able to develop relevant, helpful products that people want to use.
Unfortunately, traditional project management approaches attempt to wrestle the change monster and pin it to the ground so it goes out for the count. Rigorous change management procedures and budget structures that can’t accommodate new product requirements make changes difficult. Traditional project teams often find themselves blindly following a plan, missing opportunities to create more valuable products or, even worse, unable to react timely to changing market conditions.
Figure 1-1 shows the relationship between time, opportunity for change, and the cost of change on a traditional project. As time — and knowledge about your product — increases, the ability to make changes decrease, and costs more.
By contrast, agile development accommodates change systematically. The flexibility of agile approaches increases stability because product changes are predictable and manageable — in other words, it’s expected and non-disruptive to an agile team. In the rest of Book 4, you discover how agile approaches to planning, working, and prioritization allow teams to respond quickly to change.
As new events unfold, the team incorporates these realities into the ongoing work. Any new item becomes an opportunity to provide additional value instead of an obstacle to avoid, giving development teams a greater opportunity for success.
In the months following the publication of the Agile Manifesto, the original signatories continued to communicate. To support teams making the transition to agile approaches, they augmented the four values of the Agile Manifesto with 12 principles.
These agile principles provide practical guidance for development teams.
Another way of organizing the 12 principles is to consider them in the following four distinct groups:
The following sections discuss the principles according to these groups.
Agile approaches focus on customer satisfaction, which makes sense. After all, the customer is the reason for developing the product in the first place.
While all 12 principles support the goal of satisfying customers, principles 1, 2, 3, and 4 stand out:
You may define the customer of a product in a number of ways:
How do you enable these principles? Consider the following:
Table 1-3 lists some customer satisfaction issues that commonly arise during product development. Use Table 1-3 and gather some examples of customer dissatisfaction that you’ve encountered. Do you think becoming more agile would make a difference? Why or why not?
TABLE 1-3 Customer Dissatisfaction and How Agile Might Help
Examples of Customer Dissatisfaction with Product Development |
How Agile Approaches Can Increase Customer Satisfaction |
The product requirements were misunderstood by the development team. |
Product owners work closely with the customer to define and refine product requirements and provide clarity to the development team. Agile teams demonstrate and deliver working functionality at regular intervals. If a product doesn’t work the way the customer thinks it should work, the customer can provide feedback at the end of the sprint, not at the end of development, when the feedback would be too late. |
The product wasn’t delivered when the customer needed it. |
Working in sprints allows agile teams to deliver high-priority functionality early and often. |
The customer can’t request changes without additional cost and time. |
Agile processes are built for change. Development teams can accommodate new requirements, requirement updates, and shifting priorities with each sprint — offsetting the cost of these changes by removing the lowest-priority requirements — functionality that likely will never or rarely get used. |
An agile team commits to producing quality in every product increment it creates — from development through documentation to integration and test results — every day. Each team member contributes his or her best work all the time. Although all 12 principles support the goal of quality delivery, principles 1, 3, 4, 6–9, and 12 stand out:
These principles, in practice on a day-to-day basis, can be described as follows:
With software development, examples of technical excellence include establishing coding standards, using service-oriented architecture, implementing automated testing, and building for future change.
Agile principles apply to more than software products. Technical excellence is crucial whether you’re developing marketing campaigns, publishing books, involved in manufacturing, or engaged in research and development. All disciplines have a set of technical practices that agile teams can use to build in quality all along the way.
Teamwork is critical to agile product development. Creating good products requires cooperation among all members of the team, including customers and stakeholders. Agile approaches support team-building and teamwork, and they emphasize trust in self-managing development teams. A permanent, skilled, motivated, unified, and empowered team is a successful team.
Although all 12 principles support the goal of teamwork, principles 4–6, 8, 11, and 12 stand out as supporting team empowerment, efficiency, and excellence:
Here are some practices you can adopt to make this vision of teamwork a reality:
Use face-to-face communication to quickly and efficiently convey information.
Suppose that you usually communicate to Sharon by email. You take time to craft your message and then send it. The message sits in Sharon’s inbox, and she eventually reads it. If Sharon has any questions, she writes another email in response and sends it. That message sits in your inbox until you eventually read it. And so forth. This type of table tennis communication is too inefficient to use in the middle of a rapid iteration. A five-minute discussion addresses the issue quickly and with less risk of misunderstanding — and with a huge cost savings.
Make sure that lessons learned is an ongoing feedback loop rather than an end-of-project-only occurrence. Retrospectives should be held at the end of each iteration, when reflection and adaptation can improve development team productivity immediately going forward, creating ever higher levels of efficiency. A lessons learned meeting at the end of development has minimal value because the next product created might have a different group of people and practices. To learn more about retrospectives, see Chapter 5 in Book 4.
The first retrospective is as valuable (or even more valuable) as any future retrospective because, at the beginning, the team has the opportunity to make changes that can benefit the rest of the product development moving forward.
Resist the temptation to shuffle team members. Allow the team to become a stable, permanent, high-performing, capability-expanding team.
A long-term product perspective requires long-term, permanent teams. High-performing teams take years to build. Their understanding of the customer, their feedback from each release, the product support they provide, and the product development environment logically encourage teams to remain as stable as possible. Team members may seek new opportunities for career development outside the team, but for the most part teams should remain as constant as possible for maximum value. As each new feature is built, the team remains constant, able to support and learn from the product’s adoption by the customer.
Agility in product management encompasses three key areas:
An agile approach focuses on planning and executing the work to produce the best product that can be released. The approach is supported by communicating openly, avoiding distractions and wasteful activities, and ensuring that the progress of the product development is clear to everyone.
All 12 principles support product management, but principles 1–3 and 7–10 stand out for us:
Following are some advantages of adopting agile product management:
An agile approach asks, “What is the minimum we can do to achieve the goal?” instead of focusing on including all features and extra refinements that could possibly be needed. An agile approach usually means streamlining: barely sufficient documentation, removal of unnecessary meetings, avoidance of inefficient communication (such as email), and minimizing complexity of what’s under the hood (just enough to make it work).
Creating complicated documents that aren’t useful for product development is a waste of effort. It’s okay to document a decision, but you don’t need multiple pages on the history and nuances of how the decision was made. Keep the documentation barely sufficient (that is, sufficient but just barely), and you’ll have more time to focus on supporting the development team.
Agile practices encourage a steady pace of development that is productive and healthy. For example, in the popular agile software development set of practices called extreme programming (XP), the maximum workweek is 40 hours, and the preferred workweek is 35 hours. Agile product development is constant and sustainable, as well as more productive, especially long term.
Traditional approaches routinely feature a death march, in which the team puts in extremely long hours for days and even weeks at the end to meet a previously unidentified and unrealistic deadline. As the death march goes on, productivity tends to drop dramatically. More defects are introduced, and because defects need to be corrected in a way that doesn’t break a different piece of functionality, correcting defects is the most expensive work that can be performed. Defects are often the result of overloading a system — specifically demanding an unsustainable pace of work. Check out a presentation on the negative effects of “Racing in Reverse” at https://platinumedge.com/overtime
.
If you’ve worked on a traditional project before, you might have a basic understanding of project management activities. Table 1-4 lists a few project management tasks, along with how you would meet those needs with agile approaches. Use Table 1-4 to capture your thoughts about your experiences and how agile approaches look different from traditional project management.
TABLE 1-4 Contrasting Historical Project Management with Agile Product Management
Traditional Project Management Tasks |
Agile Approach to Product Development Tasks |
Create a fully detailed project requirement document at the beginning of the project. Try to control requirement changes throughout the project. |
Create a product backlog — a simple list of requirements by priority. Quickly update the product backlog as requirements and priorities change throughout product development. |
Conduct weekly status meetings with all project stakeholders and developers. Send detailed meeting notes and status reports after each meeting. |
The development team meets quickly, for no longer than 15 minutes, at the start of each day to coordinate and synchronize that day’s work and any roadblocks. They can update the centrally visible burndown chart in under a minute at the end of each day. Anyone, including stakeholders, can see the real-time progress on demand. |
Create a detailed project schedule with all tasks at the beginning of the project. Try to keep the project tasks on schedule. Update the schedule on a regular basis. |
Work within sprints and identify only specific tasks for the active sprint. |
Assign tasks to the development team. |
Support the development team by removing impediments and distractions. Development teams define and pull (as opposed to push) their own tasks. |
Through in-the-trenches experience working with teams transitioning to agile product development — and field testing in large, medium, and small organizations worldwide —three additional principles of agile product development were developed. They’re called the Platinum Principles:
You can explore each principle in more detail in the following sections.
Even the most agile teams can drift toward excessive formalization. For example, it isn’t uncommon to find team members waiting until a scheduled meeting to discuss simple issues that could be solved in seconds. These meetings often have an agenda and meeting minutes and require a certain level of demobilization and remobilization just to attend. In an agile approach, this level of formalization isn’t required.
In an agile system, discussions and the physical work environment are open and free-flowing; documentation is kept to the lowest level of quantity and complexity such that it contributes value to the product, not hampers it; and flashy displays, such as well-decorated presentations, are avoided. Professional, frank communications are best for the team, and the entire organizational environment has to make that openness available and comfortable.
Team members should focus on how the team as a whole can be most productive. This focus can mean letting go of individual niches and performance metrics. In an agile environment, the entire team should be aligned in its commitment to the goal, its ownership of the scope of work, and its acknowledgment of the time available to achieve that commitment.
An agile team should use visualization as much as possible, whether through simple diagrams or computerized modeling tools. Images are much more powerful than words. When you use a diagram or mockup instead of a document, your customer can relate better to the concept and the content.
Your ability to define the features of a system increases exponentially when you step up your interaction with the proposed solution: A graphical representation is almost always better than a textual one, and experiencing functionality hands-on is best.
The publication of the Agile Manifesto and the 12 Agile Principles legitimized and focused the agile movement in the following ways:
To be agile, you need to be able to ask, “Is this agile?” If you’re ever in doubt about whether a particular process, practice, tool, or approach adheres to the Agile Manifesto or the 12 principles, refer to the following list of questions: