Extreme Programming: Solution or hoax?
Some people behave as if XP is the solution to every software development problem, and some people behave as if it's a hoax, something that isn't appropriate in any software development situation. Of course, the truth is somewhere in between, but if you have a discussion with either the XP or anti-XP zealots, you're likely to walk away with a rather distorted vision of what XP really means.
I don't have the space here to confront all the misconceptions of XP that I encounter, but misconceptions are almost always inconsistent with XP's underlying values. So if you understand the values, misconceptions become easy to spot. XP expresses its values in a variety of ways, including statements of rights for the various participants. Any XP project should be consistent with these rights. Note that specific time frames may vary from project to project.
Customer rights
The customer has the right to plan on a large scale with costs and options.
The customer has the right to set development priorities weekly.
The customer has the right to see progress in the form of a working system at the end of the first week, and to see a little more functionality every week thereafter.
The customer has the right to updates of the schedule, good or bad, as soon as the information is available.
The customer has the right to change his/her mind without paying exorbitant costs.
Programmer rights
The programmer has the right to estimate work and have those estimates respected by the rest of the team.
The programmer has the right to honestly report progress.The programmer has the right to produce high-quality work at all times.The programmer has the right to know what is most important to work on next.The programmer has the right to ask business-oriented questions whenever they arise.
Manager rights
The manager has the right to an overall estimate of costs and results, recognising that reality will be different.
The manager has the right to move people between projects without paying exorbitant costs.The manager has the right to monthly updates of progress, and to help the customer set overall priorities.
The manager has the right to cancel the project and be left with a working system reflecting the investment to date.
Any project that denies these rights isn't really an XP project, regardless of whatever label is attached to it.
Talkback
I have been programming, on various sized machines, since 1968. The tools have changed a lot in the intervening years, but the goals and techniques of producing economical, cost-effecient code have not. Read "The Mythical Man Month" for a good intro into how to produce good value for your programming dollars. The phrase Extreme Programming is just the latest slang for good techniques. It brings to mind other slang terms, phat being one. However, every generation seems to need to relearn those methods that work well. I also feel that, particularly in applications programming, writing code is just another form of communication with another human. If you are not so good at relating/communicating to other folks, you won't turn out particularly good programs/systems either. This applies especially to those of us who are down in the trenches, earning our bread and butter at some obscure shop and who may not be the genius kid hacker that we hear too much about. I often wonder though, what would we be doing had the computer not been invented?