06.08.2013 Views

En studie om parprogrammering i praktiken - Lunds Tekniska ...

En studie om parprogrammering i praktiken - Lunds Tekniska ...

En studie om parprogrammering i praktiken - Lunds Tekniska ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>En</strong> <strong>studie</strong> <strong>om</strong> <strong>parprogrammering</strong> i <strong>praktiken</strong><br />

Mia Nyström<br />

Karin Wanhainen<br />

Johan Rix<br />

29 maj 2002<br />

Sammanfattning<br />

Parprogrammering är en av de mest <strong>om</strong>diskuterade grundstenarna i Extreme<br />

Programming (XP). All produktionskod skall skrivas i par och på detta sätt skall<br />

programkodens stabilitet och kvalitet öka.<br />

I kursen Inledande programvaruteknik på <strong>Lunds</strong> <strong>Tekniska</strong> Högskola (LTH) introducerades<br />

XP s<strong>om</strong> utvecklingsmetod för det obligatoriska projektet i andra årskursen.<br />

Kursen var teknologernas första kontakt med XP i <strong>praktiken</strong>. <strong>En</strong> kvantitativ<br />

<strong>studie</strong> bland teknologerna visade på problem och åsikter <strong>om</strong> <strong>parprogrammering</strong>.<br />

Studien gen<strong>om</strong>fördes med två enkätundersökningar, en före och en efter projektet.<br />

Denna artikel redogör för och jämför de resultat s<strong>om</strong> erhölls från enkätundersökningarna.<br />

Artikeln presenterar studenters åsikter <strong>om</strong> <strong>parprogrammering</strong> och ger<br />

en inblick i hur <strong>parprogrammering</strong> uppfattas av teknologer med två år kvar till civilingenjörsexamen.<br />

Resultaten har även sammanställts i form av riktlinjer för hur<br />

man bör agera s<strong>om</strong> coach vad gäller <strong>parprogrammering</strong>.<br />

1 Inledning<br />

1.1 Parprogrammering<br />

Parprogrammering är en av de mest <strong>om</strong>diskuterade grundstenarna i Extreme Programming.<br />

All produktionskod skall skrivas i par och på detta sätt skall stabiliteten och<br />

kvaliteten på koden öka. Det har visat sig att par är 40% mer effektiva än enskilda programmerare<br />

(Williams, Kessler, Cunningham, Jeffries, 2000) och att kod producerad<br />

av par innehöll ungefär 15 % färre fel än kod producerad av enskilda programmerare<br />

(Williams, 2000). Det finns många tänkbara anledningar till dessa förbättringar:<br />

Behovet av granskning av koden minskar vid <strong>parprogrammering</strong>, då detta är något<br />

s<strong>om</strong> sköts kontinuerligt under kodningen. S<strong>om</strong> en följd av den kontinuerliga<br />

kodgranskningen minskar även felfrekvensen i koden.<br />

Programmerarna uppskattar att samarbeta och tillsammans nå resultat.<br />

Möjligheterna att diskutera fram bra lösningar minskar risken att fastna i problemlösningen.<br />

Om ett utvecklingsteam byter par ofta, sprids k<strong>om</strong>petensen och kunskapen, inte<br />

bara rörande den aktuella koden utan även <strong>om</strong> allmänna programmeringsdetaljer,<br />

algoritmer och tekniker.<br />

1


1.2 Projektbeskrivning<br />

I kursen Inledande programvaruteknik på LTH introducerades XP s<strong>om</strong> utvecklingsmetod<br />

för det obligatoriska projektet. Kursen var teknologernas första kontakt med XP i<br />

<strong>praktiken</strong>. De flesta av kursdeltagarna hade vid kursens början inte någon erfarenhet<br />

av programmering i projekt med tyngre arbetsmetoder, men alla hade programmerat<br />

både enskilt och i par tidigare. När kursen Inledande programvaruteknik läses går studenterna<br />

minst fjärde terminen på LTH. De har då 5 terminer kvar innan de skall ut på<br />

arbetsmarknaden.<br />

Den praktiska delen av projektet gen<strong>om</strong>fördes under sex iterationer <strong>om</strong> åtta timmar<br />

vardera. Varje team bestod av 8-10 programmerare samt en eller två coacher. Många<br />

av medlemmarna i de olika teamen var inte bekanta med varandra vid projektets början<br />

och någon speciell gruppdynamik var inte utarbetad.<br />

Uppgiften för varje team var att implementera ett tidtagningssystem för olika typer<br />

av motorcykeltävlingar.<br />

2 Undersökningen<br />

Undersökningen utfördes gen<strong>om</strong> att studenterna fick svara på två enkäter, en innan projektets<br />

start och en efter avslutat projekt. Resultaten från enkäterna har sedan jämförts<br />

och sammanställts. 107 studenter har medverkat i <strong>studie</strong>n, varav 16 stycken är kvinnor.<br />

Tyvärr gör det låga antalet kvinnor att resultaten vid jämförelser mellan kvinnor och<br />

män inte alltid kan ses s<strong>om</strong> självklara fakta.<br />

2.1 <strong>En</strong>kät 1<br />

I Bilaga A presenteras den enkät s<strong>om</strong> delades ut under första iterationen. <strong>En</strong>käten delades<br />

