Extreme Programming (XP) marks a departure from the conventional programming approach. It stresses importance to individuals and interactions over processes and tools, working software over documentation, customer collaboration over contract negotiation, and responding to change over following a plan.
Image Credit: Wikimedia Commons
Extreme Programming leverages the power of simplicity. The design resembles a jigsaw puzzle with developers working on many small pieces or iterations. The combination of such iterations at the end gives the end product. This approach creates working software faster with very few defects. Regular testing at the development stage ensures detection of all bugs, and the use of customer approved validation tests to determine the successful completion of a coding block ensures implementation of only what the customer wants and nothing more.
One advantage of this approach is allowing for cost estimates-based software features instead of developer activity. This allows customers to make intelligent decisions on what needs inclusion and what needs exclusion depending on the budget. By selecting the important requirement first, the customer obtains maximum value with the least amount spent, and this can effect a trade-off on the marginal increase in product utility with the cost to incorporate additional features. This approach also allows both the user and the customer to "pull the plug" on development at almost any time and still have highly valuable functional code, even if incomplete.
The traditional approach of programming works best when requirements remain static. In actual life, requirements keep changing either because of emergence of new business opportunities or simply because the initial requirement-gathering phase was incomplete. Extreme Programming in-builds accommodation of such changed requirements through getting user stories at the start of iterations, and through feedback during the course of iterations.
Extreme Programming trims unproductive activities to reduce costs and frustration of everyone involved. It allows developers to focus on coding instead of wasting time on needless paperwork and meetings and does away with the need for separate testers.
The cost of making changes increases as the software advances in its life cycle, with the cost of making changes after delivery anywhere between 5 and 100 times more than the costs of making a change at the design stage. Conventional programming methods make changes based on customer feedback at the end of the product lifecycle, whereas Extreme Programming allows changes at the development stage.
One of the major advantages of Extreme Programming is that it reduces the risks related to programming. Conventional programming depends a lot on individual ‘superstars’ or critical members in the team. Extreme Programming, by breaking the tasks into modules, spreads the risk and reduces the dependence on any one architect, project manager, or individual coder.
Extreme Programming, while reducing the importance of individuals in the development process, also helps increase employee satisfaction and retention. Extreme Programming is a value-driven approach that sets fixed work time, with little scope for overtime. The breakdown of project scope into subcomponents and the constant customer feedback prevents accumulation of much work to be completed before a tight deadline.
The advantages of Extreme Programming notwithstanding, it has its share of critics.
The biggest disadvantage of Extreme Programming is that it assumes the constant involvement of the customer. Its success depends on data collection at many stages of the development process. Many customers might not be available, and many others might dislike such constant involvement.
Extreme Programming code is a centered approach rather than a design-centered approach, and the lack of proper documentation creates problems in large products when project members leave and new members come in later.
- Jarvis, Bob & Gridstock, Steven. Extreme Programing (XP), Six Sigma and CMMI How they can work together. https://www.sei.cmu.edu/library/assets/jarvis-gristock.pdf
- Hutagalung, Wilfrid. Extreme Programming. https://www.umsl.edu/~sauterv/analysis/f06Papers/Hutagalung/
- Emery, Patrick. The Dangers of Extreme Programming. https://members.cox.net/cobbler/XPDangers.htm