it-swarm-eu.dev

Kdy funguje párové programování? Kdy se tomu vyhnout?

Spíše než otrokově spárovaný program po celou dobu, používáme párové programování selektivně v našem týmu. Myslím, že to funguje nejlépe za následujících okolností:

  • Zvyšování počtu zcela nových členů týmu na projektu (místo toho, aby je nechali procházet dokumentací nebo kódem sami).
  • Mít mladší a starší lidi spolupracovat (pomáhá ukázat některé dovednosti a triky zkušenějších vývojářů a navíc umožňuje starým psům někdy se učit nové triky).
  • Když se někdo snaží zjistit vadu, často pomáhá spárovat s čerstvýma očima.

Kdy použít párový program a proč?

Kdy se vyhnout párovému programování? Proč?

55
Paddyslacker

Výzkum sestavený Laurie Williams naznačuje, že párové programování funguje nejlépe v průmyslových týmech, když

  • Dvojice pracují na specifikaci, návrhu a komplexních programovacích úloh - experimenty naznačují, že se nezobrazí žádné zlepšení kvality při práci na jednoduchých úkolech ve dvojici, ale může dojít ke zlepšení rychlosti. Také si všimněte, že párování „programování“ často zahrnuje jiné činnosti než psaní kódu.
  • Každý jednotlivec v párování má přibližně stejnou úroveň odborných znalostí - zatímco programování párů je skvělé pro trénink, páry se nejvíce angažují, když jsou na stejném úroveň.
  • Role se pravidelně střídají - střídání pravidelně pomáhá udržovat současného spoluúčastníka, protože jednotlivci mají tendenci přispívat nejvíce, když jedou nebo cítí, že se chystají řídit.
  • Dvojice se pravidelně střídají - týmy vyjádřily pohodlí, když věděly o různých částech systému, který vytvářejí. Dvojice rotace pomáhá s přenosem znalostí, což snižuje určitá rizika v projektu. V akademickém prostředí jsou páry často přidělovány, avšak v průmyslovém odvětví jsou obvykle přidělovány často během stand-upů. V obou případech pár je nejúčinnější, když oba jednotlivci jsou ochotní účastníci, kteří vidí hodnotu v párovací činnosti.

Podle mé osobní zkušenosti jsem zjistil, že můj tým XP) tráví v průměru asi 60% našeho programovacího času v páru vývojových programů. Zbytek času tráví individuální rozvoj. spárujte pro vytvoření počátečního návrhu, na samotném návrhu pracujte několik hodin, poté se vraťte dohromady a dokončete složité nebo obtížné části kódu.

Také jsem zjistil, že párové programování je nejúčinnější v přibližně 1,5 až 2,5 hodinových blocích. Cokoli mnohem méně má tendenci vyžadovat příliš mnoho režie pro nastavení, zatímco mnohem více a páry mají tendenci být výstřední a unavené. Cranky a unavení znamenají, že nekomunikujete dobře a mohli byste nechat vady vklouznout do systému.

47
Michael

Párové programování pro mě fungovalo ve velmi, velmi málo situacích.

Pokud mi párové programování selže

Povídka je, že párové programování pro mě nefunguje jako hlavní způsob vývoje softwaru. Můžu spárovat program na jeden den nebo možná týden, zejména pokud se zaměřujeme na konkrétní problém. Ale potom? Jsem hotov. Toast. Nechci nikoho vidět, mluvit s nikým a potřebuji alespoň pár dní v jeskyni, dokud nebudu znovu připraven pro lidskou společnost.

Je to smutný příběh, ale zábavné je, že jsem teď s tím, jak to skončilo, mnohem šťastnější. Jsem šťastně zaměstnán na zakázku, kde pracuji z domova nebo z kavárny, a navázal jsem nové přátele a prozkoumal jsem více San Francisca, než jsem kdy považoval za možné. Mám kolo a laptop a pokud dodržuji své termíny a pravidelně se kontroluji v kódu, můj čas je můj.

Uvádím seznam velkých problémů, které mám s párovým programováním dopředu, a poskytnu vám podrobnosti a anekdoty později.

  1. Rozdělené zaměření.
  2. Žádné experimentování.
  3. Žádné vysoké tóny.
  4. Žádná hrdost na vlastnictví.
  5. Není úniku...