ut till 107 studenter och besvarades av 102 studenter. Frågorna behandlar allmänna<br />

uppfattningar <strong>om</strong> egen k<strong>om</strong>petens, <strong>parprogrammering</strong> i allmänhet, egenskaper hos programmeringspartner<br />

samt hur <strong>parprogrammering</strong> bör gen<strong>om</strong>föras i <strong>praktiken</strong>.<br />

2.2 <strong>En</strong>kät 2<br />

I Bilaga B presenteras den enkät s<strong>om</strong> delades ut under sista iterationen. <strong>En</strong>käten delades<br />

ut till 107 studenter och besvarades av 97 studenter. Frågorna var utformade i<br />

likhet med den första enkäten för att intressanta jämförelser och eventuella förändringar<br />

skulle kunna noteras. Frågor <strong>om</strong> egenupplevd k<strong>om</strong>petens, eventuella k<strong>om</strong>petensförbättringar,<br />

egenskaper hos programmeringspartner samt teamets praktiska utförande av<br />

<strong>parprogrammering</strong> behandlades.<br />

2


3 Analys av resultat<br />

I nedanstående stycken jämförs och analyseras resultat från de två enkätundersökningarna.<br />

Vid analys av resultaten gick det att konstatera att inte alla frågor var tillräckligt<br />

gen<strong>om</strong>arbetade. Vissa frågor kunde visa på intressanta resultat, men <strong>om</strong> följdfrågor<br />

saknades var det ibland svårt att analysera varför resultaten såg ut på ett visst sätt.<br />

Frågor angående den egenupplevda k<strong>om</strong>petensen visade anmärkningsvärda resultat<br />

och tas kort upp i stycke 3.5.1 trots den vaga kopplingen till <strong>parprogrammering</strong>.<br />

3.1 Studenters inställning till <strong>parprogrammering</strong><br />

Det stora flertalet av studenterna var positiva eller mycket positiva till <strong>parprogrammering</strong><br />

både före och efter projektet, vilket kan ses i figuren nedan. S<strong>om</strong> kan ses i figur<br />

Figur 1: Studenternas inställning till <strong>parprogrammering</strong> innan och efter projektet.<br />

3.1 uppgav 73 % innan projektets start att de var positiva eller mycket positiva till <strong>parprogrammering</strong>.<br />

Siffran minskade något under projektets gång och motsvarande siffra<br />

efter slutfört projekt var 68 %, vilket dock fortfarande kan betraktas s<strong>om</strong> högt. Man kan<br />

se ur diagrammet att antalet mycket positiva har minskat samtidigt s<strong>om</strong> antalet negativa<br />

och mycket negativa har ökat. Antalet positiva har dock ökat men det leder ändå till att<br />

den sammanlagda attityden har sjunkit något.<br />

Att attityden har sjunkit, <strong>om</strong> än minimalt, kan förklaras av flera anledningar:<br />

Coachernas brist på rutin kan i några fall ha lett till en olycklig arbetsfördelning<br />

och uppdelning av programmeringspartners.<br />

I många fall fick programmerare sitta tillsammans och utföra uppgifter s<strong>om</strong> ansågs<br />

vara för enkla, vilket kan ha lett till en känsla av ineffektivitet. Programme-<br />

3


arna kan då ha bildat sig uppfattningen att det just i detta projekt var onödigt<br />

med <strong>parprogrammering</strong> och slöseri med resurser.<br />

Datorrummen s<strong>om</strong> användes var dimensionerade för att rymma endast halva antalet<br />

personer av de s<strong>om</strong> vistades där, vilket ledde både till dålig luft och obekväma<br />

arbetsställningar.<br />

Studenterna är vana att arbeta i par med sina k<strong>om</strong>pisar och var inte helt beredda<br />

på att parprogrammera med folk de inte kände eller passade ihop med.<br />

Siffrorna kanske hade blivit annorlunda <strong>om</strong> undersökningen gjorts ute i arbetslivet.<br />

I arbetslivet är <strong>parprogrammering</strong> inte ett lika vanligt arbetssätt s<strong>om</strong> under utbildningen<br />

och attityden till det, speciellt bland äldre programmerare, är troligtvis inte lika positiv<br />

s<strong>om</strong> på högskolan. Den initiala inställningen hade därför troligtvis varit lägre.<br />

<strong>En</strong> fråga i den andra enkäten behandlade frågeställningen <strong>om</strong> det fanns tillfällen<br />

under projektet då det hade varit bättre att programmera ensam. Det stora flertalet av<br />

gruppmedlemmarna tyckte att det fanns sådana tillfällen och att det främst skulle vara<br />

bättre att vara ensam vid mycket enkel programmering. Resultatet från den frågan<br />

stöder alltså teorin s<strong>om</strong> läggs fram i punkt 2 ovan och det skulle kunna vara en möjlig<br />

anledning till att attityden har sjunkit något.<br />

3.2 Praktiskt utförande av parbyten<br />

3.2.1 Vem ska välja partner?<br />

Studenterna fick svara på frågor <strong>om</strong> hur det praktiskt bör gå till med parbyten under<br />

