"Extreme Programming is a discipline of software development
based on values of simplicity, communication, feedback, and
courage. It works by bringing the whole team together in the
presence of simple practices, with enough feedback to enable
the team to see where they are and to tune the practices to
their unique situation."
There are 13 core practices in XP.
-
Whole Team:
XP centers around the "whole team", with the
customer being the business representative who sits with the
team daily.
-
Planning Game:
The customer presents the desired features to the
programmers, they estimate how long it takes to complete.
The customer then plans what goes in the release.
An iteration is performed every 1-2 weeks, and the
programmers present to the customer what they can
complete. The customer decides what goes in each
iteration. Each iteration is a working version of the code.
-
Customer Tests:
The customer defines tests that prove to them that the
system is working. The programmers write these and run
them (they are automated) to prove the release is working.
-
Small Releases:
Every iteration works. The team also releases to the end
users frequently.
-
Simple Design:
Design is continual, not just up front. Through unit
testing and refactoring, the design is kept simple and
improved continually.
-
Pair Programming:
Programming takes place in pairs. Improves code,
communication, and training.
-
Test-driven Development:
Write tests first. Run them before code is checked in,
and every time it is updated.
Here is an excellent example of this.
-
Design Improvement:
Code is refactored. Increase cohesion, lower coupling. We'll look at
some refactoring examples soon.
-
Continuous Integration:
Multiple builds a day. Cuts down on integration problems.
-
Collective Code Ownership:
Everyone owns all the code. Anyone can change any code.
Prevents programmers from putting functionality in the
wrong place.
-
Coding Standard:
Team follows a common coding standard
-
Metaphor:
A common description of the program, and a common system
of names. Everyone should understand how the system works
and where the code should go for new features.
-
Sustainable Pace:
Minimize overtime. In general, this means no overtime two
weeks in a row. (40 hour work week)


