– Programmering är i grunden en social aktivitet som vi gör tillsammans med andra människor, säger utvecklingsgurun Woody Zuill när han tar emot på resebolaget Tuis huvudkontor i Münchenbryggeriets lokaler i Stockholm.

Woody bor i San Diego i Kalifornien och har arbetat med programmering i över 35 år, men har alltmer kommit att förknippas med gruppprogrammeringsmetoder som parprogrammering, agil programmering och extremprogrammering. Under sin tid på Hunter Industries, fram till 2015, utvecklade han metoden som idag kallas mobbprogrammering, alltså mobb som i en hop människor.

Woody förklarar hur mobbprogrammering går till. “Det sitter en person vid tangentbordet, men den som skriver kod gör ingenting utan att “navigatören” styr vad som ska skrivas. Och navigatörens uppgift är att högt inför alla uttrycka vad som ska kodas eller visa det på en whiteboard.

Läs också: AWS slår upp ”loft” mitt i Stockholm – vill locka till sig huvudstadens utvecklare

Så meningen är att vi ska kommunicera i tal vad vi vill göra, istället för att bara hålla det i minnet. Alla kan samtidigt höra lösningen, istället för att den bara finns i någons hjärna. Så detta är en teknik för att involvera flera människor i den sociala aktiviteten att programmera”.

Det är uppenbart att för Woody Zuill är programmering mycket mer än att bara skriva kod. Det handlar mer om den mentala processen. Att skriva kod är bara att översätta ett koncept till något en dator kan förstå; programmering är att tänka. Det stora med mobbprogrammering, menar Woody, är att samla alla specialkompetenser som ingår i ett projekt och handgripligen, på plats, skriva all kod tillsammans.

– Om vi till exempel har en grupp av fem personer kan vi ha en testare, en front-end-expert, en back-end-expert, en databasexpert, en produktexpert; meningen är att ha alla delar som krävs på plats när programmet skrivs, istället för att var och en gör sin bit var för sig. När vi är tillsammans är vi i samma kontext, vi tänker alla på samma problem på samma gång. När vi så kan vi samarbeta, när vi tänker på olika håll är det svårare att samarbeta Jag kan inte vända mig till en annan och fråga ‘vad tycker du om det här?’. Om vi gör det på olika håll, måste vi ta ett möte för att diskutera problemet, och om någon inte kan vid en viss tid, så måste vi skjuta på det, och då skapar vi en kö, säger Woody Zuill.

Det betyder att cykeltiden från när projektet startade, tills det är i mål, dras ut. Mobbprogrammering tar bort köerna och väntetiden. Men det skapar också en kontext där utvecklarna integrerar sina idéer i realtid. Istället för att var och en gör sitt arbete på olika håll, samlas i ett möte och granskar varandras kod, skapar gruppen besluten tillsammans, och senare behöver de inte försvara sina individuella beslut eftersom besluten är gemensamma.

Woody Zuill
Lukas Edelfelt, Development lead, web IT på TUI Nordic (stående t.v) med Woody Zuill, konsult och coach inom mobbprogrammering.

– Mobbprogrammering gör att vi kommer till ett avslut tidigare, vilket inte är samma sak som att kodandet går snabbare, säger Woody. Det handlar om flöde. Vi kan lägga mindre arbetstid på projekten när vi kan ta gemensamma designbeslut i realtid, när alla förstår vad projektet ska leda till. Skillnaden kan vara att vi kommer i mål på ett par dagar, istället för två månader. Tänk om du kör en bil, och du får bara styra var femtonde sekund, hur långsamt måste du köra då? Det är så det funkar när vi gör projekt på det traditionella sättet. Mobbprogrammering gör att vi kan ta beslut betydligt tätare.

