Practice
Naming Things
It is hard to overestimate the importance of choosing good names for source code elements in software development. Much has been written on this topic, and it is often a source of great debate. … Read more
Dependency Injection
Need content here. Read more
Code Readability
Code should be readable by humans first, and then only incidentally by computers, second. Any idiot can write code a machine can understand, but good software developers can write code that is … Read more
Know Where You Are Going
Don't just code with blinders on - understand how what you're building will be used and the problems it's meant to solve. Read more
Dogfooding
Dogfooding is short for "Eating your own dog food," which represents the practice of using your own products. For software developers, that means working with, as a real user, the applications … Read more
Whole Team Activity
Software development is a whole team activity - avoid silos and barriers to communication. Extreme Programming introduced the idea of the Whole Team, which includes business representatives, … Read more
Read the Manual
A great deal of the time, software developers can mostly figure things out by just trying things, and seeing what fits. Maybe it's a matter of trying different combinations until the compile … Read more
Shipping Is A Feature
Never lose sight of the fact that until you ship your product, it is not providing value to anybody. Joel Spolsky put it well when he wrote:
A 50%-good solution that people actually have solves … Read more
Sustainable Pace
Software developers should rarely be made to work more than 40 hour weeks, and if one week does require overtime, the next one certainly should not. This helps to maintain programmer welfare and … Read more
System Metaphor
A metaphor that everyone (whole team, customers, management, stakeholders) agrees on for how the system works. Read more
Simple Design
If a given problem can be solved in more than one way, choose the one that is simplest today. Also, refactor code to simplify its design whenever possible. Read more
Collective Code Ownership
Everyone is responsible for all of the code. Makes pair programming and design improvement possible. Read more
Coding Standard
Helps to ensure shared understanding within an XP team. Read more
Small Releases
Frequent, small releases help ensure constant communication and tight feedback loops. Read more
Design Improvement
An XP Practice. Read more
Continuous Integration
Continuous Integration is an XP practice that ensures problems with the full system are detected as soon after they are introduced as possible. Read more
Whole Team
An XP Practice. Read more
Test Driven Development
Test Driven Development, or TDD. Read more
Planning Game
A practice of XP and Agile Teams. Read more
Pair Programming
Pair Programming refers to the practice of having two people engaged together on a single programming task. It's an XP practice, and is employed by many agile (and non-agile) software … Read more