Párové programování (Pair Programming)

Párové programování je technika agilního vývoje software vycházející z Extreme programming (XP), ve které dva vývojáři spolupracují na jednom počítači. Tito dva lidé společně navrhují design, kódují a testují. V ideálním případě by tito dva lidé měli mít podobné schopnosti a každý by měl strávit podobný čas za klávesnicí.

Běžná implementace párového programování nazývá programátora za klávesnicí pilotem, zatímco druhého nazývá navigátorem. Navigátor se zaměřuje na celkový směr programování. Spolupráci mezi vývojáři lze provádět osobně nebo na dálku.

Párové programování je společnou prací, která vyžaduje mnoho komunikace. Cílem je nechat pilota a navigátora komunikovat, či-li diskutovat o postupech a řešení problémů, které samostatný vývojář odhaluje velmi obtížně.

Tato technika však není vhodná pro každého. Naučit se efektivně spolupracovat v týmu nablízko a sdílet pracovní počítač, vyžaduje dovednosti, které všichni programátoři nemají. Vyžaduje se, aby oba programátoři měli dostatečné měkké dovednosti potřebné pro spolupráci, stejně tak potřebné tvrdé dovednosti pro psaní a testování kódu. Některé firmy se rozhodnou tuto praxi přijmout, zatímco jiné se mohou rozhodnout ji nepoužívat.

Jak párové programování funguje

Párové programování vyžaduje dva vývojáře, jeden počítač, klávesnici a myš. Páry se mohou vytvořit samostatně nebo jednoduše někoho vybereme.

Využíváme principu čtyř očí, který zajišťuje, že dvoje oči kontrolují vytvářený kód, i když dochází k dělbě práce. Zatímco pilot zapisuje kód, navigátor zapisovaný kód aktivně kontroluje. Pilot se zaměřuje na specifika kódování, zatímco navigátor kontroluje práci, kvalitu kódu a udává směr.

Proces začíná tím, že vývojáři obdrží přesně definovaný úkol. Ve stejné době pracují společně na jednom malém cíli, stejně tak na psaní kódu, testování nebo jen sepsání poznámek. Jakékoliv diskuze o směru naplnění cíle nebo úpravách ponecháme až po dosažení cíle, abychom nepřerušovali práci pilota. Díky diskuzi mezi dvěma vývojáři o různých technikách a výzvách dosahujeme obvykle vyšší kvality kódu a řešení, než by dokázal vytvořit samostatný vývojář. Tady platí pravidlo více hlav, více ví.

Oba vývojáři se střídají v psaní zdrojového kódu nebo hodnocení řešení a navzájem vykonávanou práci kontrolují. Pravidelné střídání rolí pomáhá udržet vývojáře ve střehu a zapojení. Na organizační úrovní můžeme mít definované dvojice, které se střídají na různých úkolech a aktivitách. Tímto způsobem získají zkušenosti s prací na různých částech budovaného systému.

V závislosti na tom, jak jsou páry koordinovány, mohou nezkušení a zkušení vývojáři spolupracovat, což zkušeným vývojářům umožní sdílet své znalosti a pracovní návyky. V neposlední řadě tato technika pomáhá novým členům týmu zrychlit jejich práci na projektu.

Výhody párového programování

  • Méně chyb v kódu
    Tím, že druhý programátor sleduje kód pilota, může vést ke snížení chyb a zlepšení kvality kódu.
  • Sdílení znalostí v daném páru
    Nezkušení vývojáři mohou získat mnoho dovedností od zkušených vývojářů. A ti, kteří nejsou obeznámeni s procesem, mohou být spárováni s někým, kdo o procesu ví více.
  • Méně úsilí na koordinaci
    Vývojáři si zvyknou na spolupráci a koordinaci svého úsilí.
  • Zvýšená odolnost
    Technika pomáhá vývojářům porozumět každé části zdrojového kódu, což vytváří prostředí, že pokud se něco pokazí, nebudeme závislí jen na jedné osobě.

