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

  • 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

  • Small Releases

    Frequent, small releases help ensure constant communication and tight feedback loops. 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

  • 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