iterationen och vad coachen bör ha för roll i det hela. Resultaten från frågan <strong>om</strong> vem<br />

s<strong>om</strong> bör välja programmeringspartner framgår av figur 2. Vid den första undersök-<br />

Figur 2: Vem s<strong>om</strong> bör välja programmeringspartner enligt studenterna.<br />

ningen tyckte 78% av studenterna att programmerarna själva ska bestämma med vem<br />

i gruppen man ska programmera. 20% tyckte att coachen skulle bestämma partner och<br />

4


esterande 2% tyckte att både programmerare och coach bör bestämma ihop. På samma<br />

fråga efter projektet svarade färre studenter, 66%, att programmerarna själva borde<br />

välja partner. Antalet s<strong>om</strong> tyckte att coachen skulle välja hade dock stigit till 24% och<br />

11% tyckte nu att båda skulle välja tillsammans.<br />

Resultaten skulle kunna förklaras med att studenterna föredrar den metod s<strong>om</strong> deras<br />

coach har tillämpat i deras egen grupp. Det visade sig nämligen att de flesta s<strong>om</strong><br />

svarade att coachen skulle bestämma partner k<strong>om</strong>mer från grupper där coachen i större<br />

utsträckning under projektet har styrt vilka programmerare s<strong>om</strong> ska programmera ihop.<br />

Det är i den här frågan även värt att notera att det i enkäterna ej förek<strong>om</strong> något<br />

alternativ båda utan att de enkäter där båda alternativen var ikryssade här har tolkats<br />

s<strong>om</strong> ett tredje alternativ. Hade det funnits ett alternativ båda är det möjligt att siffrorna<br />

hade sett annorlunda ut.<br />

3.2.2 Coachens roll<br />

<strong>En</strong> fråga i andra enkäten berörde hur studenterna tyckte att coachen skulle agera och<br />

vad han/hon skulle ha för roll vid parbyten. Frågan hade fem förskrivna alternativ:<br />

Han/Hon ska se till att det blir gjort.<br />

Han/Hon bör se till att de s<strong>om</strong> samarbetar bra får jobba tillsammans.<br />

Han/Hon bör se till att sprida och öka k<strong>om</strong>petensen i gruppen.<br />

Han/Hon bör se till att paren byts ifall ett par har kört fast.<br />

Han/Hon bör låta utvecklarna sköta det helt själva.<br />

Den stora majoriteten, 60% och 59% tyckte att coachens huvuduppgifter var att<br />

sprida och öka k<strong>om</strong>petensen i gruppen samt att se till att paren byts ifall ett par har kört<br />

fast. 44% tyckte även att det är coachens uppgift att se till att byten sker överhuvudtaget<br />

och 34% tyckte att coachen skulle para ihop de s<strong>om</strong> samarbetar bra tillsammans.<br />

Frågan gav även upphov till en del spontana k<strong>om</strong>mentarer. Någon tyckte exempelvis<br />

att coachen skulle placera folk på den story de passar bäst för.<br />

Resultaten från de båda frågeställningarna ovan visar att parbyten bör baseras på<br />

ett samspel mellan programmerare och coach. Coachen bör skaffa sig uppfattning <strong>om</strong><br />

hur de olika gruppmedlemmarna arbetar tillsammans och kan sedan med fördel föreslå<br />

vilka s<strong>om</strong> kan programmera ihop vid nästa byte. Coachen bör även ha koll på ungefär<br />

vilka delar av koden de olika programmerarna är insatta i så att någon s<strong>om</strong> är väl insatt<br />

i ett visst stycke kod kan arbeta tillsammans med någon s<strong>om</strong> ej är så väl insatt i just den<br />

delen av koden och på så sätt sprida kodkänned<strong>om</strong>en i gruppen. Det yttersta beslutet<br />

<strong>om</strong> vilka s<strong>om</strong> ska programmera ihop måste dock programmerarna själva ansvara för<br />

och coahens förslag ska hellre ses s<strong>om</strong> rek<strong>om</strong>mendationer för att på bästa sätt sprida<br />

k<strong>om</strong>petensen i gruppen.<br />

5


3.2.3 Hur ofta bör man byta partner?<br />

<strong>En</strong> fråga behandlade hur ofta man bör byta programmeringspartner för att få utvecklingsarbetet<br />

effektivt. <strong>En</strong> fråga <strong>om</strong> hur ofta grupperna faktiskt hade bytt partners ställdes<br />

också. Resultaten från de båda frågorna kan betraktas i figur 3 nedan. Vad s<strong>om</strong><br />

nedan refereras till s<strong>om</strong> en iteration <strong>om</strong>fattade i detta projektet 8 timmars arbete, och<br />

en uppgift s<strong>om</strong> refereras till s<strong>om</strong> en story kunde ta allt från en till åtta timmar. De flesta<br />

Figur 3: Hur ofta man bör byta programmeringspartner jämfört med hur ofta studenterna<br />

upplevde att de faktiskt bytte programmeringspartner<br />

av studenterna, 60%, upplevde att de i deras grupp hade bytt partner ungefär en gång<br />

per iteration. Några få, 10%, uppgav att de hade bytt partner efter varje story och 25%<br />

