Paarisprogrammeerimine

**Paarisprogrammeerimine** on tarkvaraarenduses agiilne meetod, kus kaks programmeerijat teevad koostööd programmi loomisel. Üks paarilisest kirjutab koodi ning sel ajal teine paariline (vaatleja/navigeerija) vaatab läbi iga sisestatud koodirea. Selle programmeerimistehnika juures on tavaline, et paarilised vahetavad tihti omavahel rolle.

Läbivaataja rollis oleval paarilisel on strateegiline roll programmi valmimisel, tema ülesandeks on märgata võimalikke veakohti programmis, suunata tegevust ning soovitada ideid. Läbivaataja eesmärgiks on abistada või lihtsustada koodikirjutaja rollis oleva inimese tööd võimalikult palju, et tagada töö efektiivsus. Programmeerija peaks saama keskenduda vaid koodi kirjutamisele, kasutades läbivaatajat kontrollijana ja nõuandjana.

## Majanduslikud tegurid
On leitud, et paarisprogrammeerimisega suureneb inimtöö tundide arv ligikaudu 15–100% võrreldes üksi töötamisega. Seevastu on aga täheldatud, et paaristööna valminud koodijupid sisaldavad keskmiselt 15% vähem vigu. Majanduslikku tasuvust vaadeldes tuleb lisaks koodi valmimiseks kulunud ajale arvestada erinevaid tegureid, näiteks programmi töökindlus. Paarisprogrammeerimine vähendab koodis tehtavate vigade arvu, mis omakorda vähendab kvaliteedi tagamisele mõeldud kulutusi.

## Töö kvaliteet
Paarisprogrammeerimine võimaldab mitmekesisemaid lahendusi:

* enamasti on kummalgil programmeerijal erinevad eelteadmised;
* kumbki programmeerija mõistab antud juhiseid veidi erinevalt;
* kumbki programmeerija läheneb probleemile erinevalt, sest tööjaotus nõuab seda.

Kuna paarisprogrammeerimisel jagavad kolleegid oma tööülesande eesmärke ja plaane, siis peavad nad arusaamatuste korral jõudma omavahel kokkuleppele. Probleeme ja lahenduskäike arutades võetakse läbi oluliselt rohkem võimalike lahenduskäike, kui oleks suutnud üksik programmeerija. Antud teguviis suurendab oluliselt valmiva koodilõigu kompaktsust ning välistab kehvemaid lahendusviise.

## Rahulolu
Paarisprogrammeerijate veebiküsitluses (2000. aastal) selgus, et 96% vastajatest leidis, et nad nautisid töötegemist rohkem kui üksi tehes. 95% küsitletavatest nentisid, et nad olid oma lahenduskäikudes kindlamad, kui nad töötasid paaris.
## Teadmised
Ei ole vahet, kas paarisprogrammeerimine leiab aset klassiruumis või kontoris, teadmisi jagatakse omavahel pidevalt. Paljud allikad viitavad sellele, et õpilased on oluliselt enesekindlamad paarisprogrammeerimisel ning õpivad programmeerimiskeele reeglitele lisaks ka visuaalselt paremini oma programme vormistama. Meeskonnasisene paariliste vahetamine aitab jagada iga programmeerija teadmisi terves meeskonnas ning kasulike töövõtete levimine kiirem ning efektiivsem terves meeskonnas. Paarisprogrammeerimine võimaldab programmeerijatel uurida oma partneri koodi ja anda tagasisidet, mis arendab oskust anda kohest tagasisidet tööle, mis valmib kellegi teise eestvedamisel.

## Meeskonnasisene koostöö
Paarisprogrammeerimine nõuab paarilistelt probleemide ja lahenduskäikude jagamist, mis läbi on vähem tõenäoline, et head ideed ja mõtted jääksid peitu. Pidev suhtlus üksteisega õpetab suhtlema vabamalt ning arusaadavamalt. Eeltoodud teguviis parandab koostöövõimet projektiga tegelejate (meeskonna liikmete) vahel ning parandab üldist meeskonnasisest infovoogu.

## Märgid kehvast koostööst
Järgnevad märgid iseloomustavad kehva koostööd:
* Tööst taganemine, üks paarilisest tegeleb pidevalt projektiväliste tegevustega, näiteks telefonist Facebooki või e-posti sirvimine.
* "Jälgi töötegijat" nähtus esineb, kui üks paarilisest on oluliselt targem või kindlam kui teine paariline. Tihti jääb nõrgem paariline pealtvaataja rolli ning kogenum teeb töö põhiliselt üksi.

## Paariliste kombinatsioone
;Tegija tegijaga
:Kahte head oskajat üksteisega paari panna tundub väga ilmselge valik, et saavutada parim tulemus. Antud paarilised suudavad tihti tagada professionaalsed tulemused, kuid enamasti antud metoodikaga ei võta kasutusele uudseid lahenduskäike. Kogenud programmeerijad on vähem tõenäolisemad küsima abi millegi lahendamisel, kuna on välja kujunenud rutiin, kuidas teatud tüüpi probleeme lahendada.
;Tegija algajaga
:Oskajat algajaga paari pannes annab oskajale võimaluse oma teadmisi ning kogemusi jagada algajale. Moodustatud paar võib tihti juhtida tee uutele lahendustele, sest algaja on entusiastlik küsima erinevaid küsimusi, miks nii ja miks mitte nõnda. Antud paar lahendab probleeme tõenäoliselt oluliselt aeglasemalt kui kaks oskajat, kuid antud paaris on tõenäolisem, et uudsed ideed saavad kajastatud. Võib ka tekkida olukord, kus algaja tunneb ennast ebamugavalt, ning ei julge näidata üles huvi tehtava vastu, kartes jätta endast lolli muljet. Samuti võib ka juhtuda, et oskajal ei ole kannatust kommenteerida kirjutatut entusiastlikule algajale, ning sel juhul ei ole tehtav töö tõhus.
;Algaja algajaga
:Algajate paari panemine võib anda palju paremad tulemused, kui kaks algajat individuaalselt tööd tehes, kuid antud variant on kõige ebapopulaarsem. Algaja koostöötamine oskajaga on oluliselt efektiivsem ja kiirem moodus algaja õpetamiseks ning seetõttu eelistatakse paari panna oskajat algajaga kui et lasta kaks algajat omavahel kokku.

## Vaata ka
* Ekstreemprogrammeerimine

## Viited

Tõlgitud ingliskeelsest Wikipediast Pair programming (16.01.2019)