The Art of Agile Development

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

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

Author(s): James Shore, Shane Warden
Edition: 2
Publisher: O'Reilly Media
Year: 2021

Language: English
Commentary: Vector PDF
Pages: 540
City: Sebastopol, CA
Tags: DevOps; Management; Design; Agile; Continuous Integration; Collaboration; Planning; Continuous Deployment; Teamwork; Product Ownership; Stakeholders

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