•     •   10 min read

Programmazione Estrema (XP):
Non per i deboli di cuore

Extreme Pro­gram­ming (XP) è una metodolo­gia di svilup­po soft­ware agile. Come altre metodolo­gie agili, XP ha i suoi stru­men­ti, pro­ces­si e ruoli uni­ci. Il cre­atore di XP, il devel­op­er amer­i­cano Kent Beck, non ha inven­ta­to nul­la di com­ple­ta­mente nuo­vo, ma ha invece pre­so le migliori pratiche del­lo svilup­po agile e le ha amplifi­cate all’estremo, da cui il nome Extreme Programming.

L’au­tore del­la metodolo­gia, Kent Beck, ha guida­to il prog­et­to Chrysler Com­pre­hen­sive Com­pen­sa­tion Sys­tem alla fine degli anni 90, dove ha appli­ca­to per la pri­ma vol­ta le pratiche di XP. Ha doc­u­men­ta­to la sua espe­rien­za e il con­cet­to cre­ato nel libro Extreme Pro­gram­ming Explained,” pub­bli­ca­to nel 1999. Questo libro è sta­to segui­to da altri che det­tagli­a­vano le pratiche di XP. I con­trib­u­tori allo svilup­po del­la metodolo­gia includono Ward Cun­ning­ham, Mar­tin Fowler e altri.
Con­trari­a­mente ad altre metodolo­gie agili, XP è uti­liz­za­to esclu­si­va­mente nel­lo svilup­po soft­ware. Non può essere appli­ca­to ad altre attiv­ità com­mer­ciali o alla vita quo­tid­i­ana come Scrum, Kan­ban o Lean. 
Lo scopo di XP è affrontare i req­ui­si­ti in con­tin­ua evoluzione per il prodot­to soft­ware e miglio­rare la qual­ità del­lo svilup­po. Per­tan­to, XP è adat­to per prog­et­ti com­p­lessi e incerti.

XP ruo­ta attorno a quat­tro attiv­ità fon­da­men­tali: cod­i­fi­ca, test, prog­et­tazione e ascolto. Inoltre, l’Ex­treme Pro­gram­ming ha val­ori fon­da­men­tali: sem­plic­ità, comu­ni­cazione, feed­back, cor­ag­gio e rispetto.

13 Pratiche di Extreme Programming

1. L’In­tero Team

Tut­ti i parte­ci­pan­ti al prog­et­to che usano XP lavo­ra­no come un’u­ni­ca squadra. Ques­ta squadra deve includ­ere un rap­p­re­sen­tante del cliente, preferi­bil­mente un reale uti­liz­za­tore finale esper­to del set­tore. Il cliente definisce i req­ui­si­ti del prodot­to e pri­or­i­tiz­za le fun­zion­al­ità. Gli anal­isti com­mer­ciali pos­sono assis­tere il cliente. Dal lato degli ese­cu­tori, il team com­prende svilup­pa­tori, tester, a volte un coach che gui­da il team e un man­ag­er che for­nisce le risorse.

2. Gio­co di Pianificazione

La piani­fi­cazione in XP avviene in due fasi: piani­fi­cazione del rilas­cio e piani­fi­cazione delle iterazioni.
  • Piani­fi­cazione del Rilas­cio: Il team di pro­gram­mazione incon­tra il cliente per deter­minare le fun­zion­al­ità desider­ate per il prossi­mo rilas­cio, tipi­ca­mente tra 2 – 6 mesi. Poiché i req­ui­si­ti del cliente sono spes­so vaghi, gli svilup­pa­tori li chiariscono e li sud­di­vi­dono in com­pi­ti che pos­sono essere com­ple­tati in un giorno o meno. Il cliente deve com­pren­dere l’am­bi­ente oper­a­ti­vo in cui il prodot­to fun­zion­erà.

    Le attiv­ità sono reg­is­trate su schede e il cliente le pri­or­i­tiz­za. Gli svilup­pa­tori sti­mano quin­di il tem­po richiesto per cias­cun com­pi­to. Una vol­ta che i com­pi­ti sono descrit­ti e sti­mati, il cliente rivede la doc­u­men­tazione e appro­va l’inizio dei lavori. Per il suc­ces­so del prog­et­to, è fon­da­men­tale che il cliente e il team di pro­gram­mazione giochi­no sul­lo stes­so cam­po: il cliente sceglie fun­zion­al­ità real­mente nec­es­sarie all’in­ter­no del bud­get, e i pro­gram­ma­tori allineano adeguata­mente i req­ui­si­ti del cliente con le loro capacità.
  • Piani­fi­cazione delle Iter­azioni: Con­dot­ta ogni due set­ti­mane, a volte con una fre­quen­za mag­giore o minore. Il cliente è pre­sente per definire le fun­zion­al­ità per la prossi­ma iter­azione e apportare mod­i­fiche ai req­ui­si­ti del prodotto.

