Meerdere agents tegelijk

Steeds meer bouwtools kunnen meerdere agents tegelijk laten werken. Drie taken tegelijk klinkt als drie keer zo snel. In de praktijk verschuift de bottleneck naar het enige dat niet parallel kan: jouw beoordeling.

Terug naar Kennis
01/09

Waarom het minder oplevert dan je denkt

Snelheid in het maken is zelden de beperkende factor.

Als drie agenten tegelijk werken, krijg je drie wijzigingen tegelijk terug. Die moet je alle drie begrijpen voordat je ze samenvoegt. Beoordelen kost meer aandacht dan produceren, en dat deel kun je niet uitbesteden zonder de controle kwijt te raken.

Daar komt bij dat parallelle agenten elkaars werk niet zien. Twee agenten die allebei een hulpfunctie nodig hebben, schrijven er allebei een. Je krijgt geen conflict, je krijgt dubbel werk dat er allebei redelijk uitziet.

Er zit ook een minder zichtbaar effect in. Als één agent werkt, bouw je terwijl je meeleest een beeld op van wat er in je project verandert. Bij drie tegelijk verdwijnt dat beeld. Je krijgt drie resultaten en moet ze los van elkaar reconstrueren, zonder dat je het ontstaan hebt gevolgd. Dat kost aantoonbaar meer moeite dan drie keer achter elkaar meekijken.

Dat is de reden dat teams die dit een tijdje doen, meestal terugvallen op twee: één die werkt aan de klus waar de aandacht ligt, en één die iets uitzoekt of voorbereidt waar je later naar kijkt. Dat past nog binnen wat een mens kan volgen.

02/09

Waar het wel werkt

Losse gebieden

Eén agent op de koppeling, één op de schermen, één op de tests. Ze raken elkaars bestanden niet.

Onderzoek naast bouw

Laat er een uitzoeken hoe een externe koppeling werkt terwijl de ander doorbouwt aan iets anders.

Herhaalwerk

Dezelfde wijziging in twintig bestanden is precies waar parallel werken zonder nadenken kan.

03/09

Het patroon dat wel schaalt

Niet parallel bouwen, maar parallel voorbereiden.

Er is één vorm van parallel werken die in de praktijk vrijwel altijd wint, en dat is: één agent bouwt, de andere bereidt voor. Terwijl jij met de eerste aan het werk bent, laat je de tweede uitzoeken hoe een koppeling werkt, welke bibliotheek geschikt is, of hoe de foutmelding van gisteren te reproduceren is.

Dat werkt omdat de tweede agent niets aanraakt. Hij levert informatie op, geen code. Daarmee vervallen alle conflicten in één klap, terwijl je wel het voordeel houdt dat er twee dingen tegelijk gebeuren. De beoordelingslast blijft laag, want een verslag lezen is iets anders dan een wijziging nakijken.

Wie hierin een ritme vindt, komt verder dan wie drie agents tegelijk laat bouwen. Het is minder spectaculair en het levert meer op, wat vaker geldt dan mensen leuk vinden.

04/09

Waar het misgaat

  • Twee agenten in hetzelfde bestand. Wie het laatst schrijft wint, en dat merk je pas als er iets weg is.
  • Gedeelde afhankelijkheden: de een werkt een pakket bij, de ander gaat uit van de oude versie.
  • Een gezamenlijke aanname die niemand heeft opgeschreven, zoals hoe een gebruiker heet in de database.
  • Jij als flessenhals: drie takken tegelijk nakijken kost meer tijd dan ze na elkaar bouwen.
05/09

Wat je vooraf vastlegt

Afspraken die agenten niet uit zichzelf maken.

Twee agenten die allebei een gebruiker moeten opslaan, verzinnen allebei een eigen naam voor hetzelfde veld. Je krijgt geen foutmelding; je krijgt twee stukken code die naast elkaar bestaan en pas botsen als iemand ze koppelt. De oplossing is saai en werkt: leg de gedeelde namen vooraf vast in één bestand dat allebei de agenten als uitgangspunt krijgen.

Hetzelfde geldt voor afhankelijkheden. Spreek af welke versies je gebruikt en laat geen agent zelfstandig pakketten bijwerken terwijl een ander doorbouwt op de oude versie. Eén bijgewerkt pakket kan het werk van de ander onbruikbaar maken zonder dat er iets rood wordt.