... Zeptal jsem se svých spolupracovníků, jestli viděli to, co jsem viděl, jestli mi něco nebo něco chybí - neviděl jsem, jak by to mohlo fungovat, jak by to lidé mohli dělat dál. Říkali, že se mi daří dobře, že to trvalo jen čas se usadit a přizpůsobit se. Že to bylo zpočátku těžké pro všechny.

Nakonec jsem se stáhl do sebe. Mezi oslepujícími bolestmi hlavy, nespavostí a bušící, neuspokojenou potřebou psát kód, jsem přestal reagovat na vstup. Mohl jsem zírat na obrazovku a nic neviděl. Někdo se mnou mohl nečekaně mluvit a já je neslyšel. Plnil jsem požadavky na rote mé práce, ale nebyl jsem tam. Využil jsem všechno, co jsem se právě objevil za den. Začal jsem kontrolovat svůj iPhone, když psal můj druhý partner.

Nakonec - jen o tři měsíce později, a poprvé vůbec - jsem byl propuštěn z toho, že jsem při programování párů nebyl týmový fit.

Né sám

Napsal jsem to nejen proto, abych tomu porozuměl, ale také abych o tom mohl mluvit. Předpokládalo se, že párové programování funguje pro většinu lidí a je mnohem jednodušší a rychlejší než samotné programování. To může nebo nemusí být, ale jako dlouhodobá praxe pro mě párové programování nefunguje. Existuje mnoho dalších lidí, pro které párové programování nefunguje. Záleží nám také ...

34
Will Sargent

Můj tým prováděl párové programování od svého založení, dlouho předtím, než jsem tam pracoval, jako součást většinou „extrémního programování“ - stylového obchodu. Párové programování je výchozí stav ; lidé opravdu chodí na singleton, pokud existuje liché číslo, nebo občas na vyšetřování, zejména ta, která budou zahrnovat pokousání nepřátelského vybavení a pokusit se ho dostat do práce.

„Junior/senior“ není jediný způsob, jak jít. Užitečné je „středně pokročilý/juniorský“; pomáhá chlapci střední úrovně syntetizovat znalosti, které získal tím, že ho nutí, aby je sdělil někomu jinému. „Intermediate/Intermediate“ výzvy dva lidé pracují společně, aby sdíleli své znalosti, komunikovali a pracovali jako součást týmu. A i když máte dva opravdu starší lidi, je pravděpodobné, že mají různé oblasti odborných znalostí a mohou přijít s různými přístupy. Aspekty sdílení znalostí nekončí, jakmile je někdo na projektu neurčitě „nejrychlejší“. Programování párů je spíše ztělesněním čící se organizace . Nové techniky a osvědčené postupy se rychle šíří.

Párové programování také pomáhá udržovat kvalitu kódu (méně vad) a zdravost kódu (nedělá jen to, co má v úmyslu, ale dělá to, co chce by ... ideálně aniž byste museli chodit po vícetýdenní králičí díře a dělat špatnou věc nebo dvě různé správné věci, které budou divoce v konfliktu). Pomáhá programátorům udržet jejich zaměření: zde v srdci Silicon Valley, kde je domov 80-hodinového pracovního týdne, můžeme pracovat jen 40 hodin týdně, protože děláme intenzivní kódování osm hodin denně, měníme věci s sebou. (Také, pokud jste již delší dobu dělali párové programování, pravděpodobně byste vyhodili. Nebo alespoň vyhořeli.) To je skvělé pro rovnováhu mezi prací a životem a také to pomáhá vaší organizaci, když je důležité mít rychlý obrat (zejména obrat s nízkou latencí).

Není to všechno, úplně, 100% broskve a smetana; Zjistil jsem, že párové programování je občas překážkou mé aplikace intuitivních mozkových procesů, které jsou užitečné v určitých problémech. Naposledy jsem na úkolu s únikem paměti strávil nějaký čas s páry i bez nich; bez jednoho jsem se cítil více svobodný, abych si pohrával a zkoušel experimenty, aniž bych přesně věděl, jak vysvětlit, co dělám v kterémkoli okamžiku. Existují také některé výhody v práci singleton, být schopen jít na tečnou a dělat určité divoké refactorings (oceněný v XP metodika) na rozmaru.