3. Pic­cole Rilascio

I rilas­ci di XP sono fre­quen­ti ma con fun­zion­al­ità lim­i­tate. Questo approc­cio facili­ta il test e il man­ten­i­men­to del­l’­op­er­abil­ità del sis­tema e for­nisce al cliente fun­zion­al­ità che han­no val­ore com­mer­ciale ad ogni iterazione.

4. Test del Cliente

Il cliente speci­fi­ca test di accettazione autom­a­tiz­za­ti per ver­i­fi­care le fun­zion­al­ità del prodot­to. Il team scrive questi test e li uti­liz­za per testare il codice.

5. Pro­pri­età Col­let­ti­va del Codice

In XP, qual­si­asi svilup­pa­tore può mod­i­fi­care qual­si­asi parte del codice, poiché il codice non appar­tiene al suo autore, ma all’in­tero team.

6. Inte­grazione Continua

Nuove par­ti di codice ven­gono inte­grate nel sis­tema imme­di­ata­mente — i team XP rilas­ciano una nuo­va ver­sione ogni poche ore o anche più fre­quente­mente. Ques­ta prat­i­ca garan­tisce che l’im­pat­to delle recen­ti mod­i­fiche sul sis­tema sia vis­i­bile imme­di­ata­mente. Se un nuo­vo pez­zo di codice rompe qual­cosa, iden­ti­fi­care e cor­reg­gere l’er­rore è molto più facile.

7. Stan­dard di Codifica

Con la pro­pri­età col­let­ti­va del codice, adottare stan­dard di cod­i­fi­ca comu­ni è fon­da­men­tale per far apparire il codice come se fos­se sta­to scrit­to da un sin­go­lo pro­fes­sion­ista. I team pos­sono svilup­pare i pro­pri stan­dard o adot­tarne di esistenti.

8. Metafo­ra del Sistema

La metafo­ra del sis­tema è un con­fron­to con qual­cosa di famil­iare per creare una visione con­di­visa all’in­ter­no del team. Tipi­ca­mente, la per­sona che svilup­pa l’ar­chitet­tura e vede il sis­tema nel suo insieme con­cepisce la metafora.

9. Rit­mo Sostenibile

I team XP lavo­ra­no alla mas­si­ma pro­dut­tiv­ità man­te­nen­do un rit­mo sosteni­bile. L’Ex­treme Pro­gram­ming scor­ag­gia il lavoro stra­or­di­nario e pro­muove una set­ti­mana lavo­ra­ti­va di 40 ore.

10. Svilup­po Guida­to dai Test (TDD)

Una delle pratiche più impeg­na­tive in XP. I pro­gram­ma­tori scrivono test pri­ma di scri­vere il codice da testare. Questo approc­cio garan­tisce che ogni pez­zo di fun­zion­al­ità sia com­ple­ta­mente cop­er­to dai test. Quan­do gli svilup­pa­tori inviano il codice, i test uni­tari ven­gono ese­gui­ti imme­di­ata­mente e tut­ti i test devono super­are, garan­ten­do che il team stia proce­den­do nel­la gius­ta direzione.

11. Pro­gram­mazione a Coppie

Immag­i­na due svilup­pa­tori che lavo­ra­no su un com­put­er su un sin­go­lo pez­zo di fun­zion­al­ità. Ques­ta prat­i­ca è la pro­gram­mazione a cop­pie, la prat­i­ca più con­tro­ver­sa in XP. Il det­to due teste sono meglio di una” illus­tra bene la sua essen­za. Dalle due soluzioni a un prob­le­ma, viene scelta la migliore, il codice è ottimiz­za­to imme­di­ata­mente e gli errori ven­gono cat­turati pri­ma che si ver­i­fichi­no, por­tan­do a un codice puli­to com­pre­so da entram­bi gli sviluppatori.

12. Design Semplice

Il design sem­plice in XP sig­nifi­ca fare solo ciò che è nec­es­sario ora, sen­za cer­care di prevedere future fun­zion­al­ità. Il design sem­plice e il refac­tor­ing con­tin­uo cre­ano un effet­to sin­er­gi­co: quan­do il codice è sem­plice, è più facile ottimizzare.

