• Home
  • Blogg
  • Mobprogrammering - 5 utvecklare på en enda dator?!

Mobprogrammering - 5 utvecklare på en enda dator?!

Pre-corona. Five developers in a room are looking at a big screen. Four of them are discussing, the other one is typing. A buzzer sounds. Everyone shifts one place and goes on as if nothing happened. What’s going on here?

Publicerad den
9 apr 2021
Lästid
5 Minuter
Skriven av
Knowly

Att genomföra experiment för att förbättra våra processer är en del av vårt dagliga arbete. Så när jag hör talas om något som kan hjälpa oss att bli bättre vill jag undersöka det. I början av 2019 gick jag med i Domain Driven Design Europe-konventet. Under pauserna pratade jag mycket med andra deltagare, mestadels utvecklare.

I många av dessa samtal kom workshopen Mob Programming från konferensen ett år tidigare upp. Utvecklarna var väldigt, väldigt entusiastiska över mob-programmering: flera utvecklare som arbetar i samma rum på en enda dator. De förklarade hur mycket de hade lärt sig och vuxit som team tack vare dessa sessioner. Det var en tydlig signal för mig att lära mig mer om det. Efter det bestämde jag mig för att vi skulle experimentera med det.

En viktig del av ett experiment är hypotesen. Utan den vet man inte om experimentet lyckades. Min teori var att mob-programmering skulle hjälpa oss att dela kunskap mellan utvecklare och samtidigt bygga ren kod.

Jag planerade och förberedde vår första mob-programmeringssession, vilket inte var så svårt:

  • Få en dator ansluten till en stor skärm

  • Placera ett bord framför skärmen.

  • Lägg till fem platser vid bordet.

  • Sätt lite snacks och tillbehör på bordet.

Och där satt vi, fem utvecklare i ett rum med bara en dator:

Vad hände under vår första mob-programmeringssession?

Wesley sätter sig vid tangentbordet (vi använder hans dator) och tilldelas automatiskt rollen som förare. Föraren är en intelligent inmatningsenhet: han kan skriva men får inte fatta några beslut. De andra utvecklarna får rollen som navigatör. Det är de som diskuterar vad som ska hända och talar om för föraren vad han eller hon ska göra.

Föraren är en intelligent inmatningsenhet: han kan skriva men får inte fatta beslut

Vi börjar arbeta med en enkel uppvärmningshistoria där vi måste ta bort föråldrat innehåll i sidfoten på webbplatsen.

Navigatörerna säger åt Wesley att starta Docker. Vi ser omedelbart ett felmeddelande. Wesley förklarar att detta händer ibland, men att det alltid åtgärdas med ett par omförsök. Vi försöker inte igen, men navigatörerna förklarar vilka inställningar som ska ändras. Från och med nu startar Docker alltid utan fel;

Wesley skriver på en klisterlapp vad han lärt sig om Docker. Han sätter denna klisterlapp på det stora pappersarket som heter Learnings.

Jag skriver på en lapp att det är Docker som hindrar oss från att komma igång. Jag matar den till Waste Snake, ett stort pappersark med en orm ritad på. På det här arket sätter du klisterlappar som beskriver allt som håller mobben tillbaka från faktisk programmering:

Efter 12 minuter ljuder en summer. Alla måste skifta till höger. Föraren blir navigatör och en av navigatörerna blir förare. Det är lite krångligt och det tar lite tid att komma igång igen. Men vi blir mycket bättre på det efter ett par växlingar.

Vi avslutar berättelsen och börjar arbeta på nästa: Yii2-vyn orsakar falska kommentarer i HTML, vilket orsakar HTML-invalidering. En intressant historia. Den har redan plockats upp två gånger av olika utvecklare, men de fastnade båda två. Alla bidrar med berättelsen. Så småningom löser vi problemet på ett sätt som alla är mycket nöjda med.

Efter två timmar avslutas sessionen.

Vad lärde vi oss av vår första mob-programmeringssession?

Vi gör ett retrospektivt möte för att diskutera vad som gick bra och vad vi kan förbättra. Det viktigaste att ta med sig är: vi fixade berättelsen bättre / mer noggrant i en iteration än när en enda person skulle ha arbetat med den.