hade bytt mindre än en gång per iteration. De s<strong>om</strong> sa sig ha bytt partner efter varje<br />

story representerade främst två av de tolv grupperna, men någon enstaka ur de andra<br />

grupperna hade också angett det alternativet.<br />

Följdfrågan var sedan hur ofta studenterna tycker att man bör byta partner i ett<br />

projekt av liknande karaktär. Här visade resultaten att 27% hade velat byta partner<br />

efter varje story, 58% en gång per iteration och 8% mindre än en gång per iteration.<br />

Till frågan erhölls många spontana k<strong>om</strong>mentarer s<strong>om</strong> visade att det är viktigt att byta<br />

när det faller sig naturligt, tex när det är en naturlig paus under iterationen. Med tanke<br />

på att en story kan variera ganska kraftigt i tidslängd verkar det alltså s<strong>om</strong> att det inte<br />

riktigt är tiden s<strong>om</strong> bör avgöra när ett byte ska ske, utan snarare <strong>om</strong> det faller sig<br />

naturligt eller ej. Om man även tar hänsyn till att en story i detta projektet ofta inte tog<br />

längre tid än några få timmar kan resultaten även uppfattas s<strong>om</strong> att studenterna hade<br />

velat byta partners lite oftare än vad de faktiskt gjorde under projektet. De vill inte byta<br />

partner mitt i en uppgift, men heller inte för sällan.<br />

<strong>En</strong> intressant vidareutveckling av <strong>studie</strong>n hade varit att k<strong>om</strong>plettera med en ordenligt<br />

undersökning av coacherna och hur de har lett sina grupper. Många av de avvikande<br />

resultaten s<strong>om</strong> har framk<strong>om</strong>mit representerar en eller några speciella grupper av de tolv<br />

och det vore då intressant att ta reda på <strong>om</strong> coachen i detta fallet har agerat annorlunda<br />

i jämförelse med de andra coacherna.<br />

6


3.2.4 Hur många i en grupp bör man programmera med?<br />

Studenterna fick svara på frågan <strong>om</strong> hur många i en grupp <strong>om</strong> tio personer de tycker att<br />

man bör parprogrammera med. Resultaten kan beskådas i figur 4 nedan. Innan projektet<br />

Figur 4: Hur många i en grupp <strong>om</strong> tio personer man bör parprogrammera med.<br />

tyckte 52% att man ska programmera med de flesta i en sådan grupp. 27% tyckte alla<br />

och 19% tyckte bara några. Efter projektet tyckte 58% att man ska programmera med<br />

de flesta i gruppen och de s<strong>om</strong> tyckte att man skulle programmera med alla hade sjunkit<br />

lite i antal. Den minimala minskningen kan eventuellt förklaras med att vissa s<strong>om</strong> inte<br />

hade räknat med det har fått uppleva hur det är att programmera med någon de inte<br />

alls passar ihop med eller att det har förek<strong>om</strong>mit personer med samarbetssvårigheter i<br />

vissa grupper. Slutsatsen bör dock vara att man bör programmera med de allra flesta i<br />

en grupp <strong>om</strong> 10 personer, men inte nödvändigtvis alla <strong>om</strong> det finns personer i gruppen<br />

s<strong>om</strong> inte alls k<strong>om</strong>mer överens med varandra.<br />

3.3 Programmeringspartner<br />

Flera av frågorna i båda enkäterna behandlade hur olika personlighetsegenskaper rankades<br />

hos partnern. Det är här relativt självklara resultat s<strong>om</strong> presenteras, men det kan<br />

vara viktigt att få se vilka egenskaper man bör leta efter när man tillsätter personal till<br />

ett XP-projekt och vilka egenskaper s<strong>om</strong> antagligen uppfattas s<strong>om</strong> värst av gruppmedlemmarna.<br />

Studenterna fick först ranka de viktigaste egenskaperna hos den de parprogrammerar<br />

med på en skala mellan 0 och 3. Resultaten visas i figur 5 på nästa sida.<br />

De två absolut viktigaste egenskaperna visade sig vara att ha en partner s<strong>om</strong> är<br />

tillmötesgående och lyhörd. Intressant var att sex av de sju absolut högst rankade egenskaperna<br />

- de s<strong>om</strong> fick en sammanlagd poäng högre än 1.5 - var egenskaper s<strong>om</strong> endast<br />

rörde personligheten, s<strong>om</strong> social, utåtriktad, rolig, lyhörd och tillmötesgående. Huruvida<br />

man var en erfaren programmerare eller ej eller snabb på att editera och skriva kod<br />

visade sig ha mindre betydelse. Teknisk k<strong>om</strong>petens var den högst rankade k<strong>om</strong>petensegenskapen<br />

och den k<strong>om</strong> först på fjärde plats totalt. Resultatet visar alltså att k<strong>om</strong>petensen<br />

inte anses lika viktig s<strong>om</strong> personligheten hos den man parprogrammerar med.<br />

7


Figur 5: De viktigaste egenskaperna hos programmeringspartnern rangordnade på en<br />

skala mellan 0 och 3<br />

I arbetslivet kan det då vara viktigt att tänka på att personligheten hos medlemmarna<br />

i ett XP-projekt spelar lite större roll än i ett projekt där programmerarna sitter och<br />

