Veilig en effectief programmeren met AI

Brief de AI als een collega en controleer het resultaat als een reviewer. Prompts voor debuggen, nieuwe code, tests en onmisbare checks.

6 min leestijdBijgewerkt

Glass blocks connected by glowing lines with small gears

AI-chat is ontzettend handig bij het programmeren: onbekende code uitleggen, de oorzaak van een fout opsporen, boilerplate schrijven, tests opzetten en je een nieuwe taal of library leren. Maar het zit er ook vaak genoeg vol zelfvertrouwen naast. Behandel elk antwoord daarom als een pull request van een snelle, maar wat slordige collega. Deze gids laat zien hoe je goede vragen stelt en hoe je het resultaat controleert.

Waar AI-chat goed in is bij programmeren

  • Code uitleggen: "loop deze functie regel voor regel met me door".
  • Debuggen: een foutmelding en stacktrace analyseren en waarschijnlijke oorzaken voorstellen.
  • Kleine, afgebakende functies: datums parsen, invoer valideren, data transformeren.
  • Boilerplate: configuratiebestanden, argumenten parsen voor de command-line, eenvoudige API-handlers.
  • Tests: unit-tests opzetten, inclusief edge cases waar je zelf niet aan dacht.
  • Regex, SQL en shell-oneliners, inclusief uitleg van elk onderdeel.
  • Leren: "ik ken Python; laat zien hoe dit eruitziet in Go en leg de verschillen uit".
  • Code review: leesbaarheidsproblemen, ontbrekende foutafhandeling en duidelijke beveiligingsrisico's opsporen.

Het is minder sterk in grote architectuurkeuzes die afhangen van je hele codebase, heel nieuwe library-versies die het model nog niet kent, en alles wat het niet kan zien. In een chat zoals ChatG ziet de AI alleen wat je plakt. Het kan je bestanden niet openen en je code niet uitvoeren.

Hoe je vraagt om een bugfix

De meeste matige antwoorden ontstaan door een gebrek aan context. Een goede debugging-prompt bevat vijf dingen: de taal en versies, de relevante code, de volledige foutmelding, wat je verwachtte versus wat er gebeurde, en wat je zelf al hebt geprobeerd.

Zwak:
Mijn code werkt niet, fix het.
[200 regels geplakt]
Sterk:
Python 3.12, pandas 2.x. Deze functie moet de gemiddelde orderwaarde
per klant retourneren, maar geeft KeyError: 'customer_id'.

Code:
[plak alleen de functie en een sample van 5 rijen data]

Volledige traceback:
[plakken]

Ik heb gecontroleerd dat het CSV-bestand een kolom customer_id heeft.
Wat zijn waarschijnlijke oorzaken? Leg de oplossing uit voordat je de
gecorrigeerde code toont.

Breng je code terug tot het kleinste fragment waarin het probleem zich nog voordoet. Vaak ontdek je de bug daardoor al zelf, en het houdt de focus op de relevante regels. Je kunt een debugging-prompt openen in de chat en de gegevens invullen.

Hoe je vraagt om nieuwe code

Schrijf een beknopte specificatie. Hoe preciezer je invoer, uitvoer en randgevallen beschrijft, hoe minder je achteraf hoeft te corrigeren.

Schrijf een TypeScript-functie slugify(title: string): string.
- Kleine letters, alleen ASCII; zet veelvoorkomende letters met accenten om
  (bijvoorbeeld: é wordt e).
- Vervang elke reeks niet-alfanumerieke tekens door één koppelteken.
- Verwijder koppeltekens aan het begin en eind; maximale lengte 60, breek
  nooit een woord af.
- Geen externe libraries.
Schrijf daarna 8 unit-tests met Vitest, inclusief een lege string en
invoer met emoji's.

Vraag meteen om tests bij de code. Als de tests van de AI en zijn eigen code niet overeenkomen, ontdek je een probleem al vóórdat het in productie belandt.

Geef aan wat je niet wilt: "geen nieuwe dependencies", "behoud de bestaande functiesignatuur", "alleen de standard library", "verander niets buiten deze functie". Zonder kaders herschrijft AI vaak meer dan je bedoelde.

Controleer alles voordat je het live zet

Door AI gegenereerde code kan er netjes uitzien en toch fout zijn. Maak van deze controles een vaste gewoonte:

  1. Voer het uit. Voeg nooit code aan een project toe zonder deze en de bijbehorende tests te draaien.
  2. Controleer of elke functie en optie echt bestaat. AI verzint soms methodes, parameters of configuratiesleutels, of gebruikt ze uit een oudere versie. Zoek ze op in de officiële documentatie van de versie die je gebruikt.
  3. Controleer elke packagenaam voor installatie. Beveiligingsexperts hebben aangetoond dat AI-assistenten soms pakketten aanbevelen die niet bestaan. Aanvallers kunnen die namen registreren met kwaadaardige code (een aanval die ook wel "slopsquatting" wordt genoemd). Controleer in het officiële package register of het pakket echt is en actief wordt onderhouden.
  4. Controleer op beveiliging. Let op SQL-queries opgebouwd via stringconcatenatie, ontbrekende invoervalidatie, uitgeschakelde certificaatcontroles, hardcoded secrets en te ruime rechten. Vraag het de AI rechtstreeks: "Beoordeel dit op beveiligingsrisico's, uitgaande van het principe dat alle invoer kwaadaardig is."
  5. Lees het totdat je het snapt. Als je een blok code niet kunt uitleggen, vraag het dan na of gebruik het niet. Jij bent degene die het straks moet onderhouden.

