•     •   10 min read

Extreme Programming (XP): Nie
dla słabych duchem

Ekstremalne pro­gramowanie (XP) to zwin­na metodolo­gia roz­wo­ju opro­gramowa­nia. Podob­nie jak inne zwinne metody­ki, XP ma swo­je unikalne narzędzia, pro­cesy i role. Twór­ca XP, amerykańs­ki pro­gramista Kent Beck, nie wynalazł nic całkowicie nowego, lecz wziął najlep­sze prak­ty­ki zwin­nego roz­wo­ju i wzmoc­nił je do ekstremum, stąd nazwa Ekstremalne programowanie.

Autor metodologii, Kent Beck, kierował pro­jek­tem Chrysler Com­pre­hen­sive Com­pen­sa­tion Sys­tem pod koniec lat 90., gdzie po raz pier­wszy zas­tosował prak­ty­ki XP. Udoku­men­tował swo­je doświad­czenia i stwor­zony kon­cept w książce Ekstremalne pro­gramowanie wyjaśnione”, opub­likowanej w 1999 roku. Książ­ka ta doczekała się kole­jnych, które szczegółowo opisu­ją prak­ty­ki XP. Wśród współau­torów roz­wo­ju metodologii zna­j­du­ją się Ward Cun­ning­ham, Mar­tin Fowler i inni.
W prze­ci­wieńst­wie do innych zwin­nych metodolo­gi, XP jest wyko­rzysty­wany wyłącznie w roz­wo­ju opro­gramowa­nia. Nie może być stosowany w innych branżach ani w życiu codzi­en­nym, jak Scrum, Kan­ban czy Lean.
Celem XP jest radze­nie sobie z nieustan­nie zmieni­a­ją­cy­mi się wyma­gani­a­mi dla pro­duk­tu opro­gramowa­nia oraz pod­nosze­nie jakoś­ci roz­wo­ju. Dlat­ego XP jest odpowied­ni dla skom­p­likowanych i niepewnych projektów.

XP obra­ca się wokół czterech pod­sta­wowych dzi­ałań: kodowa­nia, testowa­nia, pro­jek­towa­nia i słucha­nia. Dodatkowo, Ekstremalne pro­gramowanie ma pod­sta­wowe wartoś­ci: pros­totę, komu­nikację, infor­ma­cję zwrot­ną, odwagę i szacunek.

13 Prak­tyk Ekstremal­nego Programowania

1. Cały Zespół

Wszyscy uczest­ni­cy pro­jek­tu korzys­ta­ją­cy z XP pracu­ją jako jeden zespół. Zespół ten musi obe­j­mować reprezen­tan­ta klien­ta, najlepiej prawdzi­wego użytkown­i­ka koń­cowego zna­jącego się na biz­ne­sie. Klient usta­la wyma­gania doty­czące pro­duk­tu i pri­o­ry­te­ty­zować funkcjon­al­ność. Anal­i­ty­cy biz­ne­sowi mogą wspier­ać klien­ta. Z per­spek­ty­wy wykon­aw­ców zespół obe­j­mu­je pro­gramistów, testerów, cza­sa­mi tren­era prowadzącego zespół oraz menedżera dostar­cza­jącego zasoby.

2. gra planistyczna

Planowanie w XP odby­wa się w dwóch eta­pach: planowanie wyda­nia i planowanie iteracji.
  • Planowanie Wyda­nia: Zespół pro­gramisty­czny spo­ty­ka się z klien­tem, aby określić pożą­dane funkc­je na następ­ne wydanie, zazwyczaj w ciągu 2 – 6 miesię­cy. Ponieważ wyma­gania klien­ta są częs­to nie­jasne, pro­gramiś­ci je wyjaś­ni­a­ją i dzielą na zada­nia, które moż­na zre­al­i­zować w ciągu jed­nego dnia lub szy­b­ciej. Klient musi zrozu­mieć środowisko oper­a­cyjne, w którym pro­dukt będzie dzi­ałał.

    Zada­nia są zapisy­wane na kar­tach, a klient je pri­o­ry­te­tyzu­je. Pro­gramiś­ci następ­nie sza­cu­ją czas potrzeb­ny na każde zadanie. Gdy zada­nia są opisane i osza­cow­ane, klient przeglą­da doku­men­tację i zatwierdza rozpoczę­cie prac. Dla sukce­su pro­jek­tu kluc­zowe jest, aby klient i zespół pro­gramisty­czny dzi­ałali na tych samych zasadach: klient wybiera naprawdę niezbęd­ną funkcjon­al­ność w ramach budże­tu, a pro­gramiś­ci odpowied­nio dos­tosowu­ją wyma­gania klien­ta do swoich możliwości.
  • Planowanie Iter­acji: Przeprowadzane co dwa tygod­nie, cza­sa­mi rzadziej lub częś­ciej. Klient jest obec­ny, aby określić funkcjon­al­ność dla następ­nej iter­acji i wprowadzać zmi­any w wyma­gani­ach produktu.