På resebolaget Tui sitter utvecklarna i ett öppet kontorslandskap vid sina egna skrivbord, eller på mobila arbetsplatser, men ute i kanterna av kontorslandskapet har Tui inrett mobb-hörnor. Det mest iögonfallande med dessa hörnor är de enorma skärmarna. Woody förklarar: “När vi sitter tillsammans måste vi ha en stor skärm så att alla bekvämt kan se vad som händer på skärmen; om man måste sitta och kisa får man till slut ont i huvudet. Det måste kännas bekvämt för alla i gruppen; det är viktigt att man sitter bra eller att man kan stå om man vill, men också att det blir en fokuserad grupp mot samma skärm.

– Man ska kunna sitta tillsammans längre stunder; halva eller till och med hela dagar, vi behöver en ergonomisk “arbetsstation” så vi kan samarbeta bra. Alla bör få sina särskilda behov uppfyllda, till exempel sina egna tangentbord.

Lukas Edelfelt, development lead, web IT på Tui Nordic har jobbat med mobbprogrammering sen tre år tillbaka.

– Mobbprogrammering är en ständig integration av idéer. Om man från början har olika idéer om en lösning så kommer resultatet förmodligen bli något bättre än var och en av de olika idéerna. Eftersom hela gruppen är insatt i alla delar så förstår alla också helheten och kan till exempel korrigera felaktigheter med den djupare förståelsen för helheten. Om någon slutar eller blir sjuk så blir det inte samma avbräck eftersom alla i gruppen är tillräckligt insatta i de olika delarna av projektet, säger han.

Lukas har 14 års erfarenhet av webbutveckling och att leda utvecklingsgrupper, och ansvarar idag för webbutvecklingsgrupperna på Tui och den webbplattform som omsätter nio miljarder kronor för Tui. På frågan hur mobbprogrammering påverkar kvaliteten på koden, om det inte kan bli rörigt med för många kockar, är lukas bestämd.

– Kvalitén på koden ökar avsevärt. Istället för att man granskar varandras kod kors och tvärs, vilket även är en mindre rolig del av arbetet som utvecklare, sitter man tillsammans och granskar i realtid eftersom man har tre-fyra par ögon på vad som händer på skärmen hela tiden. Plus att man granskar själva idén och lösningen tillsammans. Under hela processen när vi utvecklar en bit mjukvara så granskas alla koncept och kod konstant under resans gång, från början till slut. Syntaxfel och liknande småfel händer i stort sett aldrig.

Läs också: Spelbranschen slukar allt fler utvecklare – det skapar problem för it-bolagen

Mobbprogrammering fungerar även bra ihop med devops, som blivit mycket populärt på senare år. Lukas Edelfelt förklarar med ett exempel om en beställare behöver ett API till en extern part, och det förmodligen är driftavdelningen som tekniskt sett vet bäst hur det ska göras, så behöver Lukas bara plocka ihop alla kompetenser som krävs i ett mobb-team, inklusive beställaren och någon från driften. Sedan räcker det oftast att de sitter ned en dag tillsammans, fokuserar på att utveckla koden, och sedan är koden klar för produktion.

Bägge poängterar att mobbprogrammering är måste vara frivilligt, att det inte finns några tvång för utvecklarna. Mobbprogrammering är dynamiskt, säger Woody, man måste inte sitta i en grupp hela tiden, om någon behöver gå åt sidan ett tag för att tänka över en lösning eller testa något, så kan man sammanstråla igen efter en stund. Och det är viktigt att poängtera frivilligheten, jag skulle aldrig tvinga någon att sitta med i en MOB-grupp. Folk fungerar olika.

Lukas fyller i:

– Vi kan jobba lite olika, vissa grupper möts för att gå igenom vad ska göras, gå åt varsitt håll och jobba med sin sak, och sedan sammanstråla igen för att gå igenom koden. Medan andra grupper sitter tillsammans i stort sett hela tiden.

Framför allt är det roligt, säger Lukas.

Byt erfarenheter inom programmering med branschkollegor på Code Night #13 - Säkerheten sitter i koden. Läs mer och boka din plats här