The first eXtreme Programming project was started March 6, 1996. Extreme Programming is one of several popular Agile Processes. It has already been proven to be very successful at many companies of all different sizes and industries worldwide. Extreme Programming is successful because it stresses customer satisfaction. Instead of delivering everything you could possibly want on some date far in the future, this process delivers the software you need as you need it. Extreme Programming empowers your developers to confidently respond to changing customer requirements, even late in the life cycle.
So, are you interested in trying eXtreme Programming with your team? Before you can start, you need to first define and assign the following roles:
Tracker
Goes around a time or two a week, asks each Programmer how she’s doing, listens to the answer, takes action if things seem to be going off track. Actions include suggesting a CRC session, setting up a meeting with Customer, asking Coach or another Programmer to help.
Customer
Writes User Stories and specifies Functional Tests. Sets priorities, explains stories, views CRC sessions. Has authority to decide questions about the stories.
Programmer (Extreme Programmer)
Estimates stories, defines Engineering Tasks from stories, estimates how long stories and tasks will take, implements stories and Unit Tests.
Tester
Implements and runs Functional Tests. Graphs results, makes sure people know when test results decline. (Note: Programmers do their own Unit Tests.)
Manager
Schedules meetings (e.g. Iteration Plan, Commitment Schedule), makes sure the meeting process is followed, records results of meeting for future reporting, passes to Tracker. Goes to meetings, brings back useful information, pays for pizza, keeps the rain off, fills out personnel actions. Does not tell people what to do (Customer and Iteration Plan do that), when to be done (Commitment Schedule), or check to see how they’re doing (Tracker).
Some roles can be combined in the same individual. For example, the same person could have the Manager and Tracker role. Some roles probably should not be combined. Programmer-Tracker, Programmer-Tester, Customer-Programmer, Coach-Tracker are examples. Manager probably shouldn’t combine with anything except Tracker.
Once the roles are defined for eXtreme Programming, then you and your team can start implementing the XP Ceremonies and Practices as listed below:
Planning
User stories are written.
Release planning creates the release schedule.
Make frequent small releases.
The project is divided into iterations.
Iteration planning starts each iteration.
Managing
Give the team a dedicated open work space.
Set a sustainable pace.
A stand up meeting starts each day.
The Project Velocity is measured.
Move people around.
Fix XP when it breaks.
Designing
Simplicity.
Choose a system metaphor.
Use CRC cards for design sessions.
Create spike solutions to reduce risk.
No functionality is added early.
Refactor whenever and wherever possible.
Coding
The customer is always available.
Code must be written to agreed standards.
Code the unit test first.
All production code is pair programmed.
Only one pair integrates code at a time.
Integrate often.
Set up a dedicated integration computer.
Use collective ownership.
Testing
All code must have unit tests.
All code must pass all unit tests before it can
be released.
When a bug is found tests are created.
Acceptance tests are run often and the score
is published.
The picture below from Ron Jeffries site really captures the big picture essence of XP:
Extreme Programming emphasizes teamwork. Managers, customers, and developers are all equal partners in a collaborative team. Extreme Programming implements a simple, yet effective environment enabling teams to become highly productive. The team self-organizes around the problem to solve it as efficiently as possible.