Extreme Programming (XP), these practices are also referred to as Agile Engineering Practices, Scrum Developer Practices or simply Agile Programming. It advocates frequent "releases" in short development cycles, which is intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.
As an example, code reviews are considered as a beneficial practice; taken to the extreme, code can be reviewed continuously, i.e. a practice of Pair programming. Extreme programming approach is that if a little testing can eliminate a few flaws, a lot of testing can eliminate many more flaws. Unit tests determines whether a given feature works as intended. A programmer writes as many automated tests as they can think of that might "break" the code; if all tests run successfully, then the coding is complete. Every piece of code that is written is tested before moving on to the next feature. Acceptance tests verify that the requirements are understood by the programmers and satisfy the customers actual requirements.
Principles of XP
The XP solution is simple: Stay flexible, do the Zen thing, and be like water, adjusting your course as required. The principles behind extreme programming are explained as:
Small Releases: The software is developed in small stages that are updated frequently, typically for every two weeks
Metaphor: All members on an XP team use common names and descriptions to guide development and communicate on common terms
Simple Design: The software should include only the code that is necessary to achieve the desired results communicated by the customer at each stage in the process. The emphasis is not on building for future versions of the product
Testing: Testing is done consistently throughout the process. The customer also provides acceptance tests at each stage to ensure that the desired results are achieved
Refactoring: programmers improve the design of the software through every stage of development instead of waiting until the end of the development and going back to correct flaws
Pair Programming: Code is written by a pair of programmers working at the same machine. For developers, XP allows you to focus on coding and avoid needless paperwork and meetings.
Pair Programming provides more social atmosphere, more opportunities to learn new skills and a chance to go home at a decent time each night. It gives you very frequent feelings of achievement and generally allows you to produce code that you feel good about. For the customer (often a Product Manager), XP creates working software faster and that software tends to have very few defects. It allows you to change your mind whenever you need to, with minimal cost and almost no complaint from the developers. For management, XP delivers working software for less money and the software is more likely to do what the end users actually want. It cuts risk in a couple of ways:
It allows you to "pull the plug" on development at almost any time and still have highly valuable code and probably even a valuable working (if incomplete) application.
It reduces your dependence on individual superstars and at the same time can improve employee satisfaction and retention.
Continuous Integration: XP team integrates and builds the software system multiple times per day to keep all the programmers at the same stage of the development process at once.
Fourty - Hour Week: XP team does not work excessive overtime to ensure that the team remains well-rested, alert and effective
Customer Collaboration: XP project is directed by the customer who is available all the time to answer questions, set priorities and determine requirements of the project
Coding Standard: The programmers all write code in the same way. This allows them to work in pairs and to share ownership of the code