Values in Extreme Programming

Agile Software Development Takes the Human Factors Into Account

© Tsveti Georgieva

Sep 17, 2009
Extreme Programming is an Agile Methodology, Wikipedia
Process improvements start with communication, simplicity, feedback, courage and respect - i.e. the values in Extreme Programming.

The Extreme Programming software development methodology is popular partially because its values (communication, simplicity, feedback, courage and respect) improve the process and make it easier for all stakeholders to work together as a team. This is not surprising because Extreme Programming is a type of an agile software project management methodology and agile software project management methodologies as a whole take the human factors into account.

The Extreme Programming Communication Value

Communication is key for the success of any project but for Extreme Programming communication is even more important because if the requirements of the client are not communicated to the developers' team, there is no way to implement these requirements correctly. Since in Extreme Programming there is no formal documentation as a way to communicate requirements, designs, frequent contacts, and feedback are the ways to do it.

The Extreme Programming Simplicity Value

Unlike traditional software development methodologies, Extreme Programming values informality and simplicity. The idea is to implement only the functionality the client needs right now, rather than waste time on complex features the client might never use. When additional functionality is required, it is added at a later stage. Simplicity eases communication, too. In practice the implementation of the simplicity value causes some problems because when the client request changes, this frequently leads to radical changes in what has already been implemented.

The Extreme Programming Feedback Value

The third value of Extreme Programming is feedback. Unlike the traditional meaning of “feedback”, in Extreme Programming it includes three types of feedback: from the system, from the customer, and from the team. Unit tests are the best way to get feedback from the system because they tell if a modification is well accepted by the system or not. Functional tests are the way to get feedback from the customer. Feedback from the team is also important because communication with the developers is the way to learn how long it will take to implement a given change. The Feedback value is a great mechanism for the early discovery of bugs and other defects.

The Extreme Programming Courage Value

A relatively recently added value is the courage value. In Extreme Programming courage means to be brave to start coding even when the requirements can be changed and to accept refactoring as something normal. Courage is also regarded as the bravery to throw away code when process improvements or other circumstances require it. Another meaning of courage in Extreme Programming is to be persistent and not give up when a problem seems hard to solve.

The Extreme Programming Respect Value

Finally, the last (but not least) value in Extreme Programming is Respect. Respect must be shown to the other team members and their work. This means that a developer must always strive to achieve top quality and not to make changes, which affect the work of others in a negative way. Respect is mutual in a team. Unlike the other four values of Extreme Programming, the Respect value is directed mainly to the team, not to its interactions with the client.

The five values of Extreme Programming – communication, simplicity, feedback, courage, and respect are the cornerstones of its philosophy. They reflect the principles of agile software management, a variety of which Extreme Programming is.


The copyright of the article Values in Extreme Programming in Computer Programming is owned by Tsveti Georgieva. Permission to republish Values in Extreme Programming in print or online must be granted by the author in writing.


Extreme Programming is an Agile Methodology, Wikipedia
       


Post this Article to facebook Add this Article to del.icio.us! Digg this Article furl this Article Add this Article to Reddit Add this Article to Technorati Add this Article to Newsvine Add this Article to Windows Live Add this Article to Yahoo Add this Article to StumbleUpon Add this Article to BlinkLists Add this Article to Spurl Add this Article to Google Add this Article to Ask Add this Article to Squidoo