eXtreme Programming (also known as “XP”) is one of the most popular software engineering methods originally introduced in the 1990’s. While many organizations have chosen to utilize “Agile” or “Scrum” as the main buzzword today to describe iterative and incremental development, XP seems to have become less and less understood over the past few years. Many organizations have come to assume that “XP” is synonymous with pair-programming, which not entirely accurate; pair-programming may have become one of the main distinguishing characteristics of XP, but it is only one of the twelve practices that this methodology encompasses. So which of these practices are still important and relevant today? Let explore a few.
Key Practice #1 – Pair Programming
One of the most unique traits of XP is the practice of pair-programming, where two (and possibly more) engineers work side-by-side to develop code together. This approach is designed to optimize quality due to the built-in validation mechanism that is expected between two engineers which contribute to a single unit of code. While some organizations embrace this technique, this approach will require careful selection of partners to ensure maximum effectiveness. Culturally, there may also be a need to educate leadership folks who may not understand the value and see this as increased overhead/cost.
Key Practice #2 – Planning Game
XP receives credit for introducing a different approach to planning work through planning small batches of work frequently and through a consistent schedule. This was a precursor to what many of us know as “Sprint Planning” or “Iteration Planning” today within Scrum or other Agile approaches. Planning iteratively and applying a popular technique called “user stories” is one of the most important aspects of XP that has trickled down to Scrum, the most popular Agile method in the world today.
Key Practice #3 – Continuous Process
The practice of integrating code regularly and releasing the code on a cadence has been recently popularized by the movement also known as “DevOps” originated the XP practices. Building code iteratively and releasing frequently enables the team to assess state of the product and resolve issues as early and often as possible which ultimately leads to higher overall quality in the end.
Key Practice #4 – Coding Standards
One of the most important and often forgotten practices amongst new Agile teams is the concept of coding standards. If a team of engineers do not construct a common set of rules, the end product will suffer a lack of consistency and increase the likelihood of technical debt as well as defects.
Key Practice #5 – Sustainable Pace
One of the key tenets of Agile Manifesto is to respect work-life balance for teams and encourage sustainable development, which enhances morale as well as product quality. XP reinforces this value in order to maximize team effectiveness.
Key Practice #6 – Test Driven Development (TDD)
XP states that unit tests must be written prior to code, which is a practice that many organizations are not accustomed to. TDD enhances code quality because it requires a test to be written which means that code will always pass the test before it is submitted and integrated with the work from other members of the team.
To wrap up this brief article, eXtreme Programming offers a collection of software engineering practices that can benefit most software teams. XP is aligned with Agile principles and can position your team for more structured approach for delivery of software solutions such as Scrum or Scaled Agile Framework. My recommendation is to start with one or two of the practices and incrementally build on the small successes.