eXtreme Programming

eXtreme programming (XP) is the most popular of the software engineering methods that incorporate Agile philosophy and methodologies. It describes a set of software development methods and practices that support the 5 key values XP espouses:

  1. Communication
  2. Simplicity
  3. Feedback
  4. Courage
  5. Respect

Communication

XP emphasizes the importance for members of the development team to share the same vision as the stakeholders for the initial release of the software product. In traditional development methods such as the Waterfall, the team relies on documentation in the form of a detailed specification to provide this understanding. But XP deemphasizes Big Specifications up front, relying instead of a very detailed description of functionality to be developed in the near term (days or weeks). This description is prepared by the stakeholder's representative (e.g. a product manager) and vetted through intensive discussions between this person and the developer's representative (e.g. a development manager). Development does not begin until there is a shared understanding and agreement on the development objective.

Simplicity

XP believe that simple is better than complex and simpler is better than more complex. The development goal of XP is to minimally meet the product objective without "over engineering" the solution by adding unnecessary code to create functionality that may not be needed. Supporting this philosophy is the practice of refactoring code after it is functionally acceptable, an integral element in the XP software development process.

Feedback

Feedback in the XP development method comes from 3 primary sources:

Stakeholders

The stakeholders' representative is actively involved in reviewing all new features and functionality as soon as engineering believes the software meets the requirements. This process of acceptance testing allows the stakeholder to provide feedback to developers as to whether they met the agreed-upon objective, and if not, why not.

Developers

Each time the stakeholders' representative submits a request for new functionality or features, the development team gets to provide feedback in terms of the time it will take to develop, and any potential inconsistencies or questions they have about the request.

System

Unit tests are fun against the system every time a change is committed to the main code using the practice of Continuous Integration. This way developers get immediate feedback as to whether the new code they produced works and whether it creates conflicts with other parts of the system.

Courage

Many of the practices in XP are counterintuitive and it requires courage on the part of everyone on the team (developers and stakeholders) to stick to the plan. This includes difficult decisions such as focusing on near term requirements without getting overly concerned about how future ones will be implemented. It includes the courage to refactor code when it should be, regardless of how much time went into creating it.

Respect

Respect is an outcome of following the first 4 values. Some respect comes from the structure enforced by XP. For example, because of unit tests, developers can trust and respect their fellow team members won't break the code. Because of the way estimation is done in XP, stakeholders learn to calibrate and trust schedules put forth by engineering. Some of the trust comes because of the intensity of the cross-functional communication. Stakeholders come to better understand the constraints and challenges of software development and the developers come to better understand the constraints and challenges of the marketplace, more respect and appreciation for each other's unique roles and contribution to their shared endeavor.