Extreme programming is a software development methodology intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates frequent releases in short development cycles, intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.
Kent Beck developed extreme programming during his work on the Chrysler Comprehensive Compensation System payroll project. Beck became the project leader in March 1996, where he began to refine the development methodology used in the project and eventually wrote a book on the methodology titled Extreme Programming Explained in October 1999.
Related Stories
Get the Latest Sports News from Seymour's Bird
Receive the latest updates on football, basketball,and technology news directly in your inbox. It's free!
SubscribeThe methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to extreme levels. For example, code reviews are considered a beneficial practice, but taken to the extreme, code can be reviewed continuously through the practice of pair programming.
Two major influences shaped software development in the 1990s, notably rapidly changing requirements that demanded shorter product life-cycles and often clashed with traditional methods of software development. These industry shifts created the perfect environment for alternative lightweight methodologies to take root and transform the tech landscape.
Core Values and Practices of Extreme Programming
Extreme programming initially recognized four core values in 1999, which included communication, simplicity, feedback, and courage. A new value focused on respect was later added in the second edition of Extreme Programming Explained to further guide team collaboration and individual responsibility.
XP describes four basic activities that are performed within the software development process: coding, testing, listening, and designing. Proponents argue that the only truly important product of the system development process is code, which acts as the ultimate medium for solving complex technical problems.
Testing remains central to extreme programming philosophy, operating under the principle that if a little testing can eliminate a few flaws, extensive testing can eliminate many more. Automated unit tests validate the operation of small sections of code rather than waiting to test larger features at the very end.
Simplicity drives the architectural choices in extreme programming through the adoption of the approach that developers should design and code only for the needs of today. This method helps teams avoid spending valuable resources on uncertain future requirements that might change before they ever become relevant.