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.
The fact is: Software developers today are really designers and not coders.
The reason that business anlaysts exist today to model solutions is because they understand the value of designing software before writing it.
All too often developers create code that has little value because they do not understand that business classes interact with other classes within the confines of a working model or pattern.