• Home
  • Blog
  • Mob programmeren - 5 ontwikkelaars op één computer?!

Mob programmeren - 5 ontwikkelaars op één computer?!

Pre-corona. Vijf ontwikkelaars in een kamer kijken naar een groot scherm. Vier van hen discussiëren, de andere is aan het typen. Er klinkt een zoemer. Iedereen verschuift van plaats en gaat verder alsof er niets is gebeurd. Wat is hier aan de hand?

Geplaatst op
9 apr. 2021
Leestijd
6 Minuten
Geschreven door
Knowly

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!

Bekijk meer van onze blogs

Knowly

Knowly

14 dec. 2021

Klantinterviews: ons hulpmiddel om te begrijpen wat u nodig hebt

Client interviews are a good way to get to know you, your needs, and how you use Easy LMS. That is a lot of pros for us, but what is in it for you?

Meer lezen
Caroline

Caroline

16 mrt. 2020

Wereldheerschappij, één taal tegelijk!

Ok, so maybe world domination isn’t our actual goal, but the localization of our product is a really important part of enabling our tool to be as accessible as possible to as many people as possible, all over the globe. 

Meer lezen
Knowly

Knowly

29 jun. 2021

Waarom verbeteringen en onderhoud net zo belangrijk zijn als nieuwe functies

In the interview series Development Talks, we give you a look behind the scenes of our development processes. This time Joey, one of our back-end developers, spoke. He explained to us why working on maintenance is as important as building new features. What do we consider as maintenance? And how do we do it?

Meer lezen