The planning game: Quickly determine the scope of the next release by combining business priorities and technical estimates.
As reality overtakes the plan, update the plan.
Small releases: Put a simple system into production quickly, then release new versions on a very short cycle.
Metaphor: Guide all development with a simple shared story of how the whole system works.
Simple design: The system should be designed as simply as possible at any given moment. Extra complexity is removed as
soon as it is discovered.
Testing: Programmers continually write unit tests, which must run flawlessly for development to continue. Customers write
tests demonstrating that features are finished.
Refactoring: Programmers restructure the system without changing its behavior to remove duplication, improve
communication, simplify, or add flexibility.
Pair programming: All production code is written with two programmers at one machine.
Collective ownership: Anyone can change any code anywhere in the system at any time.
Continuous integration: Integrate and build the system many times a day, every time a task is completed.
40-hour week: Work no more than 40 hours a week as a rule. Never work overtime a second week in a row.
On-site customer: Include a real, live user on the team, available full-time to answer questions.
Coding standards: Programmers write all code in accordance with rules emphasizing communication through the code.
I took this from somewhere but I don’t remember where from.