AI gebruiken als klein DevOps-team
Waarom ik niet met één AI-chatvenster werk, maar verschillende modellen inzet als een klein DevOps-team met eigen rollen, Sprints en taken.
Als je AI vraagt om in één keer een hele applicatie te bouwen, krijg je meestal code die er op het eerste gezicht leuk uitziet, maar half werkt. Het model vergeet halverwege wat je eerder hebt afgesproken, maakt aannames over beveiliging en levert dingen op die je nauwelijks kunt onderhouden.
Dat merkte ik al snel toen ik met AI begon te experimenteren. Inmiddels pak ik het heel anders aan: ik gebruik AI niet als één slimme chatbot, maar als een klein DevOps-team dat ik zelf aanstuur.
Eerst de rollen verdelen
Als ik aan een nieuw project begin, start ik niet meteen met programmeren of prompts typen. Ik bedenk eerst welke rollen er eigenlijk nodig zijn om het project goed neer te zetten.
Die rollen zet ik in losse tekstbestanden (markdown). Denk bijvoorbeeld aan:
- Projectmanager: houdt de planning, de takenlijst en de grote lijnen in de gaten.
- Beveiliging: let alleen maar op veilige opslag van wachtwoorden, tokens en netwerkverbindingen.
- Frontend: kijkt naar de gebruiksvriendelijkheid en hoe knoppen en schermen werken op mobiel en desktop.
- Kwaliteit en testen: zoekt naar foutjes en bedenkt situaties waarin het programma juist kan vastlopen.
Het grote voordeel hiervan is dat elk model met een eigen bril naar het werk kijkt. De beveiligingsrol kijkt heel anders naar een stuk code dan de rol die zo snel mogelijk een schermpje af wil hebben. Daardoor spreken ze elkaar tegen en halen ze fouten naar boven waar je zelf even niet aan had gedacht.
Elk model zijn eigen kracht
Ik heb inmiddels abonnementen bij meerdere AI-aanbieders, waaronder Claude, ChatGPT en Google Antigravity. Niet om ze allemaal tegelijk open te hebben staan, maar omdat elk model ergens anders goed in is:
- Claude Opus (via Cowork) gebruik ik als hoofd van het team. Dit model overziet het hele project, verdeelt het werk over de andere rollen en houdt bij welke besluiten we hebben genomen.
- GPT (Sol en Terra) zet ik in voor het zware programmeerwerk en diepe beveiligingscontroles.
- Gemini 3.7 Flash gebruik ik voor snelle controles, het samenvatten van stukken tekst of kleine administratieve taken waar ik geen dure tokens aan kwijt wil.
- Claude Sonnet gebruik ik voor snelle, lichte aanpassingen tussendoor.
Werken volgens de Agile-methodiek en Sprints
Net als bij een echt DevOps-team werk ik volgens de Agile-methodiek. In plaats van lukraak features achter elkaar aan te vragen, werk ik in korte, gefocuste Sprints.
Aan het begin van een sprint pak ik de backlog erbij en bepaal ik samen met de orchestrator (Claude Opus) wat we in die iteratie opleveren: bijvoorbeeld het opzetten van authenticatie, een database-schema of een specifieke gebruikersflow. De taken worden vervolgens verdeeld over de gespecialiseerde modellen. Aan het eind van de sprint testen we alles integraal door, registreren we eventuele bevindingen en schrijven we besluiten weg in het besluitenlog. Zo blijft de code stabiel en raak je nooit het overzicht kwijt.
Projecten uit de praktijk
Om te laten zien hoe dit in het echt werkt, zijn drie recente projecten een goed voorbeeld:
1. De woningzoeker
Een goede vriend en zijn vriendin zochten met spoed een huurwoning in de vrije sector. In de huidige woningmarkt ben je kansloos als je zelf af en toe een website ververst. Als je een advertentie ziet, ben je meestal al te laat voor een bezichtiging.
Daarom heb ik een programmaatje gebouwd dat dag en nacht meerdere woningsites afzoekt. De tool kijkt om de paar minuten naar nieuwe advertenties, filtert direct op maximale huurprijs, oppervlakte en woonplaats, en stuurt direct een seintje naar hun telefoon als er een match is.
Mijn AI-team hielp hier flink bij: de beveiligingsrol zorgde dat de meldingen veilig verstuurd werden zonder geheime sleutels te lekken, terwijl de testrol meedacht over het voorkomen van dubbele meldingen als een woning opnieuw online werd gezet. Binnen korte tijd hadden ze bezichtigingen te pakken.
2. Agenda vanuit een gesloten netwerk op je telefoon
Twee collega's van mijn vriendin liepen tegen een herkenbaar probleem aan: hun werkrooster en afspraken stonden vast in een afgeschermd zakelijk intranet. Ze konden die agenda onderweg niet op hun eigen telefoon zien.
Ik heb een veilige backend-koppeling gebouwd die de afspraken netjes uitleest en automatisch doorstuurt naar de standaard agenda-app op hun smartphone. Ook hier werkte de rolverdeling prettig: één rol werkte de API-koppeling uit en ving fouten op bij netwerkstoringen, terwijl de beveiligingsrol meekeek of er nergens onnodige persoonsgegevens werden opgeslagen.
3. Een nieuw platform in opbouw
Naast deze kleinere tools ben ik momenteel bezig met een veel groter project. Samen met een zakelijke partner bouw ik in stilte aan een nieuw consumentenplatform voor de Nederlandse markt. Het idee ontstond uit frustratie met de gevestigde marktplaatsen: als je online naar tweedehands spullen zoekt, moet je je tegenwoordig eerst door een berg handelaren, dropshippers, spam en betaalde advertenties heen worstelen voordat je bij een gewone particulier uitkomt. Wij willen dat weer simpel, direct en betrouwbaar maken.
Omdat dit een volwaardig platform is met gebruikersaccounts, authenticatie, databases en strenge beveiligingseisen, is AI-orchestratie hier onmisbaar. Verschillende modellen controleren elkaars code, testen database-schema's en houden de architectuur overzichtelijk.
Het project zit op dit moment in de eindfase van de alpha. Voor nu is het nog volledig work in progress, maar het doel is om eind dit jaar live te gaan.
Zelf de baas blijven over het resultaat
Met AI kun je enorm snel bouwen en dingen uitproberen die je vroeger veel tijd kostten. Maar het belangrijkste blijft: je moet altijd zelf blijven opletten.
AI kan heel zelfverzekerd klinken terwijl een oplossing stiekem vol fouten of veiligheidslekken zit. Daarom controleer en test ik elke regel code en elke configuratie altijd zelf voordat ik iets in gebruik neem. AI versnelt het werk en helpt me scherp te blijven, maar de verantwoordelijkheid voor het eindresultaat ligt altijd bij mijzelf.