3. Małe Wydania

Wyda­nia XP są częste, ale z ogranic­zoną funkcjon­al­noś­cią. To pode­jś­cie ułatwia testowanie i utrzy­manie oper­a­cyjnoś­ci sys­te­mu i zapew­nia klien­towi funkcjon­al­ność o wartoś­ci biz­ne­sowej w każdej iteracji.

4. Testy Klienta

Klient określa zau­tomaty­zowane testy akcep­ta­cyjne w celu sprawdzenia funkcjon­al­noś­ci pro­duk­tu. Zespół pisze te testy i wyko­rzys­tu­je je do testowa­nia kodu.

5. Kolek­ty­wne Właś­ci­cielst­wo Kodu

W XP każdy pro­gramista może mody­fikować każdą część kodu, ponieważ kod nie należy do auto­ra, lecz do całego zespołu.

6. Ciągła Integracja

Nowe częś­ci kodu są inte­growane z sys­te­mem naty­ch­mi­ast — zespoły XP wyda­ją nową wer­sję co kil­ka godzin lub jeszcze częś­ciej. Ta prak­ty­ka zapew­nia, że wpływ ostat­nich zmi­an na sys­tem jest widoczny naty­ch­mi­ast. Jeśli nowa część kodu coś psu­je, iden­ty­fikac­ja i napraw­ie­nie błę­du są znacznie łatwiejsze.

7. Stan­dardy Kodowania

W przy­pad­ku kolek­ty­wnego właś­ci­cielst­wa kodu, przyję­cie wspól­nych stan­dard­ów kodowa­nia jest kluc­zowe, aby kod wyglą­dał tak, jak­by był napisany przez jed­nego pro­fesjon­al­istę. Zespoły mogą opra­cow­ać własne stan­dardy lub przyjąć istniejące.

8. Metafo­ra Systemu

Metafo­ra sys­te­mu to porów­nanie z czymś znanym, aby stworzyć wspól­ną wiz­ję w zes­pole. Typowo oso­ba opra­cowu­ją­ca architek­turę i postrze­ga­ją­ca sys­tem w całoś­ci wymyśla metaforę.

9. Zrównoważone Tempo

Zespoły XP pracu­ją z maksy­mal­ną wyda­jnoś­cią, utrzy­mu­jąc jed­nocześnie zrównoważone tem­po. Ekstremalne pro­gramowanie zniechę­ca do nad­godzin i pro­mu­je 40-godzin­ny tydzień pracy.

10. Rozwój Napędzany Tes­ta­mi (TDD)

Jed­na z najtrud­niejszych prak­tyk w XP. Pro­gramiś­ci piszą testy przed napisaniem kodu, który ma być testowany. To pode­jś­cie zapew­nia, że każdy kawałek funkcjon­al­noś­ci jest w pełni pokry­ty tes­ta­mi. Gdy pro­gramiś­ci zatwierdza­ją kod, testy jed­nos­tkowe uruchami­a­ją się naty­ch­mi­ast, i wszys­tkie testy muszą prze­jść, co zapew­nia, że zespół zmierza w dobrym kierunku.

11. Pro­gramowanie w Parze

Wyobraź sobie dwóch pro­gramistów pracu­ją­cych przy jed­nym kom­put­erze nad jed­nym kawałkiem funkcji. Ta prak­ty­ka to pro­gramowanie w parze, najbardziej kon­trow­er­syj­na prak­ty­ka w XP. Przysłowie dwie głowy są lep­sze niż jed­na” dobrze ilus­tru­je jej istotę. Spośród dwóch rozwiązań prob­le­mu wybier­ane jest najlep­sze, kod jest naty­ch­mi­ast opty­mal­i­zowany, a błędy wych­wyty­wane są zan­im wys­tąpią, co skutku­je czystym kodem rozu­mi­anym przez obu programistów.

12. Prosty Projekt

Prosty pro­jekt w XP oznacza robi­e­nie tylko tego, co jest potrzeb­ne ter­az, bez pró­by przewidy­wa­nia przyszłej funkcjon­al­noś­ci. Prosty pro­jekt i ciągła refak­to­ryza­c­ja tworzą efekt syn­ergii — gdy kod jest prosty, łatwiej go zoptymalizować.

