•     •   9 min read

Extreme Programming (XP): Not for
the Faint of Heart

Extreme Pro­gram­ming (XP) is an agile soft­ware devel­op­ment method­ol­o­gy. Like oth­er agile method­olo­gies, XP has its unique tools, process­es, and roles. The cre­ator of XP, Amer­i­can devel­op­er Kent Beck, did­n’t invent any­thing entire­ly new but instead took the best prac­tices of agile devel­op­ment and ampli­fied them to the extreme, hence the name Extreme Programming.

The method­ol­o­gy’s author, Kent Beck, led the Chrysler Com­pre­hen­sive Com­pen­sa­tion Sys­tem project in the late 90s, where he first applied XP prac­tices. He doc­u­ment­ed his expe­ri­ence and the cre­at­ed con­cept in the book Extreme Pro­gram­ming Explained,” pub­lished in 1999. This book was fol­lowed by oth­ers detail­ing XP prac­tices. Con­trib­u­tors to the method­ol­o­gy’s devel­op­ment include Ward Cun­ning­ham, Mar­tin Fowler, and others.
Unlike oth­er agile method­olo­gies, XP is exclu­sive­ly used in soft­ware devel­op­ment. It can­not be applied to oth­er busi­ness­es or dai­ly life like Scrum, Kan­ban, or Lean. 
The goal of XP is to cope with con­stant­ly chang­ing require­ments for the soft­ware prod­uct and to enhance devel­op­ment qual­i­ty. There­fore, XP is suit­able for com­plex and uncer­tain projects.

XP revolves around four core activ­i­ties: cod­ing, test­ing, design­ing, and lis­ten­ing. Addi­tion­al­ly, Extreme Pro­gram­ming has core val­ues: sim­plic­i­ty, com­mu­ni­ca­tion, feed­back, courage, and respect.

13 Prac­tices of Extreme Programming

1. The Whole Team

All project par­tic­i­pants using XP work as a sin­gle team. This team must include a cus­tomer rep­re­sen­ta­tive, prefer­ably a real end-user knowl­edge­able about the busi­ness. The cus­tomer sets the prod­uct require­ments and pri­or­i­tizes func­tion­al­i­ty. Busi­ness ana­lysts can assist the cus­tomer. From the execu­tors’ side, the team includes devel­op­ers, testers, some­times a coach guid­ing the team, and a man­ag­er pro­vid­ing resources.

2. Plan­ning Game

Plan­ning in XP occurs in two stages: release plan­ning and iter­a­tion planning.
  • Release Plan­ning: The pro­gram­ming team meets with the cus­tomer to deter­mine the desired func­tion­al­i­ty for the next release, typ­i­cal­ly in 2 – 6 months. Since cus­tomer require­ments are often vague, devel­op­ers clar­i­fy and break them down into tasks that can be com­plet­ed in a day or less. The cus­tomer must under­stand the oper­a­tional envi­ron­ment where the prod­uct will work.

    Tasks are record­ed on cards, and the cus­tomer pri­or­i­tizes them. Devel­op­ers then esti­mate the time required for each task. Once tasks are described and esti­mat­ed, the cus­tomer reviews the doc­u­men­ta­tion and approves the start of work. For project suc­cess, it is crit­i­cal that the cus­tomer and the pro­gram­ming team play on the same field: the cus­tomer choos­es gen­uine­ly nec­es­sary func­tion­al­i­ty with­in the bud­get, and pro­gram­mers appro­pri­ate­ly align the cus­tomer’s require­ments with their capabilities.
  • Iter­a­tion Plan­ning: Con­duct­ed every two weeks, some­times more or less fre­quent­ly. The cus­tomer is present to define the func­tion­al­i­ty for the next iter­a­tion and make changes to the prod­uct requirements.

3. Small Releases

XP releas­es are fre­quent but with lim­it­ed func­tion­al­i­ty. This approach makes it eas­i­er to test and main­tain the sys­tem’s oper­abil­i­ty and pro­vides the cus­tomer with busi­ness-val­ue func­tion­al­i­ty every iteration.

4. Cus­tomer Tests

The cus­tomer spec­i­fies auto­mat­ed accep­tance tests to check the func­tion­al­i­ty of the prod­uct. The team writes these tests and uses them to test the code.

