Extreme Programming
Extreme Programming
XP: Why?
Previously:
Get all the requirements before starting design Freeze the requirements before starting development Resist changes: they will lengthen schedule Build a change control process to ensure that proposed changes are looked at carefully and no change is made without intense scrutiny Deliver a product that is obsolete on release
Use tools to accommodate change as a natural process Do the simplest thing that could possibly work and refactor mercilessly Emphasize values and principles rather than process
XP Practices
(Source: http://www.xprogramming.com/xpmag/whatisxp.htm)
Team members are programmers, testers, analysts, coach, manager Best XP teams have no specialists
XP Iteration Planning
Two week iterations Customer presents features required Programmers break features down into tasks Team members sign up for tasks Running software at end of each iteration
XP Practices: Metaphor
XP Teams develop a common vision of the system
With or without imagery, define common system of names Ensure everyone understands how the system works, where to look for functionality, or where to add functionality
XP Values
Communication
Simplicity Feedback Courage
XP Values: Communication
Poor communication in software teams is one of the root causes of failure of a project
Stress on good communication between all stakeholders--customers, team members, project managers Customer representative always on site
Paired programming
XP Values: Simplicity
Do the Simplest Thing That Could Possibly Work
Implement a new capability in the simplest possible way Refactor the system to be the simplest possible code with the current feature set
XP Values: Feedback
Always a running system that delivers information about itself in a reliable way
The system and the code provides feedback on the state of development Catalyst for change and an indicator of progress
XP Values: Courage
Projects are people-centric
Creativity of people and not any process that causes a project to succeed
XP Criticism
Unrealistic--programmer centric, not business focused
Detailed specifications are not written
XP Thoughts
The best design is the code.
Testing is good. Write tests before code. Code is complete when it passes tests.
Simple code is better. Write only code that is needed. Reduce complexity and duplication.
Keep code simple. Refactor. Keep iterations short. Constant feedback.