Vi i utvecklingsteamet som arbetar med Nya Di – och även Di Weekend och Di Digital – har valt att använda en lite annorlunda metod, nämligen mobbprogrammering. Mobbprogrammering är en teknik som började dyka upp 2012 – 2013 och kan ses som en förlängning av begreppet parprogrammering där man sitter och programmerar i par. Mobbprogrammering drar det ett steg längre i och med att hela teamet sitter tillsammans och programmerar, vilken typ av uppgift det än handlar om.

All the brilliant people working on the same thing, 
at the same time, 
in the same space, 
and on the same computer.

Hur går det till?

Precis som i parprogrammering används termerna förare och navigatör. Föraren är den som sitter vid tangentbordet medan navigatörerna sitter bredvid. Efter en lämplig tidsperiod byter man förare. Vi cirkulerar efter 12 minuter med hjälp av en timer som både håller reda på tiden och vems tur det är. Varför just 12 minuter? Tja, vi provade oss fram helt enkelt. 20 minuter vid tangentbordet var för mycket, de andra i teamet får vänta för länge på sin tur. Och det är intressant hur mycket man faktiskt hinner få gjort på ”bara” 12 minuter. 🙂

Vad gör navigatörerna?

  • Granskar koden i realtid
.
  • Googlar när vi stöter på problem.
  • Testar funktionen på olika devices; mobilt, platta etc för att hitta avvikande saker vi kan fixa till på en gång.
  • Tittar framåt för att inte missa strategiska val, har vi något längre fram i backloggen som vi måste ta hänsyn till redan nu.
  • Diskuterar design och arkitektur.
  • Fattar beslut tillsammans med föraren.

Varför jobbar vi så?

Alla vi som jobbar i teamet har arbetat som utvecklare länge. Vi har stött på de vanliga problemen med försenade leveranser, varierande kvalitet på koden, personberoende och kommunikationsproblem mellan verksamhet och IT. Vi ville testa ett annat sätt att arbeta, ett som hade förutsättningarna att korta ledtiderna och höja kvaliteten.

Korta ledtider

Vi hade sedan tidigare en bra Continuous Delivery-kedja, där vi snabbt och enkelt kunde få ut ny funktionalitet i produktion. Men ledtiden fram till produktionssättning berodde på många faktorer. Design, krav och UX behövde fastställas och överlämnas till utvecklarna, utvecklaren som arbetade med funktionen kanske behövde vabba eller blev sjuk, andra visste inte vad som var färdigt och det var svårt att ta över något som redan påbörjats av någon annan. Efteråt skulle koden gås igenom och godkännas av någon annan utvecklare, innan test eller produktägare kunde verifiera funktionen. Det fanns helt enkelt många flaskhalsar.

Med mobbprogrammering har vi en helt annan möjlighet att ta en funktion från idé till produktion på kortast möjliga tid:

  • Alla jobbar på samma funktion.
  • Koden som checkas in är redan granskad.
  • Det finns aldrig några mergeproblem.

Bättre kvalitet

Kvaliteten i vår kod har ökat väsentligt, samtidigt som onödig komplexitet försvunnit.

  • Teamet programmerar, granskar, analyserar, designar och testar på samma gång.
  • Konstant lärande; teknik, domän, programmeringsknep.
  • Kunskapsspridning; alla gör allt.
  • Teamet överväger fler designalternativ än ensamprogrammeraren och väljer enklare design som är lättare att underhålla.
  • Ingen oanvänd, onödig, duplicerad kod.
  • Arkitektur på alla nivåer, både backend och frontend blir genomtänkta.

Vinster för teamet och organisationen

Vi har mobbprogrammerat sedan sommaren 2015 och märkte redan efter några få veckor en markant skillnad på stämningen i teamet och framförallt på vad vi levererade. En del av de fördelar vi märkt är:

  • Fokus. Ingen context switching eftersom vi alla sitter med samma uppgift.
  • Kontinuitet. Inget personberoende, teamet kör på trots VAB och sjukdomar.
  • Kommunikation. Inom teamet och med andra runtomkring oss. Alla vet vart de ska gå, vi är tillgängliga på ett helt annat sätt än förut.
  • Teambuilding. Inget bygger ett team som att sitta tillsammans 9 – 17 varje dag.
  • Ingen dödtid. Vi kör aldrig fast.
  • Roligare. Och därmed motiverande.
  • Snabba leveranser och korta feedbackloopar. Ny funktionalitet kan finnas i produktion bara några timmar efter att vi börjat arbeta med den.
  • Färre möten. Frågor som behöver avhandlas diskuteras vid mobben. Inga överlämningsmöten, inga kodgenomgångar.
  • Design och UX ”på riktigt”. Inga prototyper i förväg, design och UX hanteras direkt i kod så vi kan se det riktiga resultatet.

Hur får man det att funka?

Mobbprogrammering är ett speciellt sätt att arbeta. Totalt samarbete, där alla hela tiden är med på allt. För vår del har det varit ett riktigt lyft. Vi tror att vissa saker bör finnas på plats för att det ska fungera:

  • Förtroende (inom teamet och från organisationen).
  • Ett gemensamt mål.
  • Respekt för övriga teamets kunskap och erfarenheter.
  • Ödmjukhet.
  • Alla bidrar, även om det inte är ens eget favoritområde.

Låter det intressant? Vi har plats för fler i vårt team! 🙂