5. Col­lec­tive Code Ownership

In XP, any devel­op­er can mod­i­fy any part of the code, as the code does not belong to its author but to the entire team.

6. Con­tin­u­ous Integration

New code parts are inte­grat­ed into the sys­tem imme­di­ate­ly — XP teams release a new build every few hours or more fre­quent­ly. This prac­tice ensures that recent changes’ impact on the sys­tem is vis­i­ble imme­di­ate­ly. If a new piece of code breaks some­thing, iden­ti­fy­ing and fix­ing the error is much easier.

7. Cod­ing Standards

With col­lec­tive code own­er­ship, adopt­ing com­mon cod­ing stan­dards is cru­cial to make the code look like it was writ­ten by a sin­gle pro­fes­sion­al. Teams can devel­op their stan­dards or adopt exist­ing ones.

8. Sys­tem Metaphor

The sys­tem metaphor is a com­par­i­son with some­thing famil­iar to cre­ate a shared vision with­in the team. Typ­i­cal­ly, the per­son devel­op­ing the archi­tec­ture and see­ing the sys­tem as a whole devis­es the metaphor.

9. Sus­tain­able Pace

XP teams work at max­i­mum pro­duc­tiv­i­ty while main­tain­ing a sus­tain­able pace. Extreme Pro­gram­ming dis­cour­ages over­time and pro­motes a 40-hour work week.

10. Test-Dri­ven Devel­op­ment (TDD)

One of the most chal­leng­ing prac­tices in XP. Pro­gram­mers write tests before writ­ing the code to be test­ed. This approach ensures that each func­tion­al­i­ty piece is ful­ly cov­ered by tests. When devel­op­ers com­mit code, unit tests are run imme­di­ate­ly, and all tests must pass, ensur­ing the team is mov­ing in the right direction.

11. Pair Programming

Imag­ine two devel­op­ers work­ing at one com­put­er on a sin­gle func­tion­al­i­ty piece. This prac­tice is pair pro­gram­ming, the most con­tro­ver­sial prac­tice in XP. The say­ing two heads are bet­ter than one” illus­trates its essence well. From two solu­tions to a prob­lem, the best one is cho­sen, code is opti­mized imme­di­ate­ly, and errors are caught before they occur, result­ing in clean code under­stood by both developers.

12. Sim­ple Design

Sim­ple design in XP means doing only what is need­ed now, with­out try­ing to pre­dict future func­tion­al­i­ty. Sim­ple design and con­tin­u­ous refac­tor­ing cre­ate a syn­er­gis­tic effect — when the code is sim­ple, it is eas­i­er to optimize.

13. Refac­tor­ing

Refac­tor­ing is the ongo­ing process of improv­ing the sys­tem’s design to meet new require­ments. It includes remov­ing code dupli­ca­tion, increas­ing cohe­sion, and reduc­ing cou­pling. XP man­dates con­stant refac­tor­ing, so the code design always remains simple.

Advan­tages and Dis­ad­van­tages of XP

XP is con­tro­ver­sial and often crit­i­cized by those who failed to imple­ment it. How­ev­er, its ben­e­fits are appar­ent when the team ful­ly uti­lizes at least one XP practice. 

The ben­e­fits of striv­ing for XP include:

  • Cus­tomer Sat­is­fac­tion: Cus­tomers get the prod­uct they need, even if they don’t ini­tial­ly have a clear vision.
  • Flex­i­bil­i­ty: The team quick­ly makes code changes and adds new func­tion­al­i­ty due to sim­ple code design, fre­quent plan­ning, and releases.
  • Reli­a­bil­i­ty: Code always works due to con­stant test­ing and con­tin­u­ous integration.
  • Main­tain­abil­i­ty: The team can eas­i­ly main­tain the code because it is writ­ten to a sin­gle stan­dard and con­stant­ly refactored.
  • Pro­duc­tiv­i­ty: Rapid devel­op­ment pace due to pair pro­gram­ming, no over­time, and cus­tomer involvement.
  • High-Qual­i­ty Code
  • Risk Mit­i­ga­tion: Devel­op­ment risks are reduced as respon­si­bil­i­ty is even­ly dis­trib­uted, and the project is not jeop­ar­dized by the depar­ture or arrival of team members.
  • Cost Effi­cien­cy: Devel­op­ment costs are low­er as the team focus­es on code rather than doc­u­men­ta­tion and meetings.