utvecklar enskilt.<br />

I frågan <strong>om</strong> de värsta egenskaperna <strong>om</strong>bads studenterna nämna de fem egenskaper<br />

de tyckte sämst <strong>om</strong> hos den de parprogrammerar med. De egenskaper s<strong>om</strong> rankades<br />

s<strong>om</strong> de värsta visas i figur 6 nedan. Den negativa egenskap s<strong>om</strong> rankades s<strong>om</strong> värst<br />

var d<strong>om</strong>inans. Tätt därefter följde egenskaper s<strong>om</strong> dålig ambition, passivitet och ineffektivitet.<br />

Först på en femte plats k<strong>om</strong> den k<strong>om</strong>petensrelaterade egenskapen att vara en<br />

dålig programmerare.<br />

Figur 6: De fem värsta egenskaperna hos den man parprogrammerar med.<br />

8


Ur resultaten kan det alltså än en gång befästas att det är personligheten i större<br />

utsträckning än k<strong>om</strong>petensen s<strong>om</strong> spelar roll vid <strong>parprogrammering</strong>.<br />

<strong>En</strong> viktig skillnad noterades mellan de s<strong>om</strong> ansåg sig själva vara över medel och de<br />

s<strong>om</strong> ansåg sig själva vara under medel i jämförelse med övriga projektmedlemmar. De<br />

s<strong>om</strong> ansåg sig vara över medel programmeringsmässigt ansåg att tekniskt k<strong>om</strong>pentens<br />

och humor var de bästa egenskaperna. S<strong>om</strong> sämsta egenskaper rankades ineffektivitet,<br />

dålig programmerare, dålig personlig hygien samt låg ambition. De s<strong>om</strong> ansåg sig<br />

själva vara under medel programmeringsmässigt rankade däremot lyhördhet och hög<br />

ambition s<strong>om</strong> bästa egenskaper. Ineffektivitet och passivitet ansågs vara de värsta.<br />

3.3.1 Manligt och kvinnligt<br />

Det framgick flera skillnader mellan vad kvinnor och män tyckte var de värsta egenskaperna<br />

hos den de parprogrammerar med. Jämförelsen kan ses i figur 7 nedan.<br />

Figur 7: De värsta egenskaperna hos partnern enligt män respektive kvinnor.<br />

100% av kvinnorna jämfört med 50% av männen tyckte att d<strong>om</strong>inans var en av<br />

de värsta egenskaperna och 84% av kvinnorna jämfört med 48% av männen tyckte<br />

att passivitet var en. Männen däremot rankade ineffektivitet samt dålig programmerare<br />

s<strong>om</strong> de värsta egenskaperna, vilket för kvinnorna inte alls ligger lika högt rankat.<br />

Att d<strong>om</strong>inans fick så höga siffror hos kvinnorna skulle kunna visa på att männen<br />

<strong>om</strong>edvetet tar mer plats än kvinnorna och att kvinnorna därför känner sig överkörda.<br />

<strong>En</strong> spontan k<strong>om</strong>mentar från en kvinna på frågan <strong>om</strong> kön hos partnern spelar någon<br />

roll var: Det har viss betydelse för gruppkänslan, i alla fall för mig s<strong>om</strong> varit ensam<br />

tjej. Jag har haft lite prestationsångest faktiskt och blivit uppretad ett antal gånger på<br />

grund av alla Förstår du? från vissa personer, men självklart är inte alla så.<br />

9


3.4 Samarbetssvårigheter och konflikter<br />

Under den första iterationen trodde 24% av studenterna att de skulle få svårt att samarbeta<br />

med någon eller några i gruppen, men efter projektet uppgav endast 18% att<br />

de hade haft sådana svårigheter. På frågan <strong>om</strong> hur samarbetsproblemet hade löst sig<br />

uppgav hela 90% att problemet inte hade löst sig. Resultatet kan tolkas s<strong>om</strong> att det är<br />

personer s<strong>om</strong> har fått jobba ihop s<strong>om</strong> absolut inte passar ihop. Det kan också ha varit så<br />

att det är vissa personer s<strong>om</strong> har samarbetssvårigheter och där problemet då inte löser<br />

sig oberoende av förslag.<br />

Det k<strong>om</strong>mer alltid finnas personer s<strong>om</strong> är svåra att samarbeta med och i ett skolprojekt<br />

är det en nödvändighet att dessa människor ändå sitter med i projekten och deltar<br />

s<strong>om</strong> de andra. Det blir då coachens uppgift att se till att de s<strong>om</strong> inte alls kan samarbeta<br />

slipper parprogrammera med varandra. Istället bör coachen uppmärksamma vilka personer<br />

i gruppen s<strong>om</strong> bäst klarar av arbeta med den personen och låta dem arbeta ihop.<br />

Väldigt krystade k<strong>om</strong>binationer av människor bör i alla lägen undvikas då samarbetet<br />

i sådana fall säkerligen fungerar dåligt vilket kan få till följd att det produceras dålig<br />

kod.<br />

I ett projekt i arbetslivet borde problem av detta slaget inte uppk<strong>om</strong>ma speciellt ofta<br />