13. Refak­to­ryza­c­ja

Refak­to­ryza­c­ja jest ciągłym pro­ce­sem poprawy pro­jek­tu sys­te­mu w celu spełnienia nowych wyma­gań. Obe­j­mu­je usuwanie dup­likacji kodu, zwięk­szanie spójnoś­ci i redukcję sprzężeń. XP nakła­da obow­iązek ciągłej refak­to­ryza­cji, więc pro­jekt kodu zawsze pozosta­je prosty.

Zale­ty i Wady XP

XP jest kon­trow­er­syjne i częs­to kry­tykowane przez tych, którzy nie zdołali go wdrożyć. Jed­nak jego korzyś­ci są oczy­wiste, gdy zespół w pełni wyko­rzys­tu­je przy­na­jm­niej jed­ną prak­tykę XP.

Korzyś­ci z dąże­nia do XP obejmują:

  • Zad­owole­nie Klien­ta: Klien­ci otrzy­mu­ją pro­dukt, którego potrze­bu­ją, nawet jeśli na początku nie mają jas­nej wizji.
  • Elasty­czność: Zespół szy­bko wprowadza zmi­any w kodzie i doda­je nową funkcjon­al­ność dzię­ki prostej struk­turze kodu, częste­mu planowa­niu i wydaniach.
  • W nieza­wod­ność: Kod zawsze dzi­ała dzię­ki ciągłe­mu testowa­niu i ciągłej integracji.
  • Łat­wość Utrzy­ma­nia: Zespół może łat­wo utrzy­mać kod, ponieważ jest pisany według jed­nego stan­dar­du i nieprz­er­wanie refaktoryzowany.
  • Wyda­jność: Szy­bkie tem­po roz­wo­ju dzię­ki pro­gramowa­niu w parze, braku nad­godzin i zaan­gażowa­niu klienta.
  • Wyso­ka Jakość Kodu
  • Min­i­mal­iza­c­ja Ryzy­ka: Ryzyko roz­wo­ju jest zre­dukowane, ponieważ odpowiedzial­ność jest spraw­iedli­wie rozłożona, a pro­jekt nie jest zagrożony przez ode­jś­cie lub przy­by­cie członków zespołu.
  • Efek­ty­wność Kosztów: Kosz­ty roz­wo­ju są niższe, ponieważ zespół sku­pia się na kodzie, a nie na doku­men­tacji i spotkaniach.

Pomi­mo zalet, XP nie zawsze dzi­ała i ma kil­ka słabości:

  • Zaan­gażowanie Klien­ta: Sukces zależy od zaan­gażowa­nia klien­ta, co może być trudne do osiągnięcia.
  • Nieprzewidy­walne Ter­miny: Trud­no przewidzieć kosz­ty cza­sowe pro­jek­tu, ponieważ peł­na lista wyma­gań jest niez­nana na początku.
  • Zależność od Poziomu Umiejęt­noś­ci: XP w dużej mierze zależy od poziomu umiejęt­noś­ci pro­gramistów i najlepiej dzi­ała w przy­pad­ku doświad­c­zonych profesjonalistów.
  • Opór Zarządza­nia: Zarządzanie częs­to sprze­ci­wia się pro­gramowa­niu w parze, kwes­t­ionu­jąc potrze­bę opła­ca­nia dwóch pro­gramistów zami­ast jednego.
  • Koszt: Częste spotka­nia z pro­gramis­ta­mi mogą być kosz­towne dla klientów.
  • Zmi­any Kul­tur­owe: Wdroże­nie XP wyma­ga znacznych zmi­an kulturowych.
  • Brak Struk­tu­ry: Brak struk­tu­ry i doku­men­tacji XP spraw­ia, że nie nada­je się do dużych projektów.
  • Wyma­gania Niefunkcjon­alne: Wyma­gania funkcyjne są trudne do opisa­nia jako his­to­rie użytkown­ików w zwin­nych metodykach.

Zasady XP

W swo­jej pier­wszej książce Kent Beck nakreślił następu­jące zasady XP: pros­to­ta, komu­nikac­ja, infor­ma­c­ja zwrot­na i odwa­ga. W kole­jnej edy­cji dodał piątą zasadę — szacunek.

1. Pros­to­ta

Rozwój XP zaczy­na się od najprost­szego rozwiąza­nia, które speł­nia obec­ne potrze­by funkcjon­alne. Członkowie zespołu biorą pod uwagę tylko to, co trze­ba zro­bić ter­az i nie wprowadza­ją funkcjon­al­noś­ci, która może być potrzeb­na w przyszłości.

2. Komu­nikac­ja

