Extreme Programming

One of the Agile Software Development methodologies.

"SoftwareDevelopment with all the dials turned up to 10 (or 11)".



Largely credited to Kent Beck, Ron Jeffries, and Ward Cunningham

WikiWikiWeb:ExtremeProgramming, WikiWikiWeb:ExtremeProgrammingRoadmap

One of the assumptions behind XP is that "recent" development technology changes (e.g. OOP) have made the cost of late-changes much lower than they used to be. Therefore there's less reason to have a complete Big Design Up Front. One area where this is a big question is in changing the design of a Relational Data Base.

Some key practices: Planning Game (WikiWikiWeb:PlanningGame), User Stories, Pair Programming (WikiWikiWeb:PairProgramming), Unit Test, Acceptance Test, Onsite Customer...

Scales of activity (it's possible this is semi-incomplete and inaccurate - the XP crowd changes terms sometimes, so you're never sure if you have the definitive source)

  • Project: Contract issues
  • Release: theoretically could happen after every Iteration. But logistics of roll-out might make this impractical.
  • Iteration: 2-6 calendar weeks of development (it's best to stick to a consistent frequency, that helps build project rhythm), delivering releaseable functionality. Each WikiWikiWeb:ReleasePlan is the outcome of a Planning Game. User Stories are the key input.
  • User Story: "chunk of functionality", deliverable; 1-3 man-weeks. During the Planning Game, the Business team (Onsite Customer) writes it, the Development team estimates (Estimating) the cost, Business rates the priority.
  • Engineering Task: 1-3 man-days each. During an Iteration PlanningGame the programmers write tasks, sign up for them (commit to them), estimate them; the outcome is the Iteration Plan. A programmer works on a single task at a time until it is complete - no Multi Tasking.

Core archetype project: WikiWikiWeb:ChryslerComprehensiveCompensation - WikiWikiWeb:WasChryslerComprehensiveCompensationSuccess

I've been on a few projects now where we've done WikiWikiWeb:ContinuousDatabaseRefactoring from day one with good results. We're not yet to the point where we're running a migration script every development iteration, but we do have a schema validation tool and a data integrity tool that we use to make sure the data model we use in development gets matched in production. -- Ken Mac Leod 14Nov2002

Edited:    |       |    Search Twitter for discussion