eXtreme Programming

Another software development methodology with its roots in Lean principles, is intended to improve software quality and the way in which we respond to changing customer needs.

Due to its Agile software development nature, it promotes frequent product releases in short time boxed cycles of development, which is intended to improve productivity and introduces checkpoints where new customer requirements can be adopted.

Other elements of XP include

Pair programming,

extensive code reviews,

unit testing of all code,

deferring decisions regarding customer requirements until they become crucial,

a flat management structure,

simplicity and clarity in code,

anticipating changes in customer requirements as time passes and the problem is better understood and finally frequent communication and collaboration between developers and customers.

The methodology’s name originates from the fact that the beneficial elements of traditional software engineering practices are taken to “extreme” levels, on the theory that if some is good, more is better.

The Concept

Goals

In his book, ‘Extreme Programming Explained’, Kent Beck describes XP as a software development discipline that organizes people to produce higher quality software more productively.

XP aims at reducing the cost of changes in requirements by having multiple short development cycles, rather than one long one. In this methodology changes are a natural, inevitable and desirable aspect of software development projects, and should be ‘planned for’ instead of attempting to define a ‘stable set of requirements’.

Extreme programming also introduces a number of basic values, principles and practices on top of the agile programming framework.

Activities

Today, XP is concerned with four core activities which is coding, testing, listening and designing.

Principles

XP sees feedback as most valuable if it’s done frequently and expresses that the time between feedback and action is critical to learning and making changes. Unlike other traditional methods, XP as a subordinate of Agile, contact with the customer occurs more frequently. The customer has clear insight into the system that is being developed. He or she can give feedback and steer the development as needed. Unit testing also provides another rapid feedback cycle on which we can improve.

This is about treating every problem as “extremely simple”. Traditional system development methods say to plan for the future and to code for reusability. Extreme programming rejects these ideas. The advocates of extreme programming say that making big changes all at once does not work. Extreme programming applies incremental changes: for example, a system might have small releases every three weeks. When many little steps are made, the customer has more control over the development process and the system that is being developed.

As we are living in an ever changing world, we have to grasp change with both hands as an opportunity for innovation and improvement.