Extreme Programming (XP) was proposed by Kent Beck in 1996. It is a type of agile software development process, and it encourages software development starting with the simplest solution. The extra functionalities are added later on, and the results are improved by constant refactorings. As such, refactoring is an essential technique in XP.
The main difference from other traditional methodologies is that it emphasizes adaptability instead of predictability. XP advocates believe that on the fly changes in requirements are natural, inevitable and even desirable in software development. They believe that being able to adapt to changing requirements at any point in the lifecycle of the project is a better and more realistic approach than trying to define all requirements at the beginning of the project and then make efforts to monitor changes in the requirements.
Extreme programming takes the best practices of software development methodologies according to the specific project needs and implement them dynamically during the software lifecycle.
The main grounds of XP are: communication, simplicity, feedback, respect and courage.