Houd secrets en privécodes uit de chat

Plak nooit API-keys, wachtwoorden, tokens, privésleutels of connection strings in een AI-chat. Vervang ze door placeholders zoals YOUR_API_KEY. Als je per ongeluk een echt secret buiten je eigen systemen deelt, trek deze dan direct in en vervang hem.

Schrijf je code voor een werkgever of klant? Controleer dan hun beleid voordat je code in een externe AI-dienst plakt. Veel bedrijven staan voor bedrijfseigen code alleen goedgekeurde tools toe. Maak het probleem bij twijfel generiek, zodat er niets over het eigenlijke project prijsgegeven wordt. Onze handleiding voor AI-privacy en veiligheid gaat hier dieper op in.

Handige prompts voor developers

Leg deze code uit aan een developer die bekend is met [taal], maar niet
met deze library. Doe dit blok voor blok en noem alles wat riskant of
verouderd lijkt.
[plak code]
Review deze diff als een senior engineer. Groepeer je feedback in bugs,
beveiliging, performance en leesbaarheid. Wees specifiek en citeer de
regels waar het om gaat.
[plak diff]
Schrijf een reguliere expressie die matcht op [beschrijving]. Leg elk
onderdeel uit en geef 5 strings die wel moeten matchen en 5 die dat niet doen.
Ik ken Python goed en ben Rust aan het leren. Laat zien hoe ik [taak]
in Rust aanpak, en leg ownership en borrowing uit alsof ik er nog nooit
van heb gehoord.

Er staan er meer in de verzameling coding-prompts. Voor snelle klusjes zet de code-assistent een beschrijving of snippet om in uitgelegde code, en de ingebouwde programmeertool houdt gedurende een heel gesprek een ontwikkelaarsgerichte stijl aan.

Veelgemaakte fouten

  • Het hele project plakken. Lange lappen tekst overschaduwen het eigenlijke probleem en kunnen de contextlimiet van de AI overschrijden. Stuur alleen de relevante bestanden of functies mee.
  • Een "oplossing" accepteren die alleen het symptoom verbergt. Alles in een try/except-blok zetten laat de foutmelding verdwijnen, niet de bug. Vraag waarom de fout ontstaat.
  • In rondjes blijven draaien. Lopen twee of drie pogingen op niets uit? Stop dan en pas je aanpak aan: geef meer context, maak het voorbeeld kleiner of start een schone chat met een heldere samenvatting van het probleem.
  • Geen versies noemen. Framework-API's veranderen flink tussen hoofdversies; vermeld dus welke versie je draait.
  • Licenties negeren. Genereert de AI een herkenbaar stuk code van iemand anders? Controleer dan de licentie voordat je het overneemt.

Bekijk ook hoe developers ChatG gebruiken en de algemene handleiding voor prompts schrijven.

Een workflow waarmee jij de leiding houdt

  1. Beschrijf eerst het doel, zonder code. Vraag om twee of drie mogelijke richtingen en hun voor- en nadelen voordat er ook maar één regel geschreven wordt.
  2. Kies één aanpak en vraag om een kleine eerste stap. Eén functie of bestand tegelijk is veel makkelijker te controleren dan een complete feature.
  3. Voer het uit en koppel terug. Plak de werkelijke output of foutmelding, niet gewoon "het werkt niet".
  4. Vraag om tests en daarna om een review. De vraag "Welke edge cases mist dit nog?" brengt vaak direct de volgende bug aan het licht.
  5. Schrijf het commit-bericht zelf. Als je niet kunt samenvatten wat er is gewijzigd en waarom, begrijp je de aanpassing zelf nog niet goed genoeg.

Veelgestelde vragen

Kan AI het leren programmeren vervangen?

Nee. Het maakt vooral mensen sneller die code kunnen lezen en beoordelen. Als je niet kunt bepalen of een antwoord klopt, kun je het niet veilig inzetten. Gebruik AI juist om sneller te leren: vraag waarom iets werkt, niet alleen wat het doet.

Welke programmeertalen worden ondersteund?

AI-chat werkt over het algemeen uitstekend met populaire talen zoals Python, JavaScript, TypeScript, Java, C#, C++, Go, PHP, SQL en shell-scripts. Bij minder gangbare talen is het resultaat wisselvalliger. De kwaliteit neemt ook af bij hele nieuwe libraries en versies.

Kan ChatG mijn code uitvoeren of mijn repository inzien?

Nee. ChatG is een chatomgeving: het ziet alleen wat je erin plakt en voert zelf geen code uit. Test en run alles altijd in je eigen ontwikkelomgeving.

Mag ik door AI gegenereerde code commercieel gebruiken?

Behandel het net als code van een externe bron: review het, test het grondig, controleer de licenties van dependencies en van code die gekopieerd lijkt, en volg het beleid van je werkgever. Dit is algemene informatie, geen juridisch advies.

Klaar wanneer jij dat bent

Open de chat en stel je eerste vraag. Het is gratis en je hoeft niets te installeren.

Start met chatten