Komu­nikac­ja w XP odby­wa się na żywo, a nie przez doku­men­tację. Zespół akty­wnie komu­niku­je się ze sobą i z klientem.

3. Infor­ma­c­ja zwrotna

Infor­ma­c­ja zwrot­na w XP jest wdrażana na trzy sposoby:
  1. Infor­ma­c­ja zwrot­na sys­te­mu: Dzię­ki stałe­mu testowa­niu modułów.
  2. Infor­ma­c­ja zwrot­na od klien­ta: Klient jest częś­cią zespołu i uczest­niczy w tworze­niu testów akceptacyjnych.
  3. Infor­ma­c­ja zwrot­na od zespołu: Pod­czas planowa­nia, doty­czą­ca sza­cunków cza­su rozwoju.

4. Odwa­ga

Niek­tóre prak­ty­ki XP są tak niety­powe, że wyma­ga­ją odwa­gi i stałej samokontroli.

5. Sza­cunek

Sza­cunek w XP oznacza szanowanie zespołu oraz sza­cunek do samego siebie. Członkowie zespołu nie powin­ni wprowadzać zmi­an łamią­cych kom­pi­lację, testy mod­ułowe, ani spowal­ni­a­ją­cych pracę kolegów. Każdy członek dąży do najwyższej jakoś­ci kodu i projektu.

Wdroże­nie XP i Przepływ Pracy

Kent Beck zale­ca wdrażanie XP w celu rozwiązy­wa­nia prob­lemów pro­jek­towych. Zespół wybiera najpil­niejszy prob­lem i rozwiązu­je go przy uży­ciu jed­nej z prak­tyk XP. Następ­nie prze­chodzi do następ­nego prob­le­mu, korzys­ta­jąc z innej prak­ty­ki. Takie pode­jś­cie zapew­nia, że prob­le­my moty­wu­ją do przyję­cia XP, a zespół stop­niowo opanowu­je wszys­tkie narzędzia metodologii.

Aby wprowadz­ić XP w ist­nieją­cym pro­jek­cie, stop­niowo przyj­muj jego prak­ty­ki w następu­ją­cych obszarach:

  • Testowanie: Zespół tworzy testy przed napisaniem nowego kodu i stop­niowo refak­to­ryzu­je stary kod.
  • Pro­jek­towanie: Zespół cią­gle refak­to­ryzu­je stary kod, zazwyczaj przed dodaniem nowej funkcjonalności.
  • Planowanie: Zespół musi ściśle współpra­cow­ać z klientem.
  • Zarządzanie: Menedżerowie zapew­ni­a­ją, że wszyscy członkowie zespołu przestrze­ga­ją nowych zasad.
  • Rozwój: Rozpocznij od orga­ni­za­cji stanowisk roboczych do pro­gramowa­nia w parach i zachę­caj pary do pro­gramowa­nia przez więk­szość czasu.

Przykład Przepły­wu Pra­cy z Wyko­rzys­taniem XP

Kto Korzys­ta z XP

Według bada­nia Ver­sionOne z 2016 roku, tylko 1% zwin­nych firm sto­su­je XP w czys­tej postaci. Kole­jne 10% korzys­ta z hybry­dy Scrum i XP.
Cho­ci­aż XP nie jest najczęś­ciej stosowaną metodologią, jego prak­ty­ki są wyko­rzysty­wane przez więk­szość firm sto­su­ją­cych zwinne metodolo­gie. Na przykład, Piv­otal Soft­ware, Inc. przyp­isu­je swój sukces XP.

Piv­otal Soft­ware, Inc.

Piv­otal Soft­ware, Inc. rozwi­ja anal­i­tykę biz­ne­sową opartą na dużych zbio­rach danych i świad­czy usłu­gi dorad­cze. Ich pro­duk­ty są uży­wane przez kor­po­rac­je takie jak Ford, Mer­cedes, BMW, GAP, Humana, duże ban­ki, agenc­je rzą­dowe i firmy ubezpieczeniowe.

Piv­otal opowia­da się za zwin­nych metodolo­gia­mi jako niezbęd­ny­mi dla nowoczes­nego roz­wo­ju. Spośród zwin­nych wari­antów wybrali XP, metodologię korzyst­ną zarówno dla klien­tów, jak i zespołów pro­gra­mu­ją­cych. Ich dzień roboczy zaczy­na się od spotkań codzi­en­nych i kończy o 18:00 — bez nad­godzin. Piv­otal korzys­ta z gier planisty­cznych, pro­gramowa­nia w parach, ciągłego testowa­nia, ciągłej inte­gracji i innych prak­tyk XP.

