oriented approach to software development. The process is described in
rowed from other processes. My intuition is that the methodology will prove
to be highly effective at combating antipatterns. Here are some of the key
rules of extreme programming:
Choose simple solutions. Extreme programming advocates the simplest
solution that will work, because of the ease of development and mainte-
nance. Simple solutions are much less likely to create antipatterns, or to
hide the ones that already exist.
Ensure that the customers are on site. Throughout the programming cycle,
end users should be available to provide guidance, insight, and opinions.
Write user stories. These serve the same purpose as the use case. They are
a few sentences of text, written by the users.
Divide larger projects into measured, planned, small releases. Smaller
cycles result in user feedback, diminished risk, and adaptability to
change. Small cycles also allow antipatterns to be found and refactored
sooner, through more frequent code examination at every cycle.
Refactor early and often. Refactoring involves redesigning solutions in
order to improve readability or design and remove redundancy or
unused code. Extreme programming operates under the philosophy that
refactoring is a wise investment. Refactoring helps eliminate antipatterns.
Program in pairs. This practice seems wasteful but has tremendous
power. Pair programming improves quality and reduces tunnel vision.
Antipatterns are more likely to be spotted with an extra set of eyes.
Code test cases before the rest of the system. This practice helps to flesh out
the requirements and ensures that new classes will meet specifications.
Do not use overtime. This is probably one of the most useful—and least
used—ideas in extreme programming. Overtime increases available
hours and reduces clear thinking, with predictable results.
Extreme programming also introduces other practices that are not outlined
here. The methodology is garnering strong momentum among developers. I
used many extreme programming practices at allmystuff and endorse them
heartily. Such excitement and promise from a new methodology that actually
simplifies the development process is promising, and many of the practices
build a culture of teamwork and merciless refactoring that can thwart antipat-
terns before they start.