Despite its advan­tages, XP does not always work and has sev­er­al weaknesses:

  • Cus­tomer Involve­ment: Suc­cess depends on cus­tomer involve­ment, which can be chal­leng­ing to achieve.
  • Unpre­dictable Time­lines: It is dif­fi­cult to pre­dict project time costs as the full list of require­ments is unknown at the start.
  • Depen­den­cy on Skill Lev­el: XP heav­i­ly depends on the pro­gram­mers’ skill lev­el and works best with senior professionals.
  • Man­age­ment Resis­tance: Man­age­ment often oppos­es pair pro­gram­ming, ques­tion­ing the need to pay two pro­gram­mers instead of one.
  • Cost: Fre­quent meet­ings with pro­gram­mers can be expen­sive for customers.
  • Cul­tur­al Changes: Imple­ment­ing XP requires sig­nif­i­cant cul­tur­al changes.
  • Lack of Struc­ture: XP’s lack of struc­ture and doc­u­men­ta­tion makes it unsuit­able for large projects.
  • Non-func­tion­al Require­ments: Func­tion­al require­ments are chal­leng­ing to describe as user sto­ries in agile methodologies.

Prin­ci­ples of XP

In his first book, Kent Beck out­lined the fol­low­ing prin­ci­ples of XP: sim­plic­i­ty, com­mu­ni­ca­tion, feed­back, and courage. In a sub­se­quent edi­tion, he added a fifth prin­ci­ple — respect.

1. Sim­plic­i­ty

XP devel­op­ment starts with the sim­plest solu­tion that meets the cur­rent func­tion­al need. Team mem­bers con­sid­er only what needs to be done now and do not incor­po­rate func­tion­al­i­ty that might be need­ed in the future.

2. Com­mu­ni­ca­tion

Com­mu­ni­ca­tion in XP occurs live rather than through doc­u­men­ta­tion. The team active­ly com­mu­ni­cates with each oth­er and the customer.

3. Feed­back

Feed­back in XP is imple­ment­ed in three ways:
  1. Sys­tem Feed­back: Through con­stant mod­ule testing.
  2. Cus­tomer Feed­back: The cus­tomer is part of the team and par­tic­i­pates in writ­ing accep­tance tests.
  3. Team Feed­back: Dur­ing plan­ning, con­cern­ing devel­op­ment time estimates.

4. Courage

Some XP prac­tices are so uncon­ven­tion­al that they require courage and con­stant self-control.

5. Respect

Respect in XP means respect­ing the team and self-respect. Team mem­bers should not make changes that break the com­pi­la­tion, mod­ule tests, or slow down col­leagues’ work. Each mem­ber strives for the high­est code and design quality.

Imple­ment­ing XP and the Workflow

Kent Beck rec­om­mends imple­ment­ing XP to solve project issues. The team selects the most urgent prob­lem and solves it using one of the XP prac­tices. Then, they move on to the next prob­lem, using anoth­er prac­tice. This approach ensures that prob­lems moti­vate XP adop­tion, and the team grad­u­al­ly mas­ters all method­ol­o­gy tools.

To imple­ment XP in an exist­ing project, grad­u­al­ly adopt its prac­tices in the fol­low­ing areas:

  • Test­ing: The team cre­ates tests before writ­ing new code and grad­u­al­ly refac­tors old code.
  • Design: The team con­tin­u­ous­ly refac­tors old code, typ­i­cal­ly before adding new functionality.
  • Plan­ning: The team must close­ly inter­act with the customer.
  • Man­age­ment: Man­agers ensure all team mem­bers fol­low the new rules.
  • Devel­op­ment: Start by orga­niz­ing work­sta­tions for pair pro­gram­ming and encour­age pairs to pro­gram most of the time.

Exam­ple of a Work­flow Using XP

Who Uses XP

Accord­ing to a 2016 Ver­sionOne sur­vey, only 1% of agile com­pa­nies use XP in its pure form. Anoth­er 10% use a hybrid of Scrum and XP.
While XP is not the most com­mon method­ol­o­gy, its prac­tices are used by most com­pa­nies employ­ing agile method­olo­gies. For instance, Piv­otal Soft­ware, Inc. attrib­ut­es its suc­cess to XP.