Vi löste storyn bättre/grundligare i en iteration än om en enda person skulle ha arbetat med den.

Alla känner sig energiska under tillbakablicken. Vi gillade alla experimentet. Det blir uppenbart att mob-programmering verkligen hjälper oss att dela kunskap samtidigt som vi bygger ren kod.

De flesta lärdomar var ganska uppenbara, som när en genväg var okänd för föraren, eller att konfigurera verktyg för att hjälpa dig mer effektivt. Det blev uppenbart hur lätt det är att lägga till slöseri i sin egen utvecklingsprocess genom att använda lösningar om ett system beter sig oväntat. Detta bekräftar behovet av att anamma förbättringskatalogen.

Andra lärdomar var mer subtila. Till exempel att hitta sätt att dela upp ett svårt problem i mindre problem. Eller förslagen på hur man verkligen kan arbeta testdrivet genom att först skapa ett misslyckat test i stället för att bara lägga till ett test i efterhand.

Experimentet lyckades! Nästa session är omedelbart planerad

En av de mer utmanande sakerna att få rätt var kommunikationsnivån mellan navigatörer och förare. Man vill inte stava till allt, särskilt inte för de mer erfarna utvecklarna. Men du vill inte heller låta en mer junior utvecklare känna att han kastas in i den djupa änden. Med tiden lär sig mobben hur de ska adressera enskilda förare på rätt sätt.

Programmering av fjärrstyrd mob

I Nederländerna är vi för närvarande i en lockdown. Vårt kontor är stängt och alla arbetar på distans. Detta gör mobprogrammering som beskrivs ovan omöjlig eftersom vi inte kan vara i samma rum.

Vi ville dock fortfarande göra mobprogrammeringssessioner. Genom försök och misstag kom vi fram till följande för en utmärkt fjärrprogrammeringssession för mobbar:

  • Alla har en webbkamera och alla slår på den under en session.

  • Vi använder Whereby som värd för våra möten eftersom du kan dela din skärm och fortfarande se varandras kameraflöden.

  • Föraren loggar in på en dedikerad dator via en fjärrskrivbordsanslutning (vi skapade ett mob-användarkonto på det interna nätverket för detta).

  • Vi skapade ett separat mob-användarkonto för Git. Detta gör det mycket enkelt att byta roller.

Hur kan jag experimentera med detta i min egen arbetsmiljö?

Av alla artiklar, bloggar och e-böcker jag läser om mob-programmering kan jag starkt rekommendera att läsa dessa två:

Efter det är det bara att välja ett datum med ditt team och prova det. Ha det så trevligt!

Läs fler av våra blogginlägg

Caroline

Caroline

12 dec 2024

Våra förmåner vid bisyssla förklarade

While your salary is a big deal when picking a job, let's not forget the perks that come with it. The secondary benefits can really sweeten the deal! And we believe we've put together a fantastic package. Dive into all our wonderful extras!

Läs mer
Caroline

Caroline

8 apr 2025

Att arbeta hos oss

Att arbeta på Easy LMS är givande! Vi erbjuder en konkurrenskraftig lön, resor och ersättning för att jobba hemifrån, samt 25 betalda semesterdagar per år! Men vi är också stolta över att kunna erbjuda dig fördelar som hjälper dig att må bra och göra ditt bästa. Ditt fysiska och mentala välbefinnande har högsta prioritet! Våra anställda är ryggraden i vår organisation.

Läs mer
Caroline

Caroline

22 apr 2025

Din första månad

När man har fått ett nytt jobb är man ivrig att komma igång! Samtidigt finns det alltid en hälsosam dos av nervositet. Vad väntar på dig? Hur kommer dina första veckor att se ut? Och hur snabbt kan du verkligen tillföra värde? Det sistnämnda är vårt fokus. Vårt tydliga onboardingprogram för mjukvaruingenjörer hjälper dig att lära känna vårt företag, dina kollegor och dina arbetsuppgifter på nolltid! Upplev hur vi ger dig en kickstart!

Läs mer