efters<strong>om</strong> företagen själva tillsätter sin personal.<br />

Studenterna fick en fråga <strong>om</strong> huruvida de hade råkat ut för konflikter med sin partner<br />

någon gång under projektet eller ej. 30% uppgav att de hade haft konflikter och i<br />

84% av fallen berodde konflikten på koden. I några enstaka fall hade konflikterna rört<br />

programmeringsordning, personlighet eller partnerns inställning till projektet. I något<br />

enstaka fall hade konflikten behövt lösas gen<strong>om</strong> partnerbyte, men de flesta konflikterna,<br />

70%, hade löst sig gen<strong>om</strong> att båda parter hade k<strong>om</strong>pr<strong>om</strong>issat. Under sådana <strong>om</strong>ständigheter<br />

kan konflikter ses s<strong>om</strong> något positivt efters<strong>om</strong> det vid k<strong>om</strong>pr<strong>om</strong>isser ofta k<strong>om</strong>mer<br />

fram den bästa av två eller flera lösningar. I fall där programmerarna själva inte klarar<br />

av att lösa konflikten kan coachen kanske hjälpa till gen<strong>om</strong> att ge sin syn på problemet<br />

och <strong>om</strong> möjligt introducera ytterligare ett lösningsförslag.<br />

3.5 Egenupplevd kunskap<br />

I båda enkäterna undersöktes studenternas uppfattning <strong>om</strong> den egna programmeringsk<strong>om</strong>petensen.<br />

Frågan är inte helt relevant för just <strong>parprogrammering</strong> men efters<strong>om</strong> den<br />

visar intressanta resultat tar vi upp det här ändå. Studenterna fick rangordna sina egna<br />

programmeringskunskaper i jämförelse med kurskamraternas på en skala med Under<br />

medel, Medel och Över medel. Innan projektet ansåg sig 9% vara Under medel, 70 %<br />

Medel och 21% Över medel. Efter projektet hade siffrorna ändrats marginellt och 6%<br />

ansåg sig vara Under medel, 76 % Medel och 17% Över medel.<br />

3.5.1 Manligt och kvinnligt<br />

Det visade sig dock ligga en stor skillnad i resultaten mellan män och kvinnor. Ingen<br />

av kvinnorna s<strong>om</strong> deltog i <strong>studie</strong>n ansåg sig vara Över medel varken innan eller efter<br />

projektet. Däremot ansåg sig hela 25% av kvinnorna ligga under medel innan projektets<br />

start. Motsvarande siffra för männen var 6%. För att verifiera resultaten gjordes en<br />

förfrågan till Per Holm på Institutionen för Datavetenskap <strong>om</strong> statistik för kvinnorna<br />

i andra årskursen. Det visade sig att ingen av tjejerna i årskursen låg under medel.<br />

Däremot låg flera av dem över medel och en kvinna hade gen<strong>om</strong>gående högsta betyg på<br />

alla kurser s<strong>om</strong> kan relateras till projektkursen, något s<strong>om</strong> ingen tidigare åstadk<strong>om</strong>mit.<br />

10


Efter projektet ändrade sig statistiken något och nu ansåg sig bara 8% av kvinnorna<br />

vara Under medel. För männen var siffran fortfarande 6%. Det var dock ingen kvinna<br />

s<strong>om</strong> uppgav sig ligga Över medel heller efter projektet jämfört med 20% av männen.<br />

De något nedslående resultaten kan enklast förklaras med att kvinnorna har en mer<br />

försiktig attityd och ett sämre självförtroende vad gäller programmering än vad killarna<br />

har. Kvinnorna torde därför ha svårare att hävda sig i en grupp med en majoritet av män<br />

och det är därför viktigt att coachen uppmärksammar alla i gruppen, även de killar s<strong>om</strong><br />

kan tänkas ha sämre självförtroende.<br />

3.6 Ergon<strong>om</strong>i och lokaler<br />

Efters<strong>om</strong> två programmerare sitter vid en och samma arbetsstation då de parprogrammerar<br />

blev studenterna tillfrågade <strong>om</strong> de upplevde att <strong>parprogrammering</strong> var jobbigare<br />

ur ergon<strong>om</strong>isk synvinkel än enskild programmering, dvs <strong>om</strong> de har upplevt mer nackstelhet,<br />

axelvärk etc. 33% av de tillfrågade svarade ja på frågan, vilket är en ganska hög<br />

siffra i ett så kort projekt. <strong>En</strong>dast sex iterationer <strong>om</strong> vardera åtta timmar har gen<strong>om</strong>förts.<br />

Att arbetsställningen är sämre vid <strong>parprogrammering</strong> är förståeligt då två människor<br />

samtidigt vill sitta så nära skärmen s<strong>om</strong> möjligt, men siffrorna torde också vara<br />

direkt beroende av de lokaler s<strong>om</strong> användes under just detta projektet. Ett stort antal<br />

programmerare satt i en datasal s<strong>om</strong> är avsedd för hälften av de människor s<strong>om</strong> vistades<br />

där.De ordentliga arbetsstolarna har inte räckt till och många har suttit på hårda,<br />

oinställbara stolar, vilket inte direkt främjar rygg och nacke.<br />

