What is 'Extreme Programming'?
Extreme Programming (also known as XP) is an approach to software development that is really not quite as extreme as it sounds. It may have sounded radical when it was first introduced in the mid 1990s, particularly in the face of practitioners who were used to more traditional software development.
One of the central philosophies of extreme programming is to accept from the start that a project is not going to get it right first time. Software is difficult to specify and customers are difficult to understand. And most importantly, requirements change during the lifetime of the project. Therefore, extreme programming advocates an iterative approach in which the customer is frequently invited to provide feedback. It also advocates unit testing of code from the outset, and the maintenance of a clean code-base. Bugs should be fixed as soon as they are found, rather than deferring them until some later phase of the project.
Another idea used in extreme programming is that of pair programming. It has been found that programmers can be still be productive, and write code of significantly higher quality, when working in pairs. Using this approach, designs and patterns are first discussed, then one person programs at the computer and the other watches over the shoulder and does a code review in real time. After a while the developers swap roles, and the "design a little, code a little, test a little" cycle continues.