Czego Przeczy­tać, aby Zrozu­mieć XP

  1. Ekstremalne pro­gramowanie wyjaśnione”, Planowanie Ekstremal­nego Pro­gramowa­nia”, Rozwój napędzany tes­ta­mi” autorstwa Ken­ta Bec­ka: Książ­ki te, napisane przez twór­cę XP, dostar­cza­ją szczegółowego zrozu­mienia metodologii i jej zalet.
  2. Refak­to­ryza­c­ja: Poprawa Pro­jek­tu Ist­niejącego Kodu” autorstwa Mar­ti­na Fowlera: Książ­ka współau­to­ra XP wyjaś­ni­a­ją­ca zasady i tech­ni­ki refaktoryzacji.
  3. Ekstremalne Pro­gramowanie Zas­tosowane: Gra na Wygraną” autorstwa Kena Auer i Roya Millera: Prak­ty­czny prze­wod­nik po prak­tykach XP z przykładami.

Narzędzia do Wdraża­nia XP w Zespołach

Red­mine

Dar­mowy, otwarty menedżer zadań z taki­mi funkc­ja­mi jak wspar­cie dla wielu pro­jek­tów, elasty­czne zarządzanie zada­ni­a­mi, wykresy Gant­ta, śledze­nie cza­su, zarządzanie doku­men­tacją i tworze­nie zadań za pośred­nictwem e‑maila.

Base­camp


Pros­ta, przy­jaz­na użytkown­ikowi usłu­ga do współpra­cy przy pro­jek­tach, obe­j­mu­ją­ca menedżera zadań, tablice wiado­moś­ci, wbu­dowany czat, prze­chowywanie plików i kalendarz.

Jira


Robust­na usłu­ga zapro­jek­towana dla twór­ców pro­jek­tów zwin­nych, łączą­ca śledze­nie błędów i narzędzia do zarządza­nia pro­jek­ta­mi z wielo­ma funkc­ja­mi i opc­ja­mi synchronizacji.

Work­sec­tion


Bez­piecz­na usłu­ga do pra­cy pro­jek­towej, umożli­wia­ją­ca usta­lanie zadań i kon­trolę pro­cesów, śledze­nie kore­spon­dencji, dos­tosowywanie fil­trów, śledze­nie cza­su i finan­sów oraz zarządzanie plikami.

Wnios­ki

Ekstremalne pro­gramowanie to zwin­na metodolo­gia sku­pi­a­ją­ca się na pro­dukcji wysok­iej jakoś­ci, funkcjon­al­nego kodu przy prost­szej architek­turze. Jej celem jest redukc­ja niepewnoś­ci w pro­jek­tach i elasty­cz­na reakc­ja na zmieni­a­jące się wyma­gania produktu.

XP jest wyłącznie dla roz­wo­ju opro­gramowa­nia i nie może być dos­tosowane do innych branż.
Jest jed­ną z najtrud­niejszych metodologii do wdroże­nia z powodu trzy­nas­tu prak­tyk. Jed­nakże prak­ty­ki te są sze­roko stosowane w zwin­nych pro­jek­tach, co dowodzi ich skuteczności.

Autorzy zale­ca­ją stop­niowe opanowywanie prak­tyk XP pod­czas rozwiązy­wa­nia prob­lemów pro­jek­towych. Jeśli dostrze­gasz korzyś­ci, kon­tynu­uj w tym samym duchu. Nie ma obow­iązku wdraża­nia XP w sposób abso­lut­ny. W końcu zwinne metodolo­gie powin­ny być elasty­czne w zas­tosowa­niu — dos­tosowu­jąc się do potrzeb konkret­nego zespołu projektowego.

esc
Udostępnij dalej
или
Szkoła PM
Dlaczego śledzenie czasu w Worksection to najlepszy wybór do zarządzania zasobami projektu Godziny są rejestrowane z pamięci i często z opóźnieniami. Arkusze czasowe nie są powiązane z zadaniami, więc...
2 maja 2025   •   7 min read
Szkoła PM
Zadania rozproszone w czatach i na tablicach utrudniają kontrolowanie wykonania projektu. Kierownictwo musi spędzać większość swojego czasu synchronizując zespół, aby dowiedzieć się o bieżącym statusie...
1 maja 2025   •   7 min read
Szkoła PM
Brak zrozumienia harmonogramu projektu, ciągłe opóźnienia, trudności w koordynacji procesów z wykonawcami. Budżet rośnie, a wyniki są nieustannie odkładane. To rzeczywistość wielu projektów, w których...
30 kwietnia 2025   •   7 min read
Zacznij już teraz
Proszę podać swój prawdziwy adres e-mail 🙂