En leg vast wie waar mag schrijven. Niet als bureaucratie, maar omdat het de enige manier is waarop parallel werken zonder samenvoegconflicten verloopt. Eén agent per map is de simpelste regel die werkt.

06/09

Hoe je taken knipt

Wel zinvol
  • Per agent een eigen map of eigen bestanden
  • Vooraf vastleggen hoe iets heet dat ze allebei nodig hebben
  • Na elke agent apart nakijken, niet alles tegelijk
Niet zinvol
  • Twee agenten op hetzelfde scherm
  • Parallel werken aan iets dat je nog aan het uitdenken bent
  • Meer agenten starten omdat het kan
07/09

Hoe je het resultaat nakijkt

Drie wijzigingen samenvoegen is een vaardigheid apart.

Kijk elke wijziging apart na voordat je iets samenvoegt, en doe dat in de volgorde van klein naar groot. Begin met de agent die het minste heeft aangeraakt: die is het snelst te beoordelen en zijn resultaat verkleint de ruis waarin je de volgende leest.

Zoek daarna gericht naar overlap. Twee dingen die hetzelfde doen met een andere naam, twee plekken waar dezelfde waarde is vastgelegd, twee versies van dezelfde hulpfunctie. Dat vind je door te zoeken op de kern van wat er gebouwd is, niet door de wijzigingen naast elkaar te leggen.

En draai alles pas samen als het los is nagekeken. De verleiding is om drie takken tegelijk samen te voegen en dan te kijken of het nog werkt. Als er dan iets stuk is, weet je niet meer welke agent het deed, en ben je meer tijd kwijt dan je met parallel werken hebt gewonnen.

08/09

Wanneer je juist niet parallel werkt

Er is een categorie werk waar dit alleen schade doet.

Alles wat nog niet vastligt, doe je serieel. Als je nog aan het uitzoeken bent hoe iets moet werken, verandert het antwoord op vraag één de vraagstelling van vraag twee. Drie agenten die tegelijk aan een onopgeloste vraag werken, leveren drie antwoorden op een vraag die je verkeerd hebt gesteld.

Hetzelfde geldt voor werk dat over hetzelfde scherm of hetzelfde stuk logica gaat. De verleiding is groot, want het lijkt op te knippen in 'de knop' en 'het formulier'. In de praktijk delen die één stuk toestand en loop je vast in het samenvoegen.

De vuistregel die overblijft: parallel werken is voor werk dat je vooraf kunt beschrijven zonder naar de andere taak te kijken. Kun je dat niet, dan is het geen twee taken maar één taak die je nog niet doorziet.

09/09

Veelgestelde vragen

Hoeveel agents tegelijk is verstandig?

Zoveel als je kunt nakijken zonder het overzicht te verliezen. Voor de meeste mensen zijn dat er twee.

Werkt dit ook zonder versiebeheer?

Nee. Zonder de mogelijkheid om per wijziging terug te gaan, is parallel werken een manier om jezelf klem te zetten.

Is dit hetzelfde als een team simuleren?

Nee. Een team overlegt, corrigeert elkaar en onthoudt afspraken. Parallelle agenten doen dat niet uit zichzelf; jij bent het overleg.

Moet ik hiervoor aparte werkmappen gebruiken?

Als je tools het ondersteunen, is dat de schoonste route: elke agent een eigen kopie van het project, en jij voegt achteraf samen. Dat kost wat schijfruimte en voorkomt de hele categorie problemen waarin twee processen hetzelfde bestand aanraken.

Hoe merk ik dat er dubbel werk is ontstaan?

Meestal aan twee functies die hetzelfde doen met een net andere naam. Een korte zoekactie op de kern van wat je hebt laten bouwen, vindt dat sneller dan een code-review. Doe die zoekactie voordat je samenvoegt, niet erna.

Is dit anders bij een groot team?

In een team heb je dit probleem al zonder agents, en je hebt er meestal ook al afspraken voor: eigenaarschap per gebied, korte takken, snel samenvoegen. Agents versterken alleen het tempo. Wie die afspraken heeft, kan opschalen; wie ze niet heeft, merkt het nu sneller.

Wil je zien wat een assistent met jouw systemen kan?

In een bouwdag ontsluiten we één systeem met leesrechten en bouwen we een assistent die er vragen over beantwoordt. Dan weet je of het idee hout snijdt.