Kasutaja:Muramara/Paarisprogrammeerimine

Allikas: Vikipeedia
Kolleegid paarisprogrammeerimas

Paarisprogrammeerimine on tarkvaraarendustehnika, kus kaks programmeerijat töötavad korraga ühes tööjaamas. Üks, juht, kirjutab koodi, samal ajal kui teine, vaatleja, analüüsib iga koodirida, kui see sisestatakse[1]. Kaks programmeerijat vahetavad sageli rolle.

Vaatleja vaatleb ka töö strateegilist suunda, esitades ideid paranduste tegemiseks ja tulevaste probleemide lahendamiseks. Tänu sellele saab juht ülesande täitmisel täielikult keskenduda taktikalistele aspektidele, kasutades vaatlejat giidina.

Kasulikkus[muuda | muuda lähteteksti]

Paarisprogrammeerimisel kulub koodi esitamiseks suurem inimtundide arv kui individuaalsel programmeerimisel. Läbiviidud katsed näitasid, et koodi valmimisele kuluva aja suurenemine on vahemikus 15% kuni 100%[2], kuid paarisprogrammeerimise tulemusena on koodis umbes 15% vähem vigu.[3] Koos koodi väljatöötamise ajaga kajastuvad investeeringute tasuvuses ka muud tegurid, näiteks tegevusala toetamise kulud ja kvaliteedi tagamine. Paarisprogrammeerimine võib teoreetiliselt neid kulusid kompenseerida, kuna programmide defektide arv on väiksem.

Õppimine[muuda | muuda lähteteksti]

Paarisprogrammeerimisel toimub pidev teadmiste jagamine. Paljud allikad viitavad sellele, et õpilased, kes programmeerivad paaris, on oma teadmistes kindlamad kui need, kes programmeerivad üksinda[4]. Õppimisel võib kasutada ka grupiprogrammeerimist, kus iga programmeerija suhtleb ja töötab kõigi teiste meeskonna programmeerijatega, mitte ainult ühe inimesega. Selline meetod aitab kaasa süsteemi tundmaõppimisele kogu meeskonnas.[3] Mitmekesi programmeerimine võimaldab programmeerijal uurida meeskonnaliikme koodi ja anda tagasisidet, mis aitab arendada koodikirjutaja oskusi.

Uuringud[muuda | muuda lähteteksti]

Paarisprogrammeerimise uurimisel on kasutatud nii empiirilisi uuringuid kui ka metaanalüüsi. Empiirilised uuringud kipuvad uurima tootlikkuse taset ja koodi kvaliteeti, samal ajal kui metaanalüüs keskendub pigem koodi katsetamise ja avaldamise protsessis kasutusele võetud eelarvamustele.

Metaanalüüsi käigus selgus, et paarisprogrammeerijad asetavad rohkem rõhku disainile kui programmeerijad, kes töötavad üksi, ning kasutavad lihtsama ülesehitusega disainilahendusi ja märkavad nendega seonduvaid vigu kiiremini. Analüüsi tulemusena jõuti järeldusele, et paarisprogrammeerimine ei ole ühtlaselt kasulik ega efektiivne.[5]

Kuigi paarisprogrammeerijad võivad kahepeale ülesandega kiiremini hakkama saada, on inimtundide koguarv suurem võrreldes üksi programmeerimisega[2].  Seetõttu peab projektijuht leidma tasakaalu kiirema tööaja ja vähendatud testimis- ja silumisaja ning kõrgema koodi maksumuse vahel. Nende tegurite suhteline kaal võib projekti ja ülesande põhjal varieeruda.

Paarisprogrammeerimine on kõige suurema kasuteguriga ülesannete puhul, mida programmeerijatel on enne alustamist keeruline mõista: näiteks ülesanded, mis nõuavad loovust ja elutarkust.[2] Paarisprogrammeerimise kasutamine võib olla kasulik keeruliste programmide kõrge kvaliteedi ja õigsuse saavutamiseks, kuid see suurendaks märkimisväärselt ka arendustegevust (kulusid)[5].

Lihtsate ülesannete puhul, mida paar juba täielikult mõistab, on paarisprogrammeerimise tulemuseks tootlikkuse vähenemine.[2][6] See võib vähendada koodi väljatöötamise aega, kuid võib samuti ohustada programmi kvaliteeti.[5] Tootlikkus võib langeda ka, kui programmeerima määratakse paar, mis koosneb kahest algajast, kuid neid ei juhendata vajalikul määral.[7]

Võimalikud paarikombinatsioonid[muuda | muuda lähteteksti]

Ekspert-ekspert[muuda | muuda lähteteksti]

Eksperdi ja eksperdi koostöö võib tunduda olevat ilmselge valik kõrgeima tootlikkuse saavutamiseks ja võib anda suurepäraseid tulemusi, kuid sageli jäävad kõrvale uudsed lahenduskäigud, kuna kumbki pool tõenäoliselt ei kahtle paarilise programmeerimisoskuses.[2]

Ekspert-algaja[muuda | muuda lähteteksti]

Eksperdi ja algaja paaristamine loob eksperdile võimalusi algaja juhendamiseks. Selline kooslus võib soodustada uute programmeerimisideede teket, kuna algaja puhul on tõenäolisem, et ta vaatab mööda väljakujunenud programmeerimisharjumustest. Sellise paarikombinatsiooniga on oht, et algaja jälgib passiivselt eksperdi tööd ning hakkab kahtlema oma teadmiste panustamise vajalikkuses. Samuti ei pruugi mõnel eksperdil olla piisavalt kannatlikkust algajaga tegelemiseks.[8]

Algaja-algaja[muuda | muuda lähteteksti]

Algaja ja algaja ühendamine võib anda tulemusi, mis oleks oluliselt paremad kui kahel algajal, kes töötavad iseseisvalt, kuid siiski on sellise paari tööefektiivsus üldjuhul kehvem kui ülalmainitud paaridel.[3]

Virtuaalne paarisprogrammeerimine[muuda | muuda lähteteksti]

Virtuaalne paarisprogrammeerimine (inglise keeles remote pair programming, virtual pair programming või distributed pair programming[9]) on paarisprogrammeerimine, kus kaks programmeerijat asuvad erinevates kohtades[10]. Programmeerimiseks kasutatakse redigeerimisprogrammi,  mille abil saab koodi reaalajas muuta, jagatud töölauda või spetsiaalset IDE pistikprogrammi. Virtuaalne paarisprogrammeerimine toob kaasa raskusi, mis puuduvad klassikalisel paarisprogrammeerimisel - näiteks probleemid sünkroniseerimisega ja puuduliku verbaalse suhtlemisega, mis võivad põhjustada segadust ning konflikte.

Viited[muuda | muuda lähteteksti]

  1. "Integrating pair programming into a software development process".
  2. 2,0 2,1 2,2 2,3 2,4 "Pair programming productivity: Novice–novice vs. expert–expert" (PDF).
  3. 3,0 3,1 3,2 "The Costs and Benefits of Pair Programming" (PDF).
  4. "Strengthening the Case for Pair Programming" (PDF).
  5. 5,0 5,1 5,2 "The effectiveness of pair programming: A meta-analysis".
  6. "Evaluating Pair Programming with Respect to System Complexity and Programmer Expertise".
  7. "Will Pair Programming Really Improve Your Project?".
  8. Pair Programming Illuminated.
  9. "Pair programming".
  10. "Globally distributed software development and pair programming".