software development methodology

Software Development Methodology – Extreme Programming

A software development methodology, Extreme Programming (XP) is one of the most important software development framework of Agile models designed to improve the quality of software and its ability to be responsive to client/customer requirements.It has already been proven to be very successful in IT companies and other industries, worldwide.

Extreme Programming’s development goes all the way back in the 90s when Software Engineer Ken Beck introduced XP to find ways in writing high-qualitative software quickly and being able to adapt to customers’ changing requirements. In 1999, he refined XP approaches in the book Extreme Programming Explained: Embrace Change.

man thinking about technologies

Source: CBT Nuggets

Tl; dr;

An agile methodology, Extreme programming (XP) is considered to be one of the most effective in software development, operating with a test-first development scheme.

Managers, customers, and developers are all equal partners in a collaborative team. The team self-organizes around the problem to efficiently solve it as possible.

The customer’s involvement here is higher than in any other agile methodology, being an active member of the team throughout the project life cycle.

Introduction to Extreme Programming

extreme programming workflow

Source: freeCodeCamp

Extreme Programming empowers developers to confidently respond to changing customer requirements, even late in the life cycle. It implements a simple, yet effective environment that enables teams to become highly productive.

This software development framework recommends taking the best practices that have work well in the past in program development projects to extreme levels.

In XP, daily meetings also known as stand-ups that lasts up to 15 minutes. During these meetings, goals are introduced and collaborated with the team. But, at the end of each cycle, there is a longer meeting where the project velocity is measured.

Extreme Programming’s Values

XP’s simple rules are based on 5 values that will help the team work faster and attain effective collaboration. Each of these key values provides a strong impact in the work flow.

  • Communication. Teams work jointly at every stage of the project and keep all members updated. Any problems or concerns are addressed immediately. Face to face discussion with the aid of a white board is just one of the best examples.
  • Simplicity. In order to save time and effort, developers tend to write simple code to bring more value to a product. This principle avoids waste and do only things that are essentially necessary to keep design systems simple as possible for easier maintenance, support, and revision.
  • Feedback. Team members, through having constant feedback about their previous efforts, can identify what certain areas are in need of improvement and revise their practices.
  • Courage. Having no “white lies,” team members evaluate their own results objectively without any excuse. Also, they always respond to changes.
  • Respect. Every team member assigned to a project contributes to a common goal with openness to communicate, provide and accept feedback on each other.

Extreme Programming Team Players

The XP team size varies from a small number of five people up to 12. With the complexity and high velocity of work, they are in frequent verbal communication.

The customer:

  • Sets the rules (i.e. priorities, functional tests, and user stories); and
  • Has regular meetings with the tracker in order to keep them well-informed about project progress.

The tracker:

  • Like a manager, the tracker takes responsibility in supporting the team and make sure the project’s development is on the right track.

The programmer:

  • Implements customer’s requirements for the project; and
  • Defines tasks; and
  • Estimates workloads in relevance to the user stories.

The tester:

  • Carries out trials of the code;
  • Analyzes graphs; and
  • Reports the results to the rest of the team.

The coach:

  • Arranges daily and weekly meetings; and
  • Typically responsible for disseminating valuable information to the tracker.

Advantages of Extreme Programming

  • Transparency. Visible communication within teams help everyone to keep up with the project progress. Everyone works on each individual tasks, yet regular meetings record the improvement collectively.
  • Cost Efficiency. Having reduced feedback loops and so does the cost of change. Compare to other methodologies, changes are implemented through the development period.
  • Teamwork. As team members work hard to accomplish goals within tight deadlines. They support one another through the entire project. Pair programming gathers them in groups of two, sharing ideas and creating software side by side.

Disadvantages of Extreme Programming

  • Code compromise design. The ultimate focus of XP is the code versus the design. What sells the application is the design. So if code overcomes the design, well the customer could be unhappy with the product if the design is not good enough.
  • Location. Extreme Programming projects are difficult to attain when the customer is away from the developmental team. XP interactions are typically successful when team members meet face to face.
  • Lack of documentation. Constant changes cannot be properly documented. There are risks of unexpected failures that cannot be tracked.
  • Stress. Having a lot of pressure in working on tight deadlines. If team members develop high stress levels in completing tasks on time, they are most probably prone in committing mistakes with details concerning the project.

Summary

Extreme Programming (XP) is a methodology that allows companies especially IT companies to save costs and time required to accomplish a certain project.

It has 5 values namely: communication, simplicity, feedback, respect and courage.

XP is cost-efficient, requires teamwork to accomplish tasks within project development, and communicably transparent. While its downside is stress, location, lack of documentation, and code overcomes design.

If you enjoy reading about software development methodologies, let’s take a look at other blog posts.

Software Development Methodology – Scrum

Software Development Methodology – Kanban

Software Development Methodology – Lean

Software Development Methodology – Dynamic Systems Development Method (DSDM)

Software Development Methodology – Feature Driven Development (FDD)

Software Development Methodology – Crystal

By Tuan Nguyen