Lösningen i detta projektet skulle vara att ha färre studenter i datasalarna under<br />

iterationerna, men i allmänhet är det viktigt att se till så att alla programmerare har<br />

tillgång till bra stolar och att de s<strong>om</strong> parprogrammerar kontinuerligt byter driver, vilket<br />

varierar arbetsställningen mer. Det vore även klokt att lägga in korta bensträckare flera<br />

gånger under dagen.<br />

Ett annat problem s<strong>om</strong> framk<strong>om</strong> och s<strong>om</strong> direkt går att relatera till lokalerna under<br />

just detta projektet var den dåliga luftkonditioneringen. Studenterna upplevde den<br />

dåliga luften s<strong>om</strong> tröttande och varken ventilationssystemet eller vidöppna fönster var<br />

tillräckligt för det antalet människor s<strong>om</strong> befann sig i salen.<br />

3.7 Föredrar <strong>parprogrammering</strong><br />

Den slutgiltiga frågan var ifall projektmedlemmarna ansåg sig ha blivit bättre programmeringsmässigt<br />

under projektet och <strong>om</strong> de i så fall ansåg att det var <strong>parprogrammering</strong>ens<br />

förtjänst. Hela 62% tyckte att de hade blivit bättre och av dem tyckte hela 92% att<br />

det berodde på <strong>parprogrammering</strong>en.<br />

Innan projektet uppgav 10% av studenterna att de hellre hade använt enskild programmering<br />

i projektet. Efter projektet ställdes frågan <strong>om</strong> studenterna föredrar <strong>parprogrammering</strong><br />

framför enskild programmering i skolan eller på jobbet. 77% uppgav att<br />

de föredrar <strong>parprogrammering</strong> i skolan och 69% föredrog <strong>parprogrammering</strong> även i<br />

arbetslivet. Frågan <strong>om</strong> vad s<strong>om</strong> föredras i arbetslivet uppfattades dock av många s<strong>om</strong><br />

lite svår efters<strong>om</strong> inte alla varit ute i arbetslivet ännu. Resultaten visar dock att <strong>parprogrammering</strong><br />

borde vara mycket väl lämpat i utbildningssyfte då studenterna tvingas<br />

samarbeta, k<strong>om</strong>pr<strong>om</strong>issa och lösa konflikter.<br />

11


4 Råd och riktlinjer<br />

Resultaten av enkätundersökningarna har resulterat i nedanstående lista över de saker<br />

coach och projektledare bör tänka på vid <strong>parprogrammering</strong>.<br />

Att välja partner - Parbyten bör baseras på ett samspel mellan programmerare och<br />

coach. Coachen bör skaffa sig uppfattning <strong>om</strong> hur de olika gruppmedlemmarna<br />

arbetar tillsammans och kan sedan med fördel föreslå vilka s<strong>om</strong> kan programmera<br />

ihop vid nästa byte. Coachen bör kunna avgöra vilka stories s<strong>om</strong> lämpar sig<br />

för vilka programmerare och föreslå par därefter. Det yttersta beslutet <strong>om</strong> vilka<br />

s<strong>om</strong> ska programmera ihop måste dock programmerarna själva ansvara för och<br />

coahens förslag ska hellre ses s<strong>om</strong> rek<strong>om</strong>mendationer för att på bästa sätt sprida<br />

k<strong>om</strong>petensen i gruppen.<br />

Coachens roll vid parbyte - Coachens roll i projektet vad gäller parbyten bör vara<br />

att se till att k<strong>om</strong>petensen i gruppen sprids på bästa sätt och att de s<strong>om</strong> kör fast<br />

snabbt avhjälps gen<strong>om</strong> antingen parbyte eller <strong>om</strong> möjligt alternativa lösningsförslag<br />

från coachen eller andra gruppmedlemmar. Coachen bör även ha koll på<br />

ungefär vilka delar av koden de olika programmerarna är insatta i så att någon<br />

s<strong>om</strong> är väl insatt i ett stycke kod kan arbeta tillsammans med någon s<strong>om</strong> ej är så<br />

väl insatt i just den kodbiten och på så sätt sprida kodkunskapen i gruppen.<br />

Hur ofta man bör byta partner - Parbyte bör ske vid naturliga avbrott i utvecklingen,<br />

antingen vid pauser, då i alla fall en liten del av storyn har avslutats eller <strong>om</strong><br />

det är korta stories, då en ny story påbörjas. Mer än fyra timmar bör ett par inte<br />

programmera ihop vid projekt liknande det då <strong>studie</strong>n har utförts. I arbetslivet<br />

med längre iterationer kan man nog tänka sig en längre period mellan bytena då<br />

uppgifterna kan antas vara mer k<strong>om</strong>plicerade och tidskrävande än de uppgifter<br />

s<strong>om</strong> har behandlats i detta projekt och då det tar längre tid för programmerarna<br />

att sätta sig in i kod.<br />

Hur många man bör programmera med - I skolprojekt s<strong>om</strong> detta bör gruppmedlemmarna<br />

programmera med så många s<strong>om</strong> möjligt i gruppen. Om det finns<br />

personer s<strong>om</strong> inte fungerar bra ihop bör coachen se till att just de personerna<br />

