Extreme Programming and Agile Processes

David Laurance / Dennis Mancl

Princeton ACM/IEEE-CS talk
December 19, 2002

Outline

Chaotic software development process

Development process #1: start writing a program, ship it when it is finished

Waterfall software development process

Development process #2: create a team, follow a well-documented process with fixed milestones Typical “waterfall” development process
1) collect and document all of the system requirements
2) produce a set of design documents
3) write code that implements the pieces specified in the design
4) integrate all of the pieces and test to make sure the system satisfies the requirements
5) package the system and ship to the customer

Iterative software development process

Development process #3: analyze a little, design a little, code a little (Boehm “spiral process”)

Methodology

Methodology:  the set of ground rules that a software development team uses to organize their work:

Extreme Programming

Extreme Programming (XP) is a lightweight process
Ground rules:

Some Rules of Extreme Programming

Planning rules Design rules Coding rules Testing rules

Information on XP

Books: Web sites:

A day in the life of an XP developer

First thing in the morning: developer attends a stand-up meeting with the rest of the team (10-15 min) Developer and partner sit together and do the development work for the task Developer goes home at 5:00 (no overtime)

Planning an XP project

User Stories “Planning Game”

Planning an XP project

Examples of User Stories

see http://www.c2.com/cgi/wiki?UserStoryExamples

Pair Programming

One important practice in XP:  all code is reviewed as it is written

Pair Programming Experiences

“It’s sometimes harder work, because my partner makes me justify everything that’s unclear or disagreeable.”
“It doesn’t seem to me that we’re productive at the time…but when we get done, we find that we’ve written a great deal of code that we understand and like.”
“I've had the pleasure to experience such a successful partnership when my co-programmer and I have been on the same wavelength… However, I've also experienced the other end of the spectrum where my co-programmer has been a silent partner.”

Pair Programming Problems

Some people would rather work alone Novice programmers slow down experts “It’s too expensive”

XP Challenge:

How can you align individual interests?

Is XP for everyone?

XP has four important values: Industry experience says:

Agile Processes

“Agile” is a generalization of XP
Examples of agile processes:

Agile Manifesto

We are uncovering better ways of developing software by doing it and helping others do it.  Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Agile Alliance:  http://www.agilealliance.org

Agile principles

Agile software development follows a small number of basic principles:

Agile characteristics

Most of the agile processes are “controlled chaos”:

Agile versus XP

Most agile process are less radical than XP:

Which agile process?

Scrum Adapt existing processes Crystal Clear

Books on Agile Processes

Web sites on Agile Processes

Summary

XP: a radical software methodology for small teams Agile processes