Piv­otal Soft­ware, Inc.

Piv­otal Soft­ware, Inc. devel­ops busi­ness ana­lyt­ics based on big data and pro­vides con­sult­ing ser­vices. Their prod­ucts are used by cor­po­ra­tions like Ford, Mer­cedes, BMW, GAP, Humana, major banks, gov­ern­ment agen­cies, and insur­ance companies.

Piv­otal advo­cates agile method­olo­gies as essen­tial for mod­ern devel­op­ment. Among the agile vari­ants, they chose XP, a win-win approach for cus­tomers and pro­gram­ming teams. Their work­day starts with stand-up meet­ings and ends at 6:00 PM — no over­time. Piv­otal uses plan­ning games, pair pro­gram­ming, con­stant test­ing, con­tin­u­ous inte­gra­tion, and oth­er XP practices.

What to Read to Under­stand XP

  1. Extreme Pro­gram­ming Explained,” Plan­ning Extreme Pro­gram­ming,” Test-Dri­ven Devel­op­ment” by Kent Beck: These books by the cre­ator of XP pro­vide an in-depth under­stand­ing of the method­ol­o­gy and its advantages.
  2. Refac­tor­ing: Improv­ing the Design of Exist­ing Code” by Mar­tin Fowler: A book by an XP co-author explain­ing the prin­ci­ples and tech­niques of refactoring.
  3. Extreme Pro­gram­ming Applied: Play­ing to Win” by Ken Auer and Roy Miller: A prac­ti­cal guide to XP prac­tices with examples.

Tools for Imple­ment­ing XP in Teams

Red­mine

A free, open-source task man­ag­er with fea­tures like mul­ti­ple project sup­port, flex­i­ble task man­age­ment, Gantt charts, time track­ing, doc­u­men­ta­tion man­age­ment, and task cre­ation via email.

Base­camp


A sim­ple, user-friend­ly ser­vice for col­lab­o­ra­tive project work, includ­ing a task man­ag­er, mes­sage boards, built-in chat, file stor­age, and calendar.

Jira


A robust ser­vice designed for agile project devel­op­ers, com­bin­ing a bug track­er and project man­age­ment tool with many fea­tures and syn­chro­niza­tion options.

Work­sec­tion


A secure ser­vice for project work, allow­ing task set­ting and process con­trol, cor­re­spon­dence track­ing, fil­ter cus­tomiza­tion, time and finan­cial track­ing, and file management.

Con­clu­sion

Extreme Pro­gram­ming is an agile method­ol­o­gy focused on pro­duc­ing high-qual­i­ty, func­tion­al code with a sim­ple archi­tec­ture. Its pur­pose is to reduce uncer­tain­ty in projects and respond flex­i­bly to chang­ing prod­uct requirements. 

XP is exclu­sive­ly for soft­ware devel­op­ment and can­not be adapt­ed to oth­er businesses. 
It is one of the most chal­leng­ing method­olo­gies to imple­ment due to its thir­teen prac­tices. How­ev­er, its prac­tices are wide­ly used in agile projects, prov­ing their effectiveness.

The authors advise grad­u­al­ly mas­ter­ing XP prac­tices while solv­ing project issues. If you see the ben­e­fits, con­tin­ue in the same spir­it. There is no oblig­a­tion to imple­ment XP on an all-or-noth­ing basis. After all, agile method­olo­gies should be flex­i­ble in appli­ca­tion — adapt­ing to the needs of the spe­cif­ic project team.

esc
Share
или
PM school
Specialized project management software has become essential for law firms. Legal practices benefit from these tools by streamlining case management, ensuring compliance with legal standards, and enhancing...
30 September 2024   •   12 min read
PM school
In 2024, engineering firms require robust project management tools to handle complex workflows, resource allocation, and tight deadlines. The right project management software can help engineering firms...
30 September 2024   •   10 min read
PM school
Nonprofits operate with limited resources and tight budgets, making efficient project management essential for success. Project management software can help nonprofits streamline operations, manage volunteers...
30 September 2024   •   11 min read
Get started now
Please enter your real email 🙂