inte behöver arbeta ihop, speciellt inte med mer k<strong>om</strong>plicerade uppgifter. Uppstår<br />

ändå konstlade par kan de kanske få enklare uppgifter att lösa för att inte riskera<br />

att det dåliga samarbetet går ut över koden i allt för stor utsträckning.<br />

Att tillsätta personal - Vid tillsättning av personal till ett projekt där <strong>parprogrammering</strong><br />

ska användas bör man tänka på att det är personlighet i större utsträckning<br />

än k<strong>om</strong>petens s<strong>om</strong> k<strong>om</strong>mer avgöra hur gruppen arbetar ihop. Självklart måste<br />

man även ta hänsyn till gruppmedlemmarnas k<strong>om</strong>petens för att få ett bra team<br />

och en bra produkt, men högsta k<strong>om</strong>petens bör inte vara högsta prioritet.<br />

Konflikter - Konflikter verkar ofta lösa sig gen<strong>om</strong> k<strong>om</strong>pr<strong>om</strong>isser mellan programmerarna,<br />

men <strong>om</strong> coachen upptäcker att en konflikt inte kan redas ut kan<br />

han/hon gå in s<strong>om</strong> tredje part och försöka hjälpa till att reda ut konflikten. Efters<strong>om</strong><br />

konflikterna oftast rör koden kan det vara bra med flera åsikter <strong>om</strong> hur<br />

problemet ska lösas och eventuellt kan det avhjälpa med ett möte in<strong>om</strong> gruppen<br />

för att få fram en bra lösning på problemet.<br />

12


Samarbetssvårigheter - Det k<strong>om</strong>mer alltid att finnas människor s<strong>om</strong> har svårt<br />

för att samarbeta och i ett skolprojekt s<strong>om</strong> detta är det nödvändigt att de personerna<br />

ändå tvingas samarbeta med andra efters<strong>om</strong> det är en nödvändighet inför<br />

arbetslivet. Coachen kan underlätta situationen gen<strong>om</strong> att styra så att den eller de<br />

personer s<strong>om</strong> går bäst ihop med personen i fråga oftare får programmera ihop.<br />

Manligt och kvinnligt - Efters<strong>om</strong> <strong>studie</strong>n visar att kvinnor i större utsträckning<br />

än män är osäkra på sina egna kunskaper är det viktigt att uppmärksamma dem<br />

på samma sätt s<strong>om</strong> de s<strong>om</strong> hävdar sig mest i gruppen. Förhoppningsvis jämnar<br />

siffrorna ut sig under de sista åren på högskolan, men det k<strong>om</strong>mer alltid finnas<br />

personer i gruppen med sämre självförtroende än andra och det är då viktigt att<br />

coachen försöker uppmärksamma alla olika individers åsikter och är lyhörd, även<br />

för de s<strong>om</strong> kan verka osäkra.<br />

Ergon<strong>om</strong>i - För att inte få ökade problem med rygg och nacke under <strong>parprogrammering</strong><br />

bör det finnas bra stolar att tillgå för alla programmerare i gruppen.<br />

Coachen kan även påminna paren <strong>om</strong> att byta driver då och då så att kroppsställningen<br />

ändras ofta, vilket annars lätt glöms bort.<br />

Lokaler - Efters<strong>om</strong> det vid <strong>parprogrammering</strong> ofta finns dubbelt så många personer<br />

s<strong>om</strong> det finns arbetsstationer och alltså långt fler personer än vad ytan är<br />

menad för, så är det viktigt att se till att det finns tillräckligt med utrymme för alla<br />

i gruppen och att luftventileringen räcker till. Ett tips är att låta alla programmerare<br />

ha varsin arbetsstation fastän kodningen endast sker vid en av dem. Därmed<br />

används lokalytan endast av så många personer s<strong>om</strong> den är anpassad för.<br />

5 Slutdiskussion<br />

Studenterna s<strong>om</strong> har deltagit i <strong>studie</strong>n har visat sig ha en mycket positiv inställning till<br />

parprogrammeing. Parprogrammering har bidragit till ökade programmeringskunskaper<br />

hos studenterna och kan anses vara en mycket bra metod i utbildningssyfte. Parprogrammering<br />

ger övning i samarbete och konfliktlösning och innebär en mer given<br />

delaktighet i utvecklingsarbetet för alla i gruppen.<br />

Det k<strong>om</strong>mer tyvärr alltid finnas människor s<strong>om</strong> är svårare än andra att samarbeta<br />

med, men i skolan är det nödvändigt även för dem att försöka vänja sig vid och lära<br />

sig att samarbeta, efters<strong>om</strong> det är en nödvändighet i arbetslivet. Förhoppningsvis kan<br />

<strong>parprogrammering</strong> ge personerna i fråga övning i samarbete, vilket de kanske annars<br />

helst väljer bort till förmån för enskild programmering.<br />

13


Referenser<br />

Laurie Williams, Robert R. Kessler, Ward Cunningham och Ron Jeffries. Strengthening<br />

the Case for Pair programming. IEEE Software, July/August 2000.<br />

Laurie Williams. The Costs and Benefits of Pair Programming. University of Utah<br />

C<strong>om</strong>puter Science, 2000.<br />

14

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!