SOFTWAREONTWIKKELINGMOB PROGRAMMINGPROGRAMMERENTIPS & ERVARINGEN VAN ACA TEAM
21/03/2018 • Dorien Jorissen

Mob programming: een gezamenlijk experiment

ACA houdt zich met veel projecten bezig. In het laatste kwartaal van 2017 hebben we een relatief klein project uitgevoerd voor een klant in de financiële sector. De deadline voor dit project was eind november en onze klant begon eind september nerveus te worden. Wij vertrouwden echter op een tijdige afronding en besloten een experiment te starten. Het team verzamelde zich in één ruimte en ging aan de slag met mob programming.

Mob wat?

We hadden een artikel gelezen waarin het concept mob programming wordt toegelicht. Het komt er in het kort op neer dat het volledige team in één ruimte samenkomt om gezamenlijk aan één user story te werken. Eén persoon is de 'driver' die zich gedurende bepaalde tijd bezighoudt met het coderen. Die taak wordt na verloop deze tijd overgedragen aan het volgende teamlid. We hebben de volgende indeling uitgeprobeerd tijdens het experiment:

Team aan het programmeren aan een desk

  • Ons team was vrij klein en bestond uit slechts vier leden. Het project waaraan we werkten was relatief klein en er konden daardoor maar vier mensen aan werken.
  • De user story's die aan bod kwamen, waren slechts een onderdeel van het project. Omdat het in dit geval een experiment betrof, wilden we dit kleine project niet volledig onderwerpen aan ‘mobbing’. We kozen daarom een specifieke epic en implementeerden die user story's in de mob.
  • We werkten niet op dezelfde computer. We hadden allemaal een eigen laptop en voerden onze code in op een centraal versiebeheersysteem zonder van toetsenbord te hoeven wisselen. Dit ging vanzelf, het was geen weloverwogen keuze.
  • We wisselden om de 20 minuten. In het genoemde artikel wordt gesproken over 12 minuten, maar dat vonden wij te kort.

Ready, set, go!

Team aan het programmeren #mobprogramming #teamdrivendevelopment

We hebben meer dan een week doorgebracht in een vergaderruimte, waar we beurtelings onze laptops aansloten op het grote scherm. De eerste dag van ons experiment werd aan het ontwerpen besteed. We hebben uren voor het whiteboard gestaan om te besluiten hoe de architectuur van het component dat we gingen bouwen eruit zou gaan zien. Onze mob is diezelfde dag nog aan de slag gegaan met het implementeren van de eerste story. Een vliegende start! We vlogen door de user story heen en riepen de hulp van onze contactpersoon bij de klant in toen een paar vereisten niet duidelijk waren. Tegen het einde van de dag waren we uitgeput. Ons experiment was pas net van start gegaan, maar was direct al heel intens.

We bleven ons de daaropvolgende dagen bezighouden met het implementeren van de user story's. Het lukte ons om binnen een week werkende software te creëren die we aan de klant konden laten zien. Onze software was nog niet perfect en voldeed nog niet aan alle vereisten, maar kon na slechts drie dagen al wel een volledig traject doorlopen.  Twee dagen later werdener verbeteringen doorgevoerd en werd besproken welke uitzonderingsgevallen andere user story's bevatten. Er was slechts een week verstreken sinds onze klant nerveus begon te worden en we hadden al heel veel zaken geïmplementeerd om te laten zien.

Finishing touches

Tegen het einde van het project hoefden er enkel nog wat formaliteiten te worden afgehandeld. Zoals het agnostisch maken van de softwareomgeving die we net hadden gebouwd. Als we pair programming hadden gebruikt om deze user story te voltooien dan was alle technische knowhow over de software terechtgekomen bij één duo. Die kennis hoefde dankzij mob programming niet met de rest van het team te worden gedeeld. Zij wisten alles al. De configuratie werd bij iedereen op de eigen machine uitgevoerd, omdat we niet van toetsenbord wisselden. Iedereen was op de hoogte van de commando's en de configuratie. Kennisuitwisseling op zijn best!

Laptop scherm

Onze software moest nog wel correct worden geconfigureerd. Dat bleek een saai klusje voor de teamleden. We besloten dan ook om het mob-experiment te beëindigen. We vonden het niet zinvol om dergelijke taken met zijn vieren tegelijkertijd uit te voeren. In onze ogen dan. Voordat de mob werd ontbonden, werd er wel nog een evaluatiebijeenkomst gehouden. We waren erg enthousiast. Dit smaakte naar meer, misschien zelfs op grotere schaal.

Onze ervaring met Mob Programming

Ons experiment heeft zeer positief uitgepakt. We hebben op diverse niveaus kennis met elkaar kunnen uitwisselen. Alle betrokkenen waren op de hoogte van de volledige functionaliteit van de applicatie en de details van de implementatie. Eventuele nieuwe teamleden konden snel worden geïntegreerd zonder dat dit van invloed was op het tempo.

We waren zoals gezegd bijzonder enthousiast voor, tijdens en na afloop van het experiment. Dit had een positief effect op onze teamspirit. We waren allemaal veel gemotiveerder om het project af te ronden. We hebben echter ook gemerkt dat mob programming bijzonder vermoeiend kan zijn. Een dag samenwerken kost veel energie, maar levert gelukkig ook weer energie op!

Voetafdrukken Next steps

Het was collega's opgevallen dat we in onze kamer gezamenlijk op één scherm bezig waren met programmeren. Het gesprek over ons experiment kwam dan ook al snel op gang. Ons experiment bleek aanstekelijk te werken: mensen waren direct geïnteresseerd. We begonnen na te denken over het uitvoeren van meer experimenten. Misschien dat we mob programming kunnen inzetten bij verschillende projecten en verschillende teams. Het zaadje is geplant ...

Al ervaring met mob programming? Of ben je nieuwsgierig geworden? Misschien dat we onze tips en trucs kunnen uitwisselen! We horen graag van je!

Dorien Jorissen