Extreme Programming
Extreme Programming
Programming
Daniel Baranowski
3/29/06
What is Extreme Programming?
An agile development methodology
Created by Kent Beck in the mid 1990’s
A set of 12 key practices taken to their
“extremes”
A mindset for developers and customers
A religion?
What is agile?
Any methodology that subscribes to the 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:
Customer availability
Is planning this often necessary?
2- Small Releases
Small in terms of functionality
Less functionality means releases happen
more frequently
Support the planning game
Small Releases – Advantages
Frequent feedback
Tracking
Reduce chance of overall project slippage
Small Releases – Disadvantages
http://www.cenqua.com/pairon/
Many tasks really don’t require two
programmers
A hard sell to the customers
Not for everyone
8 – Collective Ownership
The idea that all developers own all of the
code
Enables refactoring
Collective Ownership – Advantages
Loss of accountability
Limitation to how much of a large system
that an individual can practically “own”
9 – Continuous Integration
New features and changes are worked
into the system immediately
Code is not worked on without being
integrated for more than a day
Continuous Integration -
Advantages
Reduces to lengthy process
Enables the Small Releases practice
Continuous Integration –
Disadvantages
The one day limit is not always practical
Reduces the importance of a well-thought-
out architecture
10 – 40-Hour Week
The work week should be limited to 40
hours
Regular overtime is a symptom of a
problem and not a long term solution
40-Hour Week – Advantage
Most developers lose effectiveness past
40-Hours
Value is placed on the developers well-
being
Management is forced to find real
solutions
40-Hour Week - Disadvantages
The underlying principle is flawed
40-Hours is a magic number
Some may like to work more than 40-
Hours
11 – On-Site Customer
Just like the title says!
Acts to “steer” the project
Gives quick and continuous feedback to
the development team
On-Site Customer – Advantages