Extreme Programming (XP)
Extreme Programming (XP) is a process of Agile Development. Rather than a set of static processes, XP serves as an ethos created to increase productivity, and ensure the production of high-quality code.
The concepts of Extreme Programming are outlined by a simple set of rules related to five phases of software development:
Since its beginnings in 1996, the concepts and principles of extreme programming such as communal code ownership are now standards for improving software development.
The Rules of Extreme Programming: this simple set of rules defines the practice of extreme programming.
The Values of Extreme Programming: these values describe the underlying philosophy behind the practice of extreme programming.
The Extreme Programming Project was born out of the ashes of the Chrysler Comprehensive Compensation System (C3), a payroll project at Chrysler spanning from 1993 to 1999.
The practice of Extreme Programming was defined by the approach implemented by the C3 development team. There were a number of influential software engineers that were responsible for shaping XP, including:
Kent Beck: the creator of XP, and the lead software engineer at C3.
Don Wells: he is a leader in the field of artificial intelligence and a champion of XP.
Martin Fowler: software engineer, consultant, speaker, and writer. His website will lead you to lots of good content on the subject of XP and Agile Development.
The Birth of Extreme Programming at Chrysler
Kent Beck coined the term "Extreme Programming" as a way to describe the methodology and practices used by the software engineers on the C3 project.
When Kent Beck was hired on as the lead developer of the C3 project in 1996, three years into the project, the program still didn't work. Despite over two more years of development time, and millions of dollars in costs, the C3 project was discontinued in 1999.
But, it was the C3 project's early success that sparked the rise of XP. The real breakthrough was the C3 team's ability to increase productivity — and code quality — by implementing principles of hardware manufacturing, ie Lean manufacturing, to the process of software development.
According to Martin Fowler:
The project began some serious development work, in Smalltalk, in 1995, but was not able to reach a stable state and was restarted under Kent Beck's lead in 1996. It was this rebooted project that first pulled together all the practices that became known as Extreme Programming (although Kent had used similar approaches on previous projects.)
Members of the C3 project continued to develop the XP project after the end of the C3 project was announced in 1999. XP as an ideology slowly gained traction over the next two decades. It's methods and principles would go on to be adopted by leaders in the software development community across the globe.
Extreme Programming 20 Years Later by Kent Beck: the creator of extreme programming speaks at the Lean IT Summit about the history of XP, and how it's changed since the beginning.
Agile Manifesto: this historically significant framework was part of a movement to create a set of criteria to improve software development methods. This manifesto is one of the most successful guides for software engineering.
Chrysler Comprehensive Compensation System (C3): this article outlines the details of the Chrysler C3 project, a payroll software development project that spawned the birth of Extreme Programming.
SmallTalk: this paper gives you an overview of the SmallTalk computer language, which played an important role in the story of software engineering, and XP.
The Vehicle Cost and Profit System (VCAPS): was a software project at Ford Motor Company that was improved due to the adoption of XP methodology.
Test Driven Development (TDD): TDD is central to XP. Learn about it here from Agile Aliance.
The links below will take you to resources related to Extreme Programming. We collected a variety of links to important websites, books, and community portals where you can learn more.
A Gentle Introduction to Extreme Programming: this is a simple yet thorough explanation of XP written by one of it's founders, Don Wells.
Agile Process: another gentle introduction to a heavy concept written by Don Wells.
Refactoring: refactoring is an important core skill of Agile Development. This website has explanations, exercises, and links to more resources.
XP123: this site has essays on XP, Agile, Lean, Scrum, and related topics.
Practices of Extreme Programming: learn about the central practices of extreme programming.
The Principles of Agile Development: this gives you a broad view on the basic concepts of Agile Development.
Pair Programming: This is one of the most important aspects of extreme programming is pair programming.
Extreme Programming Live: a live demonstration of extreme programming in action.
Extreme Programming Explained: Embrace Change (1999) by Kent Beck
Extreme Programming Installed (2000) by Ron Jeffries, et al
Extreme Programming Pocket Guide (2003) by chromatic
Test Driven Development (2002) by Kent Beck
User Stories Applied (2004) by Mike Cohn
Xp/Agile Universe (2004) by Carmen Zannier, et al.
Communities and Classes
Extreme Programming: Don Wells' website has a wealth of information on XP.
Lean IT summit: an annual conference on applying the principles of Lean manufacturing to software engineering.
Hendrix On XP: this site has information on classes taught by masters in their field.
Thoughtworks: thoughtworks events feature presentations given by some of the most influential minds in the field.
Industrial Logic: an Agile consulting agency that specializes in teaching the fundamental principles of Agile.
XP Continues to Leave Its Mark
The principles and values introduced by extreme programming revolutionized software development. Many of today's best practices derived from the practice of XP.
While the practice of extreme programming has evolved over time and methodology may vary from project to project, the core concepts remain the same.
XP emphasizes test driven development, extensive code review, constant feedback, collaboration, and accountability. Even if the term "Extreme Programming" dies out, the imprint of its influence continues to iterate in today's best industry practices and standards.
Further Reading and Resources
We have more guides, tutorials, and infographics related to coding and development:
Smalltalk Programming Resources: our general introduction and resource list for the Smalltalk programming language.
Scratch Resources: learn about this teaching language built with Smalltalk.
Object-Oriented Programming: this introduction discusses the large number of language options you have when doing object-oriented programming.
What Code Should You Learn?
Confused about what programming language you should learn to code in? Check out our infographic, What Code Should You Learn?
It not only discusses different aspects of the languages, it answers important questions such as, "How much money will I make programming Java for a living?"