13. Refac­tor­ing

Il refac­tor­ing è il proces­so con­tin­uo di miglio­ra­men­to del design del sis­tema per sod­dis­fare nuovi req­ui­si­ti. Include la rimozione di dupli­cati nel codice, l’au­men­to del­la coe­sione e la riduzione del cou­pling. XP impone il refac­tor­ing costante, quin­di il design del codice rimane sem­pre semplice.

Van­tag­gi e Svan­tag­gi di XP

XP è con­tro­ver­sa e spes­so crit­i­ca­ta da col­oro che non sono rius­ci­ti a imple­men­tar­la. Tut­tavia, i suoi ben­efi­ci sono evi­den­ti quan­do il team uti­liz­za com­ple­ta­mente almeno una prat­i­ca di XP.

I ben­efi­ci di aspi­rare a XP includono:

  • Sod­dis­fazione del Cliente: I cli­en­ti otten­gono il prodot­to di cui han­no bisog­no, anche se inizial­mente non han­no una visione chiara.
  • Flessibil­ità: Il team appor­ta rap­i­da­mente mod­i­fiche al codice e aggiunge nuove fun­zion­al­ità gra­zie al design del codice sem­plice, alla piani­fi­cazione fre­quente e ai rilasci.
  • Affid­abil­ità: Il codice fun­ziona sem­pre gra­zie ai test costan­ti e all’in­te­grazione continua.
  • Manuteni­bil­ità: Il team può man­tenere facil­mente il codice per­ché è scrit­to sec­on­do uno stan­dard uni­co e costan­te­mente refactorato.
  • Pro­dut­tiv­ità: Pace di svilup­po rap­i­da gra­zie alla pro­gram­mazione a cop­pie, assen­za di stra­or­di­nari e coin­vol­gi­men­to del cliente.
  • Codice di Alta Qualità
  • Mit­igazione del Ris­chio: I rischi del­lo svilup­po sono ridot­ti poiché la respon­s­abil­ità è dis­tribui­ta uni­forme­mente e il prog­et­to non è com­pro­mes­so dal­l’us­ci­ta o dal­l’ar­ri­vo di mem­bri del team.
  • Effi­cien­za dei Costi: I costi di svilup­po sono infe­ri­ori poiché il team si con­cen­tra sul codice piut­tosto che sul­la doc­u­men­tazione e sui meeting.

Nonos­tante i suoi van­tag­gi, XP non sem­pre fun­ziona e pre­sen­ta diverse debolezze:

  • Coin­vol­gi­men­to del Cliente: Il suc­ces­so dipende dal coin­vol­gi­men­to del cliente, che può essere dif­fi­cile da raggiungere.
  • Tem­p­is­tiche Impreved­i­bili: È dif­fi­cile prevedere i costi tem­po­rali del prog­et­to poiché l’e­len­co com­ple­to dei req­ui­si­ti è sconosci­u­to all’inizio.
  • Dipen­den­za dal Liv­el­lo di Abil­ità: XP dipende forte­mente dal liv­el­lo di abil­ità dei pro­gram­ma­tori e fun­ziona meglio con pro­fes­sion­isti esperti.
  • Resisten­za del­la Direzione: La direzione spes­so si oppone alla pro­gram­mazione a cop­pie, met­ten­do in dis­cus­sione la neces­sità di pagare due pro­gram­ma­tori invece di uno.
  • Cos­to: Meet­ing fre­quen­ti con i pro­gram­ma­tori pos­sono essere cos­tosi per i clienti.
  • Cam­bi­a­men­ti Cul­tur­ali: Imple­mentare XP richiede sig­ni­fica­tivi cam­bi­a­men­ti culturali.
  • Man­can­za di Strut­tura: La man­can­za di strut­tura e doc­u­men­tazione di XP la rende inadegua­ta per prog­et­ti di gran­di dimensioni.
  • Req­ui­si­ti Non Fun­zion­ali: I req­ui­si­ti fun­zion­ali sono dif­fi­cili da descri­vere come sto­rie utente nelle metodolo­gie agili.

Prin­cipi di XP

Nel suo pri­mo libro, Kent Beck ha delin­eato i seguen­ti prin­cipi di XP: sem­plic­ità, comu­ni­cazione, feed­back e cor­ag­gio. In una suc­ces­si­va edi­zione, ha aggiun­to un quin­to prin­ci­pio — rispetto.

1. Sem­plic­ità

