The Art of Agile Development, 2nd Edition

Book description

Most companies developing software employ something they call "Agile." But there's widespread misunderstanding of what Agile is and how to use it. If you want to improve your software development team's agility, this comprehensive guidebook's clear, concrete, and detailed guidance explains what to do and why, and when to make trade-offs.

In this thorough update of the classic Agile how-to guide, James Shore provides no-nonsense advice on Agile adoption, planning, development, delivery, and management taken from over two decades of Agile experience. He brings the latest ideas from Extreme Programming, Scrum, Lean, DevOps, and more into a cohesive whole. Learn how to successfully bring Agile development to your team and organization--or discover why Agile might not be for you.

This book explains how to:

  • Improve agility: create the conditions necessary for Agile to succeed and scale in your organization
  • Focus on value: work as a team, understand priorities, provide visibility, and improve continuously
  • Deliver software reliably: share ownership, decrease development costs, evolve designs, and deploy continuously
  • Optimize value: take ownership of product plans, budgets, and experiments--and produce market-leading software

Publisher resources

View/Submit Errata

Table of contents

  1. Foreword
  2. Preface
    1. For the Pragmatists
    2. What’s New in the Second Edition
    3. Who This Book Is For
    4. About the Guest Authors
    5. Conventions Used in This Book
    6. Using Code Examples
    7. O’Reilly Online Learning
    8. How to Contact Us
      1. Acknowledgements
  3. I. Improving Agility
  4. 1. What Is Agile?
    1. Agile’s Genesis
    2. Born Out of Crisis
    3. The Agile Manifesto
    4. The Essence of Agile
      1. Adaptive rather than predictive
      2. People-oriented rather than process-oriented
    5. Why Agile Won
    6. Why Agile Works
    7. Why Agile Fails
  5. 2. How to Be Agile
    1. Practicing Agile
    2. The Road to Mastery
    3. How to Begin
      1. Joining an Agile Team
      2. Introducing Agile
      3. Improving Existing Agile Teams
      4. Applying Individual Agile Practices
  6. 3. Choose Your Agility
    1. The Agile Fluency Model
      1. Focusing Zone
      2. Delivering Zone
      3. Optimizing Zone
      4. Strengthening Zone
    2. Choose Your Zones
  7. 4. Invest in Agility
    1. Make Time for Learning
      1. If there’s no time for learning…
      2. If there’s no budget for help…
    2. Choose or Create Agile Teams
      1. If you can’t dedicate people to their teams…
      2. If team members don’t get along…
      3. If you can’t create long-lived teams…
      4. If you can’t get the business, customer, or user expertise you need…
      5. If you can’t get all the developer skills you need…
    3. Choose Agile Coaches
      1. If you can’t hire the coaches you need…
    4. Delegate Authority and Responsibility to Teams
      1. If work must be assigned to individuals…
      2. If tools don’t support team-based work…
      3. If teams have to use a corporate tracking tool…
      4. If teams don’t have access to stakeholders…
      5. If Delivering teams don’t have control over their release processes…
      6. If Optimizing teams don’t have control over their product plans and spending…
    5. Change Team Management Style
      1. If managers have trouble letting go…
    6. Create Team Rooms
      1. If a team is remote…
      2. If you can’t create a physical team room for an in-person team…
    7. Establish a Learning-Friendly Purpose for Each Team
      1. If there’s an important deadline…
      2. If there’s no valuable green-field work to do…
    8. Replace Waterfall Governance Assumptions
      1. If waterfall governance is required…
    9. Change Harmful HR Policies
      1. If HR policies are set in stone…
    10. Address Security Concerns
      1. If there’s no flexibility around security requirements…
      2. If you’re required to have a separate code review step…
  8. 5. Invest in Change
    1. Understanding Change
    2. Large-Scale Change
    3. Making Changes
    4. Get Management Buy-In
      1. 1. Start with a Conversation
      2. 2. Get the Economic Buyer’s Approval
      3. 3. Make a Formal Proposal
      4. If this sounds like too much work…
      5. If management thinks they’re already Agile…
      6. If management isn’t supportive…
    5. Get Team Buy-In
      1. If team members are skeptical…
      2. If a few team members refuse…
      3. If the majority of the team refuses…
      4. If people lie about their acceptance…
    6. Get Stakeholder Buy-In
      1. If concrete commitments are required…
      2. If stakeholders don’t buy in…
    7. Further Reading
  9. 6. Scaling Agility
    1. Scaling Fluency
      1. Organizational Capability
      2. Coaching Capability
      3. Team Capability
    2. Scaling Products and Portfolios
      1. Scaling Vertically
      2. Scaling Horizontally
      3. Scaling Vertically and Horizontally
      4. My Recommendation
  10. II. Focusing on Value
    1. Welcome to the Focusing Zone
    2. Achieving Focusing Fluency
  11. 7. Teamwork
    1. Whole Team
      1. Customer Skills
      2. Development Skills
      3. Coaching Skills
      4. Generalizing Specialists
      5. Staffing the Team
      6. Team Size
      7. A Team of Peers
      8. The Hole Team Revisited
      9. Questions
      10. Prerequisites
      11. Indicators
      12. Alternatives and Experiments
      13. Further Reading
    2. Team Room
      1. Secrets of Collaboration
      2. Physical Team Rooms
      3. Virtual Team Rooms
      4. Questions
      5. Prerequisites
      6. Indicators
      7. Alternatives and Experiments
      8. Further Reading
    3. Safety
      1. Understanding Psychological Safety
      2. How to Create Safety
      3. Leaders’ Role
      4. Questions
      5. Prerequisites
      6. Indicators
      7. Alternatives and Experiments
      8. Further Reading
    4. Purpose
      1. Start With the Vision
      2. Identify the Purpose
      3. Document the Purpose
      4. Charter the Purpose
      5. Promote the Purpose
      6. Iterate the Purpose
      7. Questions
      8. Prerequisites
      9. Indicators
      10. Alternatives and Experiments
      11. Further Reading
    5. Context
      1. Chartering Context
      2. Iterating Context
      3. Questions
      4. Prerequisites
      5. Indicators
      6. Alternatives and Experiments
    6. Alignment
      1. Chartering Alignment
      2. Iterating Alignment
      3. Adhering to Agreements
      4. Questions
      5. Prerequisites
      6. Indicators
      7. Alternatives and Experiments
    7. Energized Work
      1. How to Be Energized
      2. Supporting Energized Work
      3. Taking Breaks
      4. Questions
      5. Prerequisites
      6. Indicators
      7. Alternatives and Experiments
      8. Further Reading
  12. 8. Planning
    1. Stories
      1. How to Create a Story
      2. Customer Value
      3. Splitting and Combining Stories
      4. Special Stories
      5. Questions
      6. Prerequisites
      7. Indicators
      8. Alternatives and Experiments
    2. Adaptive Planning
      1. Valuable Increments
      2. Focus on One Increment at a Time
      3. Slice Your Increments
      4. Release Early, Release Often
      5. Your First Increment
      6. Adapt Your Plans
      7. How to Create Your Plan
      8. Balancing Adaptability and Predictability
      9. Adaptive Planning and Organizational Culture
      10. Questions
      11. Prerequisites
      12. Indicators
      13. Alternatives and Experiments
      14. Further Reading
    3. Visual Planning
      1. Who Plans?
      2. Cluster Mapping
      3. Breaking Down Increments
      4. Impact Mapping
      5. Prospective Analysis
      6. Story Mapping
      7. Iterating the Visual Plan
      8. Questions
      9. Prerequisites
      10. Indicators
      11. Alternatives and Experiments
      12. Further Reading
    4. The Planning Game
      1. How to Play
      2. Keep Your Options Open
      3. How to Win the Planning Game
      4. Prioritizing Development Decisions
      5. Facing Reality
      6. Iterating the Planning Game
      7. Questions
      8. Prerequisites
      9. Indicators
      10. Alternatives and Experiments
    5. Real Customer Involvement
      1. Personal Development
      2. Platform Development
      3. In-House Custom Development
      4. Outsourced Custom Development
      5. Vertical-Market Software
      6. Horizontal-Market Software
      7. Questions
      8. Prerequisites
      9. Results
      10. Experiments and Alternatives
    6. Incremental Requirements
      1. The Living Requirements Document
      2. When Experts Aren’t Part of the Team
      3. Work Incrementally
      4. Documentation
      5. Questions
      6. Prerequisites
      7. Indicators
      8. Alternatives and Experiments
      9. Further Reading
  13. 9. Ownership
    1. Task Planning
      1. Cadence
      2. Creating Tasks
      3. Visual Tracking
      4. Cross-Team Dependencies
      5. Making and Meeting Iteration Commitments
      6. Incomplete Stories
      7. Emergency Requests
      8. Your First Week
      9. Questions
      10. Prerequisites
      11. Indicators
      12. Alternatives and Experiments
      13. Further Reading
    2. Capacity
      1. Yesterday’s Weather
      2. Capacity and the Iteration Timebox
      3. Stabilizing Capacity
      4. Estimating Stories
      5. When Estimating Is Difficult
      6. Defending Estimates
      7. Your Initial Capacity
      8. How to Improve Capacity
      9. Capacity Is Not Productivity
      10. Questions
      11. Prerequisites
      12. Indicators
      13. Alternatives and Experiments
    3. Slack
      1. How Much Slack?
      2. How to Use Slack
      3. Questions
      4. Prerequisites
      5. Indicators
      6. Alternatives and Experiments
      7. Further Reading
    4. Stand-Up Meetings
      1. How to Hold the Daily Stand-Up
      2. Be Brief
      3. Questions
      4. Prerequisites
      5. Indicators
      6. Alternatives and Experiments
      7. Further Reading
    5. Informative Workspace
      1. Subtle Cues
      2. Big Visible Charts
      3. Improvement Charts
      4. Gaming
      5. Questions
      6. Prerequisites
      7. Indicators
      8. Alternatives and Experiments
      9. Further Reading
    6. Customer Examples
      1. Describe
      2. Demonstrate
      3. Develop
      4. Questions
      5. Prerequisites
      6. Indicators
      7. Alternatives and Experiments
      8. Further Reading
    7. “Done Done”
      1. How to Be “Done Done”
      2. Making Time
      3. Organizational Constraints
      4. Questions
      5. Prerequisites
      6. Indicators
      7. Alternatives and Experiments
  14. 10. Accountability
    1. Stakeholder Trust
      1. Show Some Hustle
      2. Show Some Empathy
      3. Deliver on Commitments
      4. Manage Problems
      5. Respect Customer Goals
      6. Make Stakeholders Look Good
      7. Be Honest
      8. Questions
      9. Prerequisites
      10. Indicators
      11. Alternatives and Experiments
      12. Further Reading
    2. Stakeholder Demos
      1. Feedback Loops
      2. The Demo Cadence
      3. How to Conduct a Stakeholder Demo
      4. Be Prepared
      5. When Things Go Wrong
      6. Questions
      7. Prerequisites
      8. Indicators
      9. Alternatives and Experiments
    3. Forecasting
      1. Uncertainty and Risk
      2. Predefined Release Dates
      3. Feasibility Forecasts
      4. Date and Scope Forecasts
      5. Questions
      6. Prerequisites
      7. Indicators
      8. Alternatives and Experiments
      9. Further Reading
    4. Roadmaps
      1. Agile Governance
      2. Option 1: Just the Facts
      3. Option 2: General Direction
      4. Option 3: Date and Approximate Scope
      5. Option 4: Detailed Plans and Predictions
      6. Corporate Tracking Tools
      7. When Your Roadmap Isn’t Good Enough
      8. Questions
      9. Prerequisites
      10. Indicators
      11. Alternatives and Experiments
      12. Further Reading
    5. Management
      1. Theory X and Theory Y
      2. The Role of Agile Management
      3. Measurement Dysfunction
      4. Why Measurement Dysfunction is Inevitable
      5. Delegatory Management
      6. When Metrics Are Required
      7. Questions
      8. Prerequisites
      9. Indicators
      10. Alternatives and Experiments
      11. Further Reading
  15. 11. Improvement
    1. Retrospectives
      1. Types of Retrospectives
      2. How to Conduct a Heartbeat Retrospective
      3. Step 1: The Prime Directive (5 minutes)
      4. Step 2: Brainstorming (20 minutes)
      5. Step 3: Mute Mapping (15 minutes)
      6. Step 4: Generate Insights (10–30 minutes)
      7. Step 5: Retrospective Objective (10–20 minutes)
      8. Follow Through
      9. Questions
      10. Prerequisites
      11. Indicators
      12. Alternatives and Experiments
      13. Further Reading
    2. Team Dynamics
      1. What Makes a Team?
      2. Team Development
      3. Communication, Collaboration, and Interaction
      4. Shared Leadership
      5. Toxic Behavior
      6. Questions
      7. Prerequisites
      8. Indicators
      9. Alternatives and Experiments
      10. Further Reading
    3. Impediment Removal
      1. Identifying Impediments
      2. Circles and Soup
      3. Questions
      4. Prerequisites
      5. Indicators
      6. Alternatives and Experiments
      7. Further Reading
  16. III. Delivering Reliably
    1. Welcome to the Delivering Zone
    2. Achieving Delivering Fluency
  17. 12. Collaboration
    1. Collective Code Ownership
      1. Making Collective Ownership Work
      2. Egoless Programming
      3. Collaborating Without Conflict
      4. Working with Unfamiliar Code
      5. Benefits to Programmers
      6. Questions
      7. Prerequisites
      8. Indicators
      9. Alternatives and Experiments
    2. Pair Programming
      1. Why Pair?
      2. Pairing Stations
      3. How to Pair
      4. Effective Navigating
      5. Teaching Through Pairing
      6. Challenges
      7. Questions
      8. Prerequisites
      9. Indicators
      10. Alternatives and Experiments
      11. Further Reading
    3. Mob Programming
      1. How to Mob
      2. Why Mobbing Works
      3. The Mobbing Station
      4. Making Mobbing Work
      5. Questions
      6. Prerequisites
      7. Indicators
      8. Alternatives and Experiments
      9. Further Reading
    4. Ubiquitous Language
      1. The Domain Expertise Conundrum
      2. Speak the Same Language
      3. How to Create a Ubiquitous Language
      4. Questions
      5. Prerequisites
      6. Indicators
      7. Alternatives and Experiments
      8. Further Reading
  18. 13. Development
    1. Zero Friction
      1. One-Second Feedback
      2. Know Your Editor
      3. Reproducible Builds
      4. Five-Minute Integration
      5. Control Complexity
      6. Automate Everything
      7. Automate Incrementally
      8. Automating Legacy Code
      9. Questions
      10. Prerequisites
      11. Indicators
      12. Alternatives and Experiments
    2. Continuous Integration
      1. Continuous Integration Is a Practice, Not a Tool
      2. The Many Flavors of Continuous Integration
      3. The Continuous Integration Dance
      4. Continuous Integration Without a CI Server
      5. Synchronous Versus Asynchronous Integration
      6. Multistage Integration Builds
      7. Pull Requests and Code Reviews
      8. Questions
      9. Prerequisites
      10. Indicators
      11. Alternatives and Experiments
      12. Further Reading
    3. Test-Driven Development
      1. Why TDD Works
      2. How to Use TDD
      3. Eat the Onion from the Inside Out
      4. A TDD Example
      5. Questions
      6. Prerequisites
      7. Indicators
      8. Alternatives and Experiments
      9. Further Reading
    4. Fast, Reliable Tests
      1. Rely on Narrow Unit Tests
      2. Test Outside Interactions with Narrow Integration Tests
      3. Simulate Nonlocal Dependencies
      4. Control Global State
      5. Write Sociable Tests
      6. Separate Infrastructure and Logic
      7. Use Broad Tests Only as a Safety Net
      8. Adding Tests to Existing Code
      9. Prerequisites
      10. Indicators
      11. Alternatives and Experiments
      12. Further Reading
    5. Refactoring
      1. How to Refactor
      2. Refactoring in Action
      3. Questions
      4. Prerequisites
      5. Indicators
      6. Alternatives and Experiments
      7. Further Reading
    6. Spike Solutions
      1. Quick Questions
      2. Third-Party Dependencies
      3. Design Experiments
      4. Making Time for Spikes
      5. Questions
      6. Prerequisites
      7. Indicators
      8. Alternatives and Experiments
  19. 14. Design
    1. Incremental Design
      1. Never Stop Designing
      2. How Incremental Design Works
      3. Levels of Design
      4. Risk-Driven Architecture
      5. Questions
      6. Prerequisites
      7. Indicators
      8. Alternatives and Experiments
      9. Further Reading
    2. Simple Design
      1. YAGNI: You Aren’t Gonna Need It
      2. Once and Only Once
      3. Coupling and Cohesion
      4. Third-Party Components
      5. Fail Fast
      6. Self-Documenting Code
      7. Published Interfaces
      8. Performance Optimization
      9. Questions
      10. Prerequisites
      11. Indicators
      12. Alternatives and Experiments
      13. Further Reading
    3. Reflective Design
      1. How Reflective Design Works
      2. Reflective Design in Practice
      3. Reverse-Engineering the Design
      4. Identifying Improvements
      5. Code Smells
      6. Incrementally Refactor
      7. Questions
      8. Prerequisites
      9. Indicators
      10. Alternatives and Experiments
      11. Further Reading
  20. 15. DevOps
    1. Build for Operation
      1. Threat Modeling
      2. Configuration
      3. Secrets
      4. Paranoiac Telemetry
      5. Logging
      6. Metrics and Observability
      7. Monitoring and Alerting
      8. Questions
      9. Prerequisites
      10. Indicators
      11. Alternatives and Experiments
      12. Further Reading
    2. Feature Flags
      1. Keystones
      2. Feature Flags
      3. Prerequisites
      4. Indicators
      5. Alternatives and Experiments
      6. Further Reading
    3. Continuous Deployment
      1. How to Use Continuous Deployment
      2. Detecting Deployment Failures
      3. Resolving Deployment Failures
      4. Incremental Releases
      5. Data Migration
      6. Prerequisites
      7. Indicators
      8. Alternatives and Experiments
      9. Further Reading
    4. Evolutionary System Architecture
      1. Are You Really Gonna Need It?
      2. Aim for Simplicity
      3. Controlling Complexity
      4. Refactoring System Architecture
      5. Prerequisites
      6. Indicators
      7. Alternatives and Experiments
      8. Further Reading
  21. 16. Quality
    1. No Bugs
      1. Don’t Play the Bug Blame Game
      2. How to Build Quality In
      3. Fix Bugs Immediately
      4. Testers’ Role
      5. ‘Tude
      6. Questions
      7. Prerequisites
      8. Indicators
      9. Alternatives and Experiments
    2. Blind Spot Discovery
      1. Validated Learning
      2. Exploratory Testing
      3. Chaos Engineering
      4. Penetration Testing and Vulnerability Assessments
      5. Questions
      6. Prerequisites
      7. Indicators
      8. Alternatives and Experiments
    3. Incident Analysis
      1. The Nature of Failure
      2. Conducting the Analysis
      3. Organizational Learning
      4. Incident Accountability
      5. Questions
      6. Prerequisites
      7. Indicators
      8. Alternatives and Experiments
      9. Further Reading
  22. IV. Optimizing Outcomes
    1. Welcome to the Optimizing Zone
    2. Achieving Optimizing Fluency
  23. 17. Autonomy
    1. Business Expertise
    2. Business Decisions
    3. Accountability and Oversight
    4. Funding
    5. Experiments and Further Reading
  24. 18. Discovery
    1. Validated Learning
    2. Adaptability
    3. Experiments and Further Reading
  25. 19. Into the Future
  26. References
  27. Index
  28. About the Author

Product information

  • Title: The Art of Agile Development, 2nd Edition
  • Author(s): James Shore, Shane Warden
  • Release date: October 2021
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781492080695