Agile Software: Patterns of Practice

Table of Contents



Agile Software: Patterns of Practice

What Are Patterns?

What is Agility?

Some Key Ideas Explained

A Few Abbreviations

An Agile Development Story (a.k.a. Fairy Tale)

Fundamental Patterns of Agility

Sheltering Manager

Effective Coach


Onsite Customer (Product Owner)

Whole Team

Train Everyone

One Project

Self-Organizing Team

Just Start

Guiding Metaphor  (Topos)

Best Effort 


Planning Game (Sprint Planning Meeting)

Stories (Product Backlog)

Initial Velocity

High Value First 

Deliver Customer Value

Yesterday's Weather

Test First

Executable Tests

Collective Responsibility

Stand Up Meeting (Daily Scrum)

Small Releases (Incremental Development)

Easy Does It (Don't Push Too Hard)

Be Human (Humane Workplace)

Sacred Schedule (Sprint) 

Bug Generates Test

Implementer Estimates Task

Estimate Whole Task

Team Owns Individual Velocities


Promiscuous Programming 

Cards and Whiteboards

Documentation Is Just Another Task

Question Implies Acceptance Test

Re-estimate Periodically

Flexible Velocity

Once And Only Once

Continuous Integration 

Social Tracker

Project Diary

Customer Checks-Off Tasks

Customer Obtains Consensus

Individual Stakeholder Budgets

Simple Design (Incremental Design)

Coding Standard

Collective Ownership (Shared Code)

Ask For More

Graceful Retreat

Do the Simplest Thing That Could Possibly Work (DTSTTCPW)

You Ain't Gonna Need It (YAGNI)

Constant Refactoring

Negotiated Scope Contract

Energized Work

Sustainable Pace

Pair Programming

Common Development Environment

End To End


Test Card

Acceptance Tests

Informative Workspace  (Visible Project Tracker)

Just Do It

Shrinking Teams

Ten Minute Build

My Story

Full Communication


 High Discipline

Our Space

Team Continuity

Relative Estimates

Half A Loaf


Personal Velocity

Offer Alternatives 

Beyond Extreme (Extreme Discipline)

Agility in Large Systems

Think Small

Scrum of Scrums

Grow Up

Interfaces Are Just Another Story 

Architecture Sprint

Agility in Dispersed Development Teams

Local Manager


All Manager Scrum

Virtual Workspace

Multiple Communication Modes

Shorten The Path

Presence Indicator

Grow Out

Customer Tester Pair

Be Together

Face Time


Remote Pair

Single Point Organization

Feature Focused Teams

Rapid Response Teams

Cultural Awareness


Some Speculation

Daily Deployment

Pay Per Use

Clusters of Patterns of Agile Practice 

Advice For Managers

Advice For Customers

Advice For Developers 

Getting Started With Agile Development

How Agility Wins

Additional Resources





Index of Diagrams

Scrum Patterns

Extreme Programming Patterns

Sheltering Manager

Effective Coach

Onsite Customer

Whole Team

Executable Tests

Collective Responsibility

Continuous Integration

Constant Refactoring

Pair Programming

Estimate Whole Task Cluster

Dispersed Agile Development Cluster

Large System Development Cluster


Last Updated: March 3, 2012