Experimenten uitvoeren om onze processen te verbeteren is onderdeel van ons dagelijks werk. Dus als ik iets hoor dat ons zou kunnen helpen verbeteren, wil ik het onderzoeken. Begin 2019 nam ik deel aan de Domain Driven Design Europe conventie. Tijdens de pauzes kletste ik veel met andere deelnemers, voornamelijk ontwikkelaars.
In veel van deze gesprekken kwam de workshop Mob Programming van de conventie een jaar eerder ter sprake. De ontwikkelaars waren echt heel enthousiast over mob programming: meerdere ontwikkelaars die in dezelfde ruimte op één pc werken. Ze legden uit hoeveel ze hadden geleerd en hoeveel ze als team waren gegroeid door deze sessies. Dat was voor mij een duidelijk signaal om er meer over te leren. Daarna besloot ik dat we ermee zouden experimenteren.
Een essentieel onderdeel van een experiment is de hypothese. Zonder die hypothese weet je niet of het experiment geslaagd is. Mijn theorie was dat mob-programmeren ons zou helpen kennis te delen tussen ontwikkelaars terwijl we schone code bouwen.
Ik plande en bereidde onze eerste sessie mob-programmeren voor, wat niet zo moeilijk was:
Krijg een computer aangesloten op een groot scherm
Plaats een tafel voor het scherm.
Voeg vijf stoelen toe aan de tafel.
Plaats wat snacks en benodigdheden op tafel.
En daar zaten we dan, vijf ontwikkelaars in een kamer met maar één computer:

Wat gebeurde er tijdens onze eerste sessie mob-programmeren?
Wesley gaat bij het toetsenbord zitten (we gebruiken zijn pc) en krijgt automatisch de rol van driver. De bestuurder is een intelligent invoerapparaat: hij kan typen maar mag geen beslissingen nemen. De andere ontwikkelaars krijgen de rol van navigator. Zij bespreken wat er moet gebeuren en vertellen de bestuurder wat hij moet doen.
De bestuurder is een intelligent invoerapparaat: hij kan typen maar mag geen beslissingen nemen
We beginnen aan een eenvoudig opwarmingsverhaal waarbij we wat verouderde inhoud in de voettekst van de site moeten verwijderen.
De navigators vertellen Wesley dat hij Docker moet starten. We zien meteen een foutmelding. Wesley legt uit dat dit soms gebeurt, maar dat het altijd verholpen is met een paar keer opnieuw proberen. We proberen niet opnieuw, maar de navigators leggen uit welke instellingen we moeten veranderen. Vanaf nu start Docker altijd zonder foutmelding.
Wesley schrijft op een sticky note wat hij heeft geleerd over Docker. Hij plaatst deze sticky note op het grote vel papier dat Learnings heet.
Ik schrijf op een plakbriefje dat het niet starten van Docker ons tegenhield. Ik voer het naar de Waste Snake, een groot vel papier met een slang erop getekend. Op dit vel plak je plakbriefjes die alles beschrijven wat de groep tegenhoudt om echt te programmeren:

Na 12 minuten klinkt er een zoemer. Iedereen moet naar rechts schakelen. De bestuurder wordt navigator en een van de navigators wordt de bestuurder. Het is een beetje een gedoe en het kost wat tijd om weer op gang te komen. Maar na een paar keer schakelen gaat het al een stuk beter.
We ronden het verhaal af en beginnen aan het volgende: Yii2 view veroorzaakt vals commentaar in HTML, waardoor HTML ongeldig wordt. Een interessant verhaal. Het is al twee keer opgepakt door verschillende ontwikkelaars, maar ze liepen allebei vast. Iedereen doet mee met het verhaal. Uiteindelijk hebben we het probleem opgelost op een manier waar iedereen erg tevreden over is.
Na twee uur eindigt de sessie.
Wat hebben we geleerd van onze eerste sessie maffiaprogrammering?
We houden een retrospectieve vergadering om te bespreken wat goed ging en wat we kunnen verbeteren. De belangrijkste conclusie is: we hebben het verhaal beter / grondiger opgelost in één iteratie dan wanneer één persoon eraan zou hebben gewerkt.
We hebben het verhaal beter / grondiger opgelost in één iteratie dan wanneer één persoon eraan zou hebben gewerkt.
Iedereen voelt zich energiek tijdens de terugblik. We vonden het allemaal een leuk experiment. Het wordt duidelijk dat mob programming ons inderdaad helpt om kennis te delen terwijl we schone code bouwen.
De meeste lessen waren vrij voor de hand liggend, zoals wanneer een snelkoppeling onbekend was voor de driver, of het configureren van tools om je efficiënter te helpen. Het werd duidelijk hoe gemakkelijk het is om verspilling toe te voegen aan je eigen ontwikkelproces door workarounds te gebruiken als een systeem zich onverwacht gedraagt. Dit bevestigt de noodzaak om de Verbeter Kata te omarmen.
Andere lessen waren subtieler. Bijvoorbeeld het vinden van manieren om een moeilijk probleem op te splitsen in kleinere problemen. Of de suggesties over hoe je echt Test Driven kunt werken door eerst een falende test te maken in plaats van achteraf een test toe te voegen.
Het experiment is geslaagd! De volgende sessie is meteen gepland
Een van de moeilijkere dingen om goed te krijgen was het communicatieniveau tussen navigators en de bestuurder. Je wilt niet alles uit de doeken doen, vooral niet voor de meer ervaren ontwikkelaars. Maar je wilt een junior ontwikkelaar ook niet het gevoel geven dat hij in het diepe wordt gegooid. Na verloop van tijd leert de groep hoe individuele bestuurders op de juiste manier aan te spreken.
Remote mob programmeren
In Nederland zitten we momenteel in een lockdown. Ons kantoor is gesloten en iedereen werkt op afstand. Dit maakt 'mob programming' zoals hierboven beschreven onmogelijk omdat we niet in dezelfde ruimte kunnen zijn.
We wilden echter nog steeds mob-programmeersessies doen. Met vallen en opstaan kwamen we op het volgende uit voor een uitstekende remote mob-programmeersessie:
Iedereen heeft een webcam, en iedereen zet hem aan tijdens een sessie.
Wij gebruiken Whereby om onze vergaderingen te hosten, omdat je je scherm kunt delen en toch elkaars camerafeeds kunt zien.
De bestuurder logt in op een speciale computer via een externe desktopverbinding (hiervoor hebben we een mob-gebruikersaccount gemaakt op het interne netwerk).
We hebben een apart mob-gebruikersaccount gemaakt voor Git. Dit maakt het heel gemakkelijk om van rol te wisselen.
Hoe kan ik hiermee experimenteren in mijn eigen werkomgeving?
Van alle artikelen, blogs en e-boeken die ik heb gelezen over het programmeren van maffia, kan ik sterk aanraden om deze twee te lezen:
Kies daarna gewoon een datum met je team en probeer het uit. Veel plezier!