Als software software kan bouwen
Vorige maand werden alle 863 tests groen op software die ik heb opgeleverd maar niet zelf heb geschreven. Als software software kan bouwen, is de vraag niet of de engineer overleeft, maar welk deel van het werk ooit echt het werk was.
Vorige maand werd een testsuite van mij groen, alle 863 tests, op software die ik heb opgeleverd maar niet zelf heb geschreven. Een AI agent schreef de code op basis van een briefing van mij, verspreid over sessies die ik steeds heb beoordeeld. Ik heb in vier verschillende sectoren mijn brood verdiend met software bouwen, en als ik eerlijk beschrijf wat hier gebeurde, dan bouwde software mijn software. Dat zet een scherpere vraag op tafel, een die ik steeds stelliger hoor: als software software kan bouwen, waarom zou je dan nog een engineer nodig hebben?
De redenering erachter is helder. Software bouwen was een vak. Dat vak wordt nu uitgevoerd door wat er zelf mee wordt gebouwd, en zodra machines een vak overnemen, houdt het op een beroep te zijn. Zetters, wevers en de menselijke computers die ooit hele zalen vulden om berekeningen uit te voeren: er zijn genoeg voorbeelden, en op het eerste gezicht past de engineer keurig achteraan in dat rijtje.
Maar precies deze vraag is binnen de softwarewereld al eerder gesteld, en het antwoord van het vak is veelzeggend. Een compiler bouwt software vanuit een beschrijving. Een framework doet dat ook. Net als SQL, waarmee je zegt wat je wilt zonder ooit te vertellen hoe het moet gebeuren. Elke nieuwe laag nam bouwwerk over dat engineers daarvoor met de hand deden, en elke keer waren er mensen die concludeerden dat de engineer klaar was. In plaats daarvan gebeurde telkens hetzelfde: engineers schoven één niveau omhoog in wat ze specificeerden, en het vak werd groter.
Fred Brooks legde het mechanisme in 1986 uit. Het moeilijke deel van software zat nooit in het bouwen zelf. Dat noemde hij de accidental complexity. De kern zat ergens anders: weten wat je moet bouwen, kiezen tussen dingen die niet allebei waar kunnen zijn, een systeem passend krijgen in een rommelige werkelijkheid. Gereedschap bleef steeds meer van die accidental complexity opeten. De kern bleef bij de mens.
Tot zover klinkt dat geruststellend. Maar het oude antwoord dekt deze golf niet helemaal, en ik wil niet doen alsof dat wel zo is. AI is de eerste bouwlaag die ook aan die kern komt. Het bouwt wat ik specificeer, maar stelt op basis van één vage zin ook voor wat er gebouwd zou moeten worden. Een compiler deed dat nooit. Daarom heeft de vraag nu tanden, terwijl die vijftig jaar lang nauwelijks beet had.
Toch zit er iets anders fout in de vraag. ‘Engineer’ is eigenlijk een bundel van vier taken: bepalen wat er moet bestaan, het bouwen, controleren of het doet wat de bedoeling was, en ervoor instaan als dat niet zo is. Eén persoon deed ze alle vier. Bouwen was alleen het zichtbare deel, het factureerbare deel, het deel waarnaar we het hele vak hebben genoemd. AI haalt die bundel uit elkaar en neemt het bouwen over. De vraag ‘waarom heb je nog een engineer nodig?’ gaat ervan uit dat die bundel het werk wás. Bouwen was alleen de notatie.
Ik zie dat uit elkaar getrokken werk terug in mijn eigen week. De briefing is het bepalen: de afbakening, de randvoorwaarden, wanneer het klaar is. Sla dat over en je krijgt het gevoel dat je iets bouwt, in plaats van wat je eigenlijk wilde bouwen. De review is de controle. Daarin leg ik het resultaat langs de bedoeling achter de briefing, want een agent voldoet veel betrouwbaarder aan de letter van een briefing dan aan het punt ervan. En mijn naam staat op het resultaat. Het engineeringwerk waar ik dit kwartaal het meest trots op ben, is een tekstbestand.
Het laatste deel van de bundel is de bodem. Bepalen en controleren kunnen kleiner worden naarmate machines beter worden in voorstellen doen en hun eigen werk nakijken. Ervoor instaan wordt niet kleiner. Geen rechter, toezichthouder of klant waar dan ook accepteert software als verantwoordelijke partij. Als iets dat door software is gebouwd stukloopt, heeft de vraag ‘wie staat hiervoor in?’ nog steeds een mens als antwoord nodig. En degene die daar goed antwoord op kan geven, is degene die heeft bepaald, gespecificeerd en gecontroleerd.
De redenering draait het dus om. Software die software bouwt, maakt de engineer niet overbodig. Het haalt de vermomming weg. Zeventig jaar lang kostte het bouwen zoveel moeite dat het verborg waar het werk werkelijk uit bestond. Nu het bouwen wordt overgenomen, komt het werk dat eronder zat bloot te liggen: weten wat er moet bestaan, kunnen beoordelen of het dat ook doet, en ervoor instaan. Nu dat werk eenmaal zichtbaar is, kan het zich nergens meer achter verschuilen. En hetzelfde geldt voor iedereen die nooit iets anders deed dan bouwen.