Páros programozás
A páros programozás egy agilis szoftverfejlesztési technika, amelyben két programozó dolgozik egy munkaállomásnál. Az egyikük a kódot írja, míg a másik pedig ellenőrzi az elkészült munkát. A páros programozás során a kódot író személyt sofőrnek, az ellenőrzést végzős megfigyelőnek vagy navigátornak nevezik.[1] A két programozó gyakran felcseréli a szerepeket.
A megfigyelő a kódellenőrzés során figyelembe veszi a munka stratégiai irányát, és javaslatokat dolgoz ki a tökéletesítésre és a jövőbeli problémák megoldására. Ennek az a célja, hogy a sofőrnek ne kelljen fókuszálnia az éppen végrehajtott feladat taktikai szempontjaira. A sofőr számára a megfigyelő biztonsági hálót és vezetőt jelent.
Gazdaságosság
A páros programozás több munkaórát igényel, hogy leszállítson egy adott feladatot, mint a függetlenül dolgozó programozók esetén.[2] A létrejött kód azonban sokkal kevesebb hibát tartalmaz. A páros programozás elméletileg ellensúlyozhatja a fejlesztési időt, minőségellenőrzést és egyéb kiadási faktorokat, hiszen csökkenti a programhibák számát.[3]
A hibák csökkentése mellett egyéb előnyök is lehetségesek. Például a sofőrnek nem kell telefonhívásokkal és egyéb zavaró tényezőkkel foglalkoznia, mert ezeket elintézi helyette a megfigyelő. Amíg ketten együtt dolgoznak, kevesebb rendkívüli szünetet kell tartani, pontosabban lehet tartani a munkaidő-beosztást. A megfigyelő kiszúrhatja a sofőr által elkövetett programhibákat, emellett segíthet neki fókuszálni a munkára. A programozó pár egyik tagjának lehet magasabb tudása bizonyos témákban vagy technikákban. Emiatt könnyebb lehet megtalálni a megoldást bizonyos problémákra, és a kisebb tudású programozók készségei fejlődhetnek. Ezeket az előnyöket nehéz pontos számadatokkal mérni, de egyértelműen hozzájárulnak a hatékonyabb munkaidő kihasználáshoz.
A tervezés minősége
A páros programozás az alábbi okok miatt nagy potenciállal rendelkezik a problémák változatosabb megoldására:
- a feladatban részt vevő programozók különböző korábbi tapasztalatokkal rendelkeznek;
- különböző módokon értékelik a feladathoz releváns információt;
- a funkcionális szerepeik miatt különböző kapcsolatban vannak a megoldandó problémával;
A programozó párnak közösen kell megbeszélnie a teendőket, hogy eredményesen tudjanak dolgozni. Közös célokkal és tervekkel kell rendelkezzenek, és egyetértésben kell kidolgozniuk a megoldásukat. Sokféle lehetséges megoldást kell fontolóra venniük. Többet, mint egy egyedül dolgozó programozónak. Ez a metódus nagymértékben növeli a kód dizájn minőségét, mivel csökkenti az alacsony minőségű megoldási lehetőségek kiválasztásának esélyét.[4]
Elégedettség
Egy páros programozókról 2000-ben készített online kutatás szerint a programozók 96 százaléka azt állította, hogy jobban élvezte a munkát párban, mint egyedül. 95 százalékuk azt nyilatkozta, hogy magabiztosabb volt munka közben, amikor párban programozott.[5]
Tanulás
A párban dolgozó programozók folyamatosan megosztják egymással a tudásukat. Főként programozási nyelvi fortélyokat és átfogó tervezési elveket tanulnak egymástól.[5] [6] A vegyes párosítású módszer szerint a programozók nem egy meghatározott párral dolgoznak együtt, hanem a folyamatosan cserélgetik a párosításokat a munkahelyen dolgozó programozók között. Ez a változatos beosztás azt eredményezi, hogy a programozók átlagos tudása folyamatosan emelkedik a csapatban.[3] A páros programozás során a programozók megvizsgálják a partnerük kódját, és elmondják a véleményüket. Ez ahhoz szükséges, hogy fejlesszék saját képességeiket, valamint hogy tanuljanak és tanítsanak is egy időben.
Csapatépítés és kommunikáció
A páros programozás megengedi a csapattagoknak, hogy gyorsan megosszák egymással tudásukat és véleményüket. Ez segít a programozóknak, hogy könnyebben kommunikáljanak. A páros programozás során növekszik a csapaton belüli információáramlás.[3]
Tanulmányok
Empirikus tanulmányok és metaelemzések is készültek a páros programozás témakörében. Az empirikus tanulmányok inkább a termékenység szintjét és a kód minőségét vizsgálják, míg a meta-elemzések a tesztelés és publikálás által létrejött elfogultságokra fókuszálnak.
A meta-elemzések szerint a programozó párok több tervezési lehetőséget vesznek fontolóra, mint az egyedülálló programozók. A páros programozók által készített kód karbantartása egyszerűbb és a tervezési hibákat hamarabb észreveszik a kód írása közben. A meta-elemzések eredményeinek értékelésekor elfogultságot állapítottak meg. Ennek folyományaként nem lehet megállapítani, hogy a páros programozás egységesen előnyös vagy hatékony lenne.[7]
Annak ellenére, hogy páros programozás alkalmazásával a feladat hamarabb elkészülhet, mintha egyedülálló programozó dolgozna rajta, a munkaórák száma párok esetén magasabb.[2] Az egyes feladatok között egyensúlyozni kell a gyorsabb kivitelezést és a csökkentett tesztelési időt a kódolás magasabb óradíjával. Az előbbi faktorok súlyozása projektenként és feladatonként vizsgálva eltérhet.
A páros programozás azon feladatoknál a legelőnyösebb, amelyeket a programozók nem tudnak teljes mértékben megérteni a munka elkezdésekor. Ezen feladatok nagy kihívást jelentenek, és magasszintű kreativitást és kifinomultságot követelnek.[2] Az egyes feladatok között egyensúlyozni kell a gyorsabb kivitelezést és a csökkentett tesztelési időt a kódolás magasabb óradíjával. Az előbbi faktorok súlyozása projektenként és feladatonként vizsgálva eltérhet.[7]
A programozók által teljes mértékben megértett, egyszerűbb feladatok esetén a páros programozás termelékenysége jóval alacsonyabb az egyke programozóhoz képest.[2][8] Lehetséges, hogy csökkenti a kódfejlesztés idejét, de fennáll a kód minőség csökkenésének kockázata.[7] A termelékenység ugyancsak csökken, ha két kezdő programozót állítanak rá egy feladatra megfelelő mentor segítsége nélkül.[9]
A teljesítménycsökkenés jelei
Az alábbi jelek mutatják, hogyha egy programozó pár nem teljesít megfelelően:
- Elszakadásról beszélünk, amikor a pár egyike fizikailag otthagyja a fejlesztőkörnyezetet, megnézi az e-mail fiókját, vagy elalszik.
- A „Figyeld a mestert” jelenség következhet be akkor, amikor a pár egyik tagja sokkal tapasztaltabb, mint a másik. Ebben a helyzetben a tapasztalatlanabb tag megfigyelő szerepbe kényszerülhet, a kódolás többségi része pedig a tapasztaltabb tagra marad. Ez a jelenség könnyen elszakadáshoz vezethet.
Párok létrehozásának lehetőségei
- Szakértő – Szakértő
- Egy ilyen páros nyilvánvaló választás lehet a legmagasabb termelékenység eléréséhez. Egy ilyen páros nagyszerű eredmények elérésére képes, de sokszor nem vesződnek új megoldások keresésével, mert nem kérdőjelezik meg a régi jól bevált gyakorlatokat.[2]
- Szakértő – Kezdő
- Ez a párosítás sok lehetőséget jelent a kezdőnek, hogy tanuljon a szakértőtől. Ez a párosítás új ötleteket létrehozására is alkalmas, mivel egy kezdő nagyobb eséllyel kérdőjelezi meg a bevált gyakorlatokat. A szakértőnek meg kell magyaráznia ezeket a módszereket, és eközben átgondolja ezeket, és lehetnek ötletei hogyan lehetséges ezeket tökéletesíteni. Ebben a párosításban a kezdő passzívvá válhat, és hezitálhat abban, hogy kifejtse a konstruktív ötleteit. Néhány szakértőnek valószínűleg nincs ahhoz türelme, hogy támogassa a kezdőt a konstruktív ötletelésben.[10]
- Kezdő – Kezdő
- Ez a párosítás jelentősen jobb eredményt biztosít, mintha ezek a kezdők külön-külön dolgoznának. Szakértői mentorálás nélkül nehezebb a kezdőknek fejlődni, ezért ezt a párosítást nem javasolják.[3]
Távoli páros programozás
A távoli páros programozás, másnéven virtuális vagy elosztott páros programozás során a két programozó földrajzi értelemben két különböző helyen tartózkodik[11], és közös munkát lehetővé tevő valós-idejű szerkesztő, megosztott asztal vagy IDE kiegészítő alkalmazás használatával dolgoznak. A személyes kapcsolat és a verbális kommunikáció hiánya miatt konfliktusok és zűrzavarok alakulhatnak ki..[12]
Támogató eszközök
- Képernyőmegosztó szoftverek
- Terminál multiplexerek
- Speciális elosztott szerkesztő eszközök
- Audio chat programok vagy VoIP szoftverek nagy segítséget nyújthatnak, ha a képernyőmegosztó program nem támogatja a hang alapú kommunikációt. Headsetek használatával a programozók keze szabad marad.
- Felhőalapú fejlesztő környezetek
- Együttműködést támogató páros programozás szolgáltatások
Hivatkozások
- ↑ Williams (2001. február 19.). „Integrating pair programming into a software development process”.: 27–36. doi:10.1109/CSEE.2001.913816.
- ↑ a b c d e Lui (2006. szeptember 1.). „Pair programming productivity: Novice–novice vs. expert–expert”. International Journal of Human–Computer Studies 64 (9), 915–925. o. [2011. július 20-i dátummal az eredetiből archiválva]. DOI:10.1016/j.ijhcs.2006.04.010. (Hozzáférés: 2012. november 18.)
- ↑ a b c d Cockburn (2000). „The Costs and Benefits of Pair Programming”. Proceedings of the First International Conference on Extreme Programming and Flexible Processes in Software Engineering (XP2000).
- ↑ Flor, Nick V..szerk.: Koenemann-Belliveau: Analyzing Distributed Cognition in Software Teams: A Case Study of Team Programming During Perfective Software Maintenance, Empirical Studies of Programmers: Fourth Workshop. Ablex, 36–64. o. (1991). ISBN 978-0-89391-856-9
- ↑ a b Williams (2000). „Strengthening the case for pair programming”. IEEE Software 17 (4), 19–25. o. DOI:10.1109/52.854064.
- ↑ Williams (2001). „In support of student pair programming”. ACM SIGCSE Bulletin 33 (1), 327–31. o. DOI:10.1145/366413.364614.
- ↑ a b c Hannay (2009. július 1.). „The Effectiveness of Pair Programming: A Meta-Analysis”. Information and Software Technology 51 (7), 1110–1122. o. DOI:10.1016/j.infsof.2009.02.001.
- ↑ Arisholm (2007. február 1.). „Evaluating Pair Programming with Respect to System Complexity and Programmer Expertise”. IEEE Transactions on Software Engineering 33 (2), 65–86. o. [2010. október 29-i dátummal az eredetiből archiválva]. DOI:10.1109/TSE.2007.17. (Hozzáférés: 2008. július 21.)
- ↑ Stephens: Will Pair Programming Really Improve Your Project?. (Hozzáférés: 2011. május 28.)
- ↑ Williams, L.. Pair Programming Illuminated. Boston: Addison-Wesley Professional (2003. november 6.). ISBN 9780201745764
- ↑ Flor (2006). „Globally distributed software development and pair programming”. Communications of the ACM 49 (10), 57–8. o. DOI:10.1145/1164394.1164421.
- ↑ Schümmer (2009. szeptember 1.). „Understanding Tools and Practices for Distributed Pair Programming”. Journal of Universal Computer Science 15 (16), 3101–3125. o. (Hozzáférés: 2010. április 30.)
Fordítás
Ez a szócikk részben vagy egészben a Pair programming című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.