Lo svilup­po XP inizia con la soluzione più sem­plice che sod­dis­fa l’at­tuale bisog­no fun­zionale. I mem­bri del team con­sid­er­a­no solo ciò che deve essere fat­to ora e non incor­po­ra­no fun­zion­al­ità che potreb­bero essere nec­es­sarie in futuro.

2. Comu­ni­cazione

La comu­ni­cazione in XP avviene dal vivo piut­tosto che attra­ver­so la doc­u­men­tazione. Il team comu­ni­ca atti­va­mente tra di loro e con il cliente.

3. Feed­back

Il feed­back in XP è imple­men­ta­to in tre modi:
  1. Feed­back di Sis­tema: Attra­ver­so il costante test­ing dei moduli.
  2. Feed­back del Cliente: Il cliente è parte del team e parte­ci­pa alla scrit­tura dei test di accettazione.
  3. Feed­back del Team: Durante la piani­fi­cazione, riguar­do le stime di tem­po di sviluppo.

4. Cor­ag­gio

Alcune pratiche di XP sono così non con­ven­zion­ali che richiedono cor­ag­gio e costante autocontrollo.

5. Rispet­to

Il rispet­to in XP sig­nifi­ca rispettare il team e avere rispet­to di se stes­si. I mem­bri del team non dovreb­bero apportare mod­i­fiche che inter­rompono la com­pi­lazione, i test dei mod­uli, o ral­len­tano il lavoro dei col­leghi. Ogni mem­bro si sforza di rag­giun­gere la mas­si­ma qual­ità del codice e del design.

Imple­men­tazione di XP e Flus­so di Lavoro

Kent Beck rac­co­man­da di imple­mentare XP per risol­vere i prob­le­mi del prog­et­to. Il team seleziona il prob­le­ma più urgente e lo risolve uti­liz­zan­do una delle pratiche di XP. Poi affrontano il prob­le­ma suc­ces­si­vo, uti­liz­zan­do un’al­tra prat­i­ca. Questo approc­cio assi­cu­ra che i prob­le­mi motivi­no l’adozione di XP e il team padroneg­gi grad­ual­mente tut­ti gli stru­men­ti del­la metodologia.

Per imple­mentare XP in un prog­et­to esistente, adot­ta grad­ual­mente le sue pratiche nelle seguen­ti aree:

  • Test­ing: Il team crea test pri­ma di scri­vere nuo­vo codice e refac­tor­iz­za grad­ual­mente il vec­chio codice.
  • Design: Il team refac­tor­iz­za con­tin­u­a­mente il vec­chio codice, tipi­ca­mente pri­ma di aggiun­gere nuove funzionalità.
  • Piani­fi­cazione: Il team deve inter­a­gire stret­ta­mente con il cliente.
  • Ges­tione: I man­ag­er assi­cu­ra­no che tut­ti i mem­bri del team seguano le nuove regole.
  • Svilup­po: Inizia orga­niz­zan­do le postazioni di lavoro per la pro­gram­mazione a cop­pie e incor­ag­gia le cop­pie a pro­gram­mare la mag­gior parte del tempo.

Esem­pio di Flus­so di Lavoro Uti­liz­zan­do XP

Chi Usa XP

Sec­on­do un sondag­gio di Ver­sionOne del 2016, solo l’1% delle aziende agili uti­liz­za XP nel­la sua for­ma pura. Un altro 10% uti­liz­za un ibri­do di Scrum e XP.
Sebbene XP non sia la metodolo­gia più comune, le sue pratiche sono usate dal­la mag­gior parte delle aziende che imp­ie­gano metodolo­gie agili. Ad esem­pio, Piv­otal Soft­ware, Inc. attribuisce il suo suc­ces­so a XP.

Piv­otal Soft­ware, Inc.

Piv­otal Soft­ware, Inc. svilup­pa anal­isi azien­dali basate su big data e for­nisce servizi di con­sulen­za. I loro prodot­ti sono uti­liz­za­ti da cor­po­ra­tion come Ford, Mer­cedes, BMW, GAP, Humana, gran­di banche, agen­zie gov­er­na­tive e com­pag­nie d’assicurazione.

Piv­otal sostiene che le metodolo­gie agili sono essen­ziali per lo svilup­po mod­er­no. Tra le vari­anti agili, han­no scel­to XP, un approc­cio vin­cente per i cli­en­ti e i team di pro­gram­mazione. La loro gior­na­ta lavo­ra­ti­va inizia con riu­nioni stand-up e ter­mi­na alle 18:00— niente stra­or­di­nari. Piv­otal uti­liz­za giochi di piani­fi­cazione, pro­gram­mazione a cop­pie, test costan­ti, inte­grazione con­tin­ua e altre pratiche di XP.