Ale všichni říkali, výhody daleko převažují nad náklady a párování pro nás dopadlo efektivně: od počáteční fáze přes akvizici větší společností a naši následnou integraci. (Když už mluvíme o tom, párové programování nám pomohlo udržet kontinuitu kultury prostřednictvím expanze a navzdory malému obratu).

(Vyvíjíme softwarové zařízení v Perlu, ~ 4 000 - 40 000 $ ceníková cena.)

10
user2348

Nikdy jsem nepracoval v nastavení „Pair Programming“ a přesto mohu tvrdit, že byl součástí tří uvedených okolností. Scénář, který zmiňujete, se jeví spíše jako „pravidelné programování“ s fázemi pomoci/tréninku vhozenými dovnitř. Nedělali jsme to všechno dříve, než vzniklo „párové programování“? V případě párového programování bych předpokládal, že by vyžadoval odhodlaný přístup, kdy proces sdílení v týmu nezastaví okamžik, kdy vyřešíte okamžitý úkol nebo problém, který máte po ruce. Ale to je to, co „myslím“, nikoli to, co „vím“.

Osobně pro párové programování bych rád pracoval v týmu, kde mám šanci se učit a sdílet své znalosti. Nevyvážený tým, kde všichni, s nimiž pracujete, je daleko před vámi, nebo pak hluboko pod par, může být docela nezajímavý docela rychle. Také bych se bál pracovat s lidmi, kteří jsou přesvědčeni a těžko přesvědčeni.

4
Preets

V našem týmu experimentujeme s programováním párů posledních několik měsíců. Cítím jeho docela užitečné, když pracujete na něčem novém (nová technologie, nová funkce atd.), Protože můžete rychle odrazit nápady s jinou osobou v týmu a nechat je validovat/zneplatnit. Rovněž vzájemné vzájemné hodnocení pomáhá udržovat chyby.

Jiný tým se pokusil použít párové programování s testem na ATDD a byli docela spokojeni s výsledky (podle jeho výpočtů zvýšení o 20% dev nákladů vedlo ke snížení asi o 50% v testovacím čase)

2
Amit Wadhwa

Dobrou noc

mnohokrát jsme debatovali o praktikách extrémního programování a párové programování. Zpět v čase jsme schopni pochopit, že programování je samostatná aktivita, protože programátoři potřebovali koncentraci a izolaci. Programátoři v té době byli v zóně, mentálním stavu, kde se mohli efektivně soustředit na kód a přijímat Nice a kreativní rozhodnutí.

Párové programování se zdá být také riskantní, pokud se domníváte, že se jeden programátor navzájem přerušuje. Na druhé straně je obtížnější přerušit spolupráci dvou programátorů. Například na programování Solo bude snazší být přerušeno, takže je téměř nemožné, aby sólový programátor zůstal v „zóně“.

Kvalita kódu je další, když je slepá linka hned za rohem. Lidé budou vždy ve spěchu, budou to pároví programátoři nebo sóloví programátoři: nebudou uplatňovat určité osvědčené postupy a budou jen zapomínat na testování jednotek.

Držím se párového programování. Protože když dojde na rizika, když je jeden programátor pryč, budete mít vždy jiného chlapa, který dokumentuje tento proces a naučí všechny ostatní, jak to funguje.

1
Junior M

Práce na netriviální složitosti bývá dobrým kandidátem pro párové programování, takže více lidí rozumí kódu, spíše než jen jednomu vývojáři, který zná část základny kódu. Dalším případem je situace, kdy někdo chce přenést nějaké dovednosti. Příkladem může být mít někoho, kdo je opravdu dobrý při jednotkových testech, s párem, který není tak dobře obeznámen s tímto konceptem, a tak pomáhá získat počáteční zvyk na něčem.

Pokud jde o to, kde se vyvarovat párového programování, proveďte pracovní úkoly, které jsou jednoduché, kde by bylo lepší rozdělit práci do dvou skupin, a nechat každého vývojáře, aby udělal nějakou práci samostatně, aby práci dokončil. Některé úkoly mohou vyžadovat jen trochu psaní, ale nejsou tak velké, že by stálo za to strávit několik hodin pokusem najít lepší způsob, jak to udělat, jak by to bylo možné udělat, kdyby každý vývojář použil přístup brutální síly pro několik hodin.

1
JB King