Extreme Programming

Rajkiran Bande
5 min readMar 4, 2018

--

Modern software development is based on one or the other Agile Methodologies. There are several Agile methodologies which have their own pros and cons. @ThoughtWorks we follow “eXtreme Programming” Agile methodology for the projects we work on. Let us find out how it benefits us and what it takes to become an XPert.

Source: Version One Agile Methodolgogies

When to XP?

Though XP has proved to be beneficial, one should know the whens and wheres before they want to adopt XP. The general characteristics of XP were described by Don Wells.

  • Dynamically changing software requirements
  • Risks caused by fixed time projects using new technology
  • Small, co-located extended development team
  • The technology you are using allows for automated unit and functional tests

What value will it add?

The key values of XP are Communication, Simplicity, Feedback, Courage, and Respect. Let’s have a look at them in more detail.

  • Communication
    Extreme Programming emphasises on teamwork. Communication is an important aspect when we are working as a team. It needs to happen on daily basis and it can involve daily meetings with the key stakeholders, knowledge transfer, status updates, requirement gathering, etc.
    F2F discussions play a key role in this. Pair programming (discussed later) ensures the communication happens at the lowest possible level.
  • Simplicity
    Simplicity urges to focus on what has been asked than predicting the future. This also helps in taking small baby steps towards solving a larger problem. While designing the solution to the problem one should keep in mind the KISS principle (Keep It Simple, Stupid! or Keep It Short and Simple). While developing the designed solution, just develop what is currently required than assuming that this is going to scale in future, i.e. YAGNI — You Aren’t Gonna Need It!
  • Feedback
    Feedback involves communication at regular intervals with your team and client. It can be your pair reviewing your code or it can be your client who is providing the inputs on the piece of software you showcased. This is how feedback typically works at different stages of the software development lifecycle.
Source: Wikipedia
  • Courage
    One should tell the truth about their progress and estimates. One should also accumulate courage to raise the issues that are harmful to the team. Courage teaches us how to succeed according to the plan, rather than documenting the reasons for the failure.
  • Respect
    Respect value is about seeking respect from the team members as well as self-respect. When working in a team, every individual should respect the other team member irrespective of their role in the project or the work experience tag they are carrying. It also involves respect towards others’ time e.g. developers shouldn’t commit breaking changes. If at all something fails, they should fix or revert that first in order to unblock other team members.

How to become an XPert?

So now you feel even your project needs to follow Extreme Programming. Let’s see now how to go about it.

The Key to the Extreme Programming success is shorter development cycles. Shorter development cycles help to get faster feedback and a better idea of customer satisfaction. This helps in delivering software as per the needs than developing the entire software and then making changes according to the feedback.

Extreme Programming is effective when certain software practices are followed. While there are many additions to the list of these practices, some of the key practices are-

  • Pair Programming
    Pair programming involves two developers working together on a single workstation, with one keyboard and mouse, one screen. While one writes the code, the other reviews the code real time and makes sure the solution they are heading towards is correct.
Source: Wikipedia
  • The Planning Game
    The primary purpose of the Planning Game is to guide the product into delivery. Instead of predicting the exact dates of when deliverables will be needed, it aims to steer the project into delivery using a straightforward approach.
    Planning Game involves meetings like iteration planning, release planning.
  • Continuous Integration
    The idea is the entire team works on the latest source code which is continuously tested on every code check-in. This assures project integrity and gives a confidence that the source code is in deployable state at all times. While there are many CI solutions, we have used Go CI in our recent projects which is an open source initiative sponsored by ThoughtWorks®.
Source: Carnegie Mellon University
  • Small Releases
    Small and frequent releases give the confidence to the team as well as the client about the direction in which the software is being developed. It also shows the true status of whatever has been developed at a given point.
  • Testing
    It is highly encouraged that you write the test first and then the supporting code (aka TDD) which assures that your entire code is well supported by Unit/Integration tests. This gives you a greater confidence in software quality.
  • Refactoring
    As the source grows, you should refactor the code as soon as you see code smells. There are various refactoring techniques which help you in better shaping your source code.
  • Collective Ownership
    Collective ownership is all about teamwork. The idea is everyone owns the responsibility for every single line of code, thus everyone can change any part of the code. It also means that any failures highlighted in the Continuous Integration phase should also be owned by the entire team and fixed on priority.
  • Coding Standard
    Coding standards are protocols that need to be followed by the entire team during the development phase. It ensures that the code is readable to the entire team and is consistently styled.

While this article covers the main crux of the Extreme Programming agile methodology, it is difficult to touch on all the facets of it. So it is highly recommended to go through www.extremeprogramming.org for better comprehension on Extreme Programming.

If you find this article helpful, please Clap, Comment and Share this article.

--

--