Ser du också fördelarna med parprogrammering och korrelationen mellan exceptionella samarbeten och effektivitet? Läs del ett av Citerus och Ulf Rask artikelserie om parprogrammering.
En av anledningarna till att lättrörlig mjukvaruutveckling är populär är att den minskar ledtider, bland annat genom att lyfta fram samarbetsproblem. Inte samarbetsproblem i klassisk mening, som nidbilden av någon gammal get som sitter och surar i sitt hörn, utan där jätteduktiga människor inte lyckas skapa mervärde genom eller med hjälp av andra.
I många organisationer hör jag frågor som signalerar ett intresse för teams effektivitet, exempelvis: “Gör utvecklingsteamet allt de kan nu för att leverera i tid?” eller “Har ni det ni behöver för att jobba effektivt?” Dessa frågor leder sällan till någon förändring.
Effektivitet i ett team uppnås framför allt genom exceptionellt samarbete. Vad skulle hända om vi ersatte dessa vanliga frågor om effektivitet med frågor om samarbete: “Har vi konkurrensfördelar tack vare vårt samarbete?”, “Hur utvecklar vi vårt sätt att samarbeta?”. Frågor, som om de ställdes, skulle leda till insikt om att organisationen antingen har eller saknar ett lärande samarbete. Därifrån är det lättare att jobba för att uppnå en förändring.
Med tydliga förväntningar på kunskapsdelning och transparenta prioriteringar i ett team läggs grunden till långsiktigt lärande som i sin tur leder till bättre tekniska lösningar och en ständigt växande effektivitet. I denna artikelserie om parprogrammering startar vi med att titta på kopplingen mellan parprogrammering och ett exceptionellt samarbete.
Kan specialisering stärka samarbete?
I syfte att uppnå effektivitet satsar många företag på specialisering och låter individer bygga upp specifika expertkompetenser som sedan kan användas för att lösa specifika uppgifter. Experter är bra men fel använt utnyttjas bara en bråkdel av deras värde. I det långa loppet är Tayloristisk specialisering runt experter direkt skadlig.
Suboptimala specialister bygger status quo
Allt för ofta hamnar organisationer i en situation med specialiserade individer som enbart vill jobba med “sina” saker, dels för att de är bekväma där men också för att både de själva och även organisationen vill arbeta så “effektivt” som möjligt just nu. Man kan säga att en utvecklingsavdelning hamnar i status quo. Genom att organisationen till stor del saknar intern kunskapsspridning och inte lika ofta bollar nya idéer får inte team och individer någon ny kunskap. Och när utmaningen och känslan av att lära sig nya saker uteblir är risken stor att många säger upp sig för att söka ny kunskap på andra ställen.
Det är naturligt att specialister skyddar och verkar inom “sina” områden, vilket leder till en avgränsad systemkännedom. Avsaknaden av en helhetssyn och gemensamt systemansvar gör det mycket svårt att göra större omstruktureringar, då var och en värnar om sitt. Systemet åldras i förtid och man pratar om att det gamla systemet inte går att rädda på grund av sin arkitektur och hur mycket bättre det skulle bli om man bara byggde ett nytt system som är lättare att underhålla. Bristen ligger dock snarare hos organisationen som skapat systemet och inte hos systemet i sig.
Optimera ledtid och lärande med samarbete
En i mina ögon bättre idé är att istället, för att försöka bygga ett nytt system, bygga en utvecklingsavdelning som är bättre på att lära av varandra. En utvecklingsavdelning bestående av team med expertkompetenser som lär sig av varandra och tillsammans förbättrar sin plattform kontinuerligt. Skillnaden här är att experten i huvudsak involverar andra att arbeta med det som de själva kan bäst. Expertens kunskap sprids genom samarbete och rådgivning.
Ett mycket effektivt sätt att uppnå detta samarbete är att använda sig av parprogrammering. Parprogrammering lämpar sig extra bra för att lösa komplexa problem, skapa samsyn kring kod, dela kunskap, optimera ledtid och reducera risker i projekten.
Parprogrammering inträffar ofta naturligt för att:
- optimera ledtiden för att lösa en produktionskris då ett par experter sätter sig ned för att tillsammans lösa krisen så fort som möjligt
- optimera lärande vid introduktion av nya medarbetare när en systemkunnig person sitter med och hjälper till att föra över nödvändig kunskap till sin nya kollega
- optimera ledtid mot slutet av projekten när olika avdelningar sätta sig ned för att säkerställa att allt fungerar som det ska och dubbelkolla att ingen missat något.
Tyvärr sker parprogrammering oftast inte naturligt utanför dessa speciella tillfällen vilket ofta beror på okunskap och rädsla hos teamen (mer om detta i artikel 2 och 3) samt otydlig vision och överbeställning från ledningens sida.
Vision och transparens istället för konstgjord press
För att organisationen skall lyckas med lärande samarbete är det viktigt att skapa en långsiktig och konkret vision om hur företaget vill utveckla mjukvara samt vara tydlig med prioriteringar. Visionen behöver genomsyra det dagliga arbetet och stödja dagliga beslut så att ett lärande samarbete kan prioriteras framför status quo.
Problemet är att organisationer ofta sätter en konstgjord press på sina team genom extra tighta deadlines och upptrissade mål i hopp om att teamen skall anstränga sig extra mycket vilket funkerar kortsiktigt. Dock har nästan alla team och individer jag jobbat med prioriterat att:
1) Leverera det akuta värde som arbetsgivaren behöver.
2) Aktivt leverera mervärde och en ännu bättre produkt
3) Bemästra sitt yrke (vilket även stärker 2:an)
Den konstgjorda pressen tvingar alla att jobba med det dom är bäst på i dagsläget och vilket försvårar ett lärande samarbete då teamen aldrig får jobba med punkt 2 och 3 i listan.
Bristen på transparens gör att de riktigt motiverande målen försvinner i en dimma av buffertar och upptrissade mål. En organisation som har akuta behov hela tiden bedriver egentligen business as usual under en annan stämpel. Genom att tydligt skilja på det som måste göras nu och det som kan betas av enligt prioritetsordning och teamkapacitet ger ni teamen bättre möjlighet att långsiktigt arbeta mot visionen. Jag har oftast löst detta genom att ha ett tydligt mål med sprinten, en tydligt prioriterad backlog samt att jag hjälper mina utvecklingsteam att inte själva ta på sig för mycket i sina sprintar.
Med en tydlig vision, transparens och dagligt stöd är ni i en god position att skapa en fantastisk självlärande organisation med förutsättningar att skapa de bästa produkterna och locka de vassaste rekryteringarna.
Ytterligare läsning
Effektiv parprogrammering i utvecklingsorganisationer
I del två av artikelserien ger jag min bild av varför parprogrammering är så effektivt och vad man bör tänka på i samspelet mellan utvecklingsparet. jag delar även med mig av konkreta tips för de som vill par-programmera.
Utveckla samarbetet med parprogrammering
Den tredje delen i artikelserien beskriver hur ett konkret genomförande kan gå till med praktiska övningar och vad som är viktigt att tänka på. Artikeln går igenom flera olika övningar som hjälper teamet bygga upp tillit, bryta ned samarbetströskeln och koppla parprogrammeringen till det dagliga arbetet.