Cosa Leg­gere per Com­pren­dere XP

  1. Extreme Pro­gram­ming Explained,”, Plan­ning Extreme Pro­gram­ming,”, Test-Dri­ven Devel­op­ment” di Kent Beck: Questi lib­ri del cre­atore di XP for­niscono una com­pren­sione appro­fon­di­ta del­la metodolo­gia e dei suoi vantaggi.
  2. Refac­tor­ing: Improv­ing the Design of Exist­ing Code” di Mar­tin Fowler: Un libro di un co-autore di XP che spie­ga i prin­cipi e le tec­niche del refactoring.
  3. Extreme Pro­gram­ming Applied: Play­ing to Win” di Ken Auer e Roy Miller: Una gui­da prat­i­ca alle pratiche di XP con esempi.

Stru­men­ti per Imple­mentare XP nei Team

Red­mine

Un gestore di com­pi­ti gra­tu­ito e open-source con fun­zion­al­ità come sup­por­to per più prog­et­ti, ges­tione flessibile delle attiv­ità, grafi­ci di Gantt, trac­cia­men­to del tem­po, ges­tione del­la doc­u­men­tazione e creazione di attiv­ità tramite email.

Base­camp


Un servizio sem­plice e user-friend­ly per il lavoro di prog­et­to col­lab­o­ra­ti­vo, inclu­so un gestore di com­pi­ti, bacheche di mes­sag­gi, chat inte­gra­ta, archivi­azione file e calendario.

Jira


Un servizio robus­to prog­et­ta­to per gli svilup­pa­tori di prog­et­ti agili, che com­bi­na un trac­cia­tore di bug e uno stru­men­to di ges­tione dei prog­et­ti con molte fun­zion­al­ità e opzioni di sincronizzazione.

Work­sec­tion


Un servizio sicuro per il lavoro di prog­et­to, che con­sente la definizione di attiv­ità e il con­trol­lo dei pro­ces­si, il trac­cia­men­to del­la cor­rispon­den­za, la per­son­al­iz­zazione dei fil­tri, il trac­cia­men­to del tem­po e delle finanze e la ges­tione dei file.

Con­clu­sione

L’Ex­treme Pro­gram­ming è una metodolo­gia agile focal­iz­za­ta sul­la pro­duzione di codice fun­zionale di alta qual­ità con un’ar­chitet­tura sem­plice. Il suo scopo è ridurre l’in­certez­za nei prog­et­ti e rispon­dere in modo flessibile ai req­ui­si­ti del prodot­to che cambiano. 

XP è esclu­si­va­mente per lo svilup­po soft­ware e non può essere adat­ta­ta ad altre attiv­ità commerciali. 
È una delle metodolo­gie più dif­fi­cili da imple­mentare a causa delle sue tredi­ci pratiche. Tut­tavia, le sue pratiche sono ampia­mente uti­liz­zate in prog­et­ti agili, dimostran­do la loro efficacia.

Gli autori con­sigliano di padroneg­gia­re grad­ual­mente le pratiche di XP men­tre si risolvono i prob­le­mi del prog­et­to. Se si vedono i ben­efi­ci, con­tin­uare nel­lo stes­so spir­i­to. Non c’è obbli­go di imple­mentare XP in modo totale o nul­la. Dopo­tut­to, le metodolo­gie agili dovreb­bero essere flessibili nel­l’ap­pli­cazione — adat­tan­dosi alle esi­gen­ze speci­fiche del team di progetto.

esc
Condividere
или
Scuola PM
Perché il tracker di tempo di Worksection è la scelta migliore per controllare le risorse del progetto Le ore vengono registrate dalla memoria e spesso con ritardi. I fogli temporali non sono collegati...
2 maggio 2025   •   8 min read
Scuola PM
I compiti sparsi tra chat e bacheche rendono difficile controllare l'esecuzione del progetto. La gestione deve dedicare la maggior parte del proprio tempo a sincronizzare il team per scoprire lo stato...
1 maggio 2025   •   7 min read
Scuola PM
Mancanza di comprensione delle scadenze del progetto, continue ritardi, difficoltà nel coordinare i processi con i contraenti. Il budget cresce, e il risultato è costantemente rinviato. Questa è la realtà...
30 aprile 2025   •   7 min read
Inizia ora
Inserisci la tua vera email 🙂