Parprogrammering
To utviklere. Én datamaskin. Ett tastatur. Begge løser oppgaven sammen.
Det høres kanskje rart ut. Er det ikke raskere å jobbe hver for seg? Nei. Microsoft spurte sine egne utviklere, og de som parprogrammerer rapporterer færre feil, bedre kode, og at teamet faktisk forstår hva de andre har skrevet. De fleste tech-intervjuer har nå en samarbeidsdel: har dere aldri kodet høyt sammen med noen andre, blir det tungt å vise hva dere kan.
Dette kalles parprogrammering, eller pair programming.
Den praktiske gevinsten tar litt tid å oppdage men: dere løser problemer raskere og sitter ikke fast like lenge. Når én stopper opp, drar den andre i gang igjen. Det er som å tenke høyt om problemet, bortsett fra at partneren din svarer tilbake og oppdager kanskje feil du ikke ser selv.
De to rollene
Parprogrammering fungerer bare hvis begge gjør jobben sin. Og dere har to forskjellige jobber.
Sjåføren sitter med tastaturet og skriver koden. Sjåføren fokuserer på detaljene: syntaks, stavemåte, neste linje. Som sjåfør skal du prøve å tenke litt høyt når du jobber, ikke presentere men gi den andre innblikk i det du tenker: «OK, semikolon her... så må jeg lukke div-en... vent, heter det classList eller classname?».
Navigatøren sitter ved siden av og tenker et skritt foran. Navigatøren holder oversikten: Hva er målet? Er vi på rett vei? Hva har vi glemt? Navigatøren leser koden mens sjåføren skriver, og sier fra når noe ser feil ut.
Litt som en biltur
Tenk på det som en biltur. Sjåføren ser på veien rett foran. Navigatøren ser på kartet, følger med på bensinmåleren, og sier «ta av til høyre om to kilometer». Begge jobber hele tiden, bare med forskjellige ting.
En enda tydeligere måte å tenke på rollene: sjåføren er på, det som skjer akkurat nå, på denne linjen. Navigatøren ligger litt foran, noen sekunder eller minutter. Hvis dere begge står på stamme sted er det ingen som ser fremover.
To vanlige feil
«Jeg bare ser på.» Navigering er aktivt arbeid. Hvis sjåføren skriver i stillhet og navigatøren sjekker telefonen, er det ikke parprogrammering. Det er én person som koder med et vitne.
«Jeg bestemmer hvert tastetrykk.» Navigatøren skal ikke diktere hver bokstav eller henge over skulderen til sjåføren. Sjåføren har frihet til å skrive sine egne linjer. Navigatørens jobb er å tenke fremover, ikke å kontrollere hva sjåføren gjør.
Hvordan virker det?
Bytt roller ofte. Gjerne hvert tredje eller femte minutt i starten. Når dere blir mer komfortable, lengre intervaller. En timer på skjermen bestemmer, ikke dere. Når timeren piper: reis dere opp, bytt stoler, og den nye sjåføren sier målet for neste bit høyt før kode blir skrevet.
Begge snakker. Sjåføren mumler/tenker høyt underveis. Navigatøren stiller spørsmål og foreslår ting. Hvis det blir helt stille i tretti sekunder, sier den andre: «hva tenker du?». Hvis dere ikke vet hva dere skal si, prøv:
Setningsstartere
«Jeg tror...», «Hva hvis vi...», «Sjekk linje sju, jeg tror det er feil der», «Hvorfor gjorde du det sånn?»
Koden tilhører paret. Det finnes ingen «min del» og «din del». Dere skrev den sammen. Dere feilsøker den sammen. Dere får æren, eller problemene, sammen.
Én datamaskin. Én skjerm. Ikke to. Lukk den andre laptoppen. Hvis navigatøren slår opp ting på sin egen skjerm mens sjåføren skriver, jobber dere parallelt, ikke sammen. Poenget er at dere deler det samme skjermbildet og den samme tanken.
Utforsk sammen når dere står fast. Spør partneren din. Slå opp i dokumentasjonen eller på nettet, sammen, på den ene skjermen.
Vær snill med partneren din. Dere kommer til å være uenige. Partneren din kommer til å foreslå noe du synes er feil, og omvendt. Det er greit. Prøv forslaget. Hvis det ikke funker, vet dere mer enn før.
Hvorfor det er verdt det
Den viktigste grunnen er denne: for å navigere må du forklare. For å forklare må du forstå. Du kan ofte skrive kode du egentlig ikke skjønner, men du kan ikke forklare kode du ikke skjønner uten å bli avslørt. Parprogrammering tvinger frem den typen forståelse vi faktisk er ute etter.
I tillegg:
- Dere fanger feil raskere. To par øyne ser det ett par øyne går glipp av.
- Dere lærer hverandres triks. Partneren din løser ting på en annen måte enn deg, og det er verdifult.
- Dere sitter ikke fast like lenge. Den som ikke står fast, drar den andre videre.
Warning
Dette kommer til å føles rart første gang. Det er helt normalt. Gi det tre økter før dere bestemmer dere for hva dere synes.