Výzvy párového programování

  • Produktivita
    Logika nám může diktovat, že párové programování sníží produktivitu o 50%, protože dva vývojáři pracují na stejném kódu najednou. Dle různých zdrojů se ovšem účinnost snižuje řádově jen o 15%, což není špatná zpráva. Stále však platí, že se jedná o snížení produktivity oproti stejnému množství samostatných programátorů.
  • Stejné zapojení páru
    Pokud se oba vývojáři do práce nezapojí stejně, pak je snížena šance, že budou sdíleny znalosti, a je vysoce pravděpodobné, že se jeden vývojář zapojí méně než druhý.
  • Aspekty sociální a interakce
    Pro ty, kteří raději pracuji sami, je tato technika velmi těžká. Vývojáři, kteří mají potíže při práci v páru by bylo vhodnější nechat pracovat samostatně. Pokud je budeme nutit, může to mít negativní dopad na jejich pracovní morálku.
  • Udržitelnost
    Tempo, kdy praktikujeme tuto techniku několik hodin, nemusí být zcela vhodné, protože vývojáři mohou mít různé potřeby na přestávku.

Styly párového programování

Párové programování používá tři základní programovací styly: pilot s navigátorem, nestrukturovaný a ping-pong.

Pilot s navigátorem

Jedná se o populární styl párového programování, kde jeden programátor zpracovává mechanickou stránku (vytváří kód) a druhý má pod kontrolou strategické nebo architektonické prvky (kontroluje kód). Pilot a navigátor si často mění role. Tento styl funguje dobře pro nováčka spárovaného se zkušeným programátorem. Navigátor se může ve své roli pohybovat od rezervovaného postoje po taktický.

Bez struktury

Většina vztahů párového programování spadá do nestrukturovaného stylu, kde dva programátoři pracují společně adhoc způsobem a spolupráce je vedena volně. Oba programátoři by měli mít rovnocennou úroveň dovedností. Běžná varianta tohoto stylu je i párování nováčka s odborníkem.

Nestrukturovaný přístup je velmi obtížný na disciplínu a je vysoce pravděpodobné, že nevydrží u dlouhodobých projektů. Nestrukturované párové programování se těžce udržuje na dálku. Tento přístup se používá v případě, že vývojáři neví, co v rámci projektu bude nejlépe fungovat.

Ping-pong

Jeden vývojář píše testy a druhý výtváří kód, který zajišťuje, že testy prochází. Obě osoby se střídají v psaní testů a kódu. Pokud se oba vývojaři střídají pravidelně, je nepravděpodobné, že by jeden z nich ovládl pracovní postup. Tento styl párového programování se velmi hodí k vývoji řízeného testem (test-driven development).

Typy párování

Vývojové týmy si potřebují zvolit pár k jednotlivým stylům párového programování. Můžeme si vybrat z následujících potenciálních párů s ohledem na dovednosti jednotlivců.

Zkušený/zkušený

Obecně mohou dva odborníci pracovat v rámci jakéhokoliv výše uvedeného stylu. Pokročilí programátoři mohou preferovat styl ping-pong, protože oběma umožňuje, aby se plně zapojili do vývoje.

Nováček/nováček

Dva nováčci mohou mít potíže se stylem pilot/navigátor, protože nikdo z nich není dostatečně zkušený, aby převzal zodpovědnost. Nestrukturovaný přístup může také být pro začátečníky obtížný.

Zkušený/nováček

Nejběžnější kombinací je zkušený programátor pracující s méně zkušeným. Zkušení vývojáři se spoléhají na jejich hlubokou znalost k řízení vývoje, zatímco nováček se může od experta učit.

Osvědčené postupy párového programování

  • Důsledná komunikace
    Pokud neexistuje komunikace, pak vývojáři pravděpodobně nesdílejí jejich myšlenky.
  • Pravidelná výměna rolí
    Podporuje sdílení dovedností mezi vývojáři a udržuje jejich zapojení.
  • Párujme s rozvahou
    Zajistěme, aby oba vývojáři byli schopni dobré spolupráce bez jakýchkoliv zádrhelů. V opačeném případě hrozí zhoršení pracovních vztahů.
  • Používejme důvěrně známé vývojové prostředí
    Oba vývojáři by měli být zvyklí na vývojové prostředí, které používají. V opačném případě může být párové programování narušeno.
  • Odesílejme kód co nejčastěji
    Aby párové programování šlo dobře, odesílejem kód do verzovacího systému při každé výměně rolí.
  • Požadujme vysvětlení pokud je potřeba
    Především v případě, kdy spolupracuje nováček se zkušeným vývojářem, by měl nováček využít každé příložitosti k učení a zeptat se experta na podrobnosti.
  • V případě potřeby si dělejme přestávky
    Pracujme takovým tempem, které vyhovuje oběma vývojářům.

Sdílejte s přáteli

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *