Terug naar blog

Teamcoda redactie30 June 2026

Wat we leerden van 10.000 tickets

Goede software begint bij goede verzoeken. Na 10.000 tickets via Coda zien we dezelfde patronen — wat werkt, wat faalt, en hoe je uren bespaart zonder CTO te zijn.

Goede software begint bij goede verzoeken. Dat klinkt voor de hand liggend, maar pas als je duizenden verzoeken hebt gezien, zie je hoe groot het verschil is tussen een ticket dat binnen een dag klaar is en eentje dat drie keer heen-en-weer gaat — soms zonder dat de oorspronkelijke vraag ooit scherp werd.

Bij Teamcoda lopen alle opdrachten via Coda: tickets met context, prioriteit en acceptatiecriteria. Inmiddels hebben we ruim 10.000 tickets verwerkt — bugs, features, onderhoud, audits, AI-implementaties, vibe-code overdrachten. Geen theoretisch model: wel herkenbare patronen die je morgen kunt toepassen.

Dit artikel bundelt wat we daarvan leerden. Niet als proceshandboek, wel als praktische gids voor ondernemers, product owners en iedereen die met een development partner werkt — remote of lokaal.

Waarom tickets belangrijker zijn dan je denkt

Veel ondernemers zien tickets als administratie. "Even mailen wat er moet gebeuren." In de praktijk is het ticket het contract tussen business en development. Vage input leidt tot:

  • Rework — bouwen wat niet bedoeld was, opnieuw uitleggen, opnieuw factureren
  • Vertraging — developer moet gissen, vragen stellen, wachten op antwoord
  • Frustratie — "waarom duurt dit zo lang?" terwijl scope elke ronde verschuift
  • Technische schuld — snelle fixes zonder context, omdat niemand het probleem scherp had

Omgekeerd: een ticket dat 8/10 scoort op duidelijkheid bespaart gemiddeld 1–3 uur per opdracht aan heen-en-weer — soms meer bij bugs of integraties. Vermenigvuldig dat met tientallen tickets per maand en je praat over serieuze tijd en geld.

Lees ook uurtarief versus tarief per feature: slechte tickets maken elk tariefmodel duurder.

Wat 10.000 tickets ons leerden — in cijfers

Geen exacte wetenschap, wel steeds terugkerende verdeling:

PatroonGeschat aandeelGevolg
Eerste versie te vaag~40%Minstens één extra vraagronde
Meerdere wensen in één ticket~25%Scope creep, onduidelijke "klaar"
Geen acceptatiecriteria~35%Discussie bij oplevering
Sterk ticket (8/10+)~30% na intake-hulpSneller opgepakt, minder rework

Opvallend: het gaat zelden om technische moeilijkheid. Het gaat om context — wie, wat, waar, wanneer klaar, en hoe test je het.

Wat werkt keer op keer

1. Duidelijk doel — niet alleen een actie

Slecht: "Pas de knop aan."
Goed: "De primaire CTA op /pricing moet 'Plan gesprek' hebben i.p.v. 'Contact', omdat sales meer qualified leads wil — zelfde kleur en positie."

Het doel vertelt waarom. Daarmee kan een developer alternatieven voorstellen ("link naar Calendly i.p.v. mailto?") zonder de business te missen.

2. Acceptatiecriteria — wanneer is het klaar?

Testbaar formuleren:

  • "Ingelogde admin ziet export-knop; CSV bevat kolommen A, B, C."
  • "Fout bij ongeldig e-mailadres: rode melding onder veld, form niet verzonden."
  • "Mobiel (Safari iOS 17): menu sluit na tap op item."

Geen roman — wel concreet genoeg dat oplevering geen verrassing is.

3. Context — reproduceerbaar maken

Vooral bij bugs:

  • Browser, OS, app-versie of URL
  • Stappen: 1, 2, 3 → fout
  • Screenshot of screen recording
  • Verwacht vs. werkelijk gedrag
  • Gebeurt het voor alle users of één account?

"Fix login" zonder dit? Dan begint elke developer bij nul — ook na 10.000 eerdere tickets.

4. Eén verzoek per ticket

Drie losse wensen in één ticket = drie keer miscommunicatie over prioriteit en "klaar". Split:

  • Ticket A: bug export
  • Ticket B: tekst homepage
  • Ticket C: nieuwe filter op dashboard

Je backlog wordt overzichtelijker; uren zijn traceerbaar per onderwerp.

5. Prioriteit onderbouwd

"ASAP" zonder context is ruis. Beter:

  • "Blokkeert livegang vrijdag — zonder fix geen deploy."
  • "Nice to have; mag na sprint X."
  • "Klant X belt dagelijks — reputatierisico."

Wat faalt keer op keer

  • Oplossing voorschrijven zonder probleem — "Gebruik Redis" terwijl het echte issue een race condition in de queue is
  • Scope in één zin — "Bouw integratie met Exact" (welke entiteiten, richting, frequentie, foutafhandeling?)
  • Verwijzing naar "zoals vorige keer" — zonder link naar dat ticket of die PR
  • Alles is P1 — als alles urgent is, is niets urgent
  • Design alleen in hoofd — schets, Figma-link of screenshot bespaart uren interpretatie

Verschillende tickettypes — andere focus

Bug: reproduceerbaar maken (stappen, omgeving, verwacht gedrag).
Feature: doel + acceptatiecriteria + out-of-scope ("niet in deze ronde: admin export").
Change request: wat verandert er t.o.v. huidige situatie?
Spike / onderzoek: welke vraag moet beantwoord; tijdbox (bijv. 4 uur); deliverable = advies, geen productiecode.
Onderhoud: link naar monitoring alert, dependency CVE, of "elke maandag terugkerend."

Meer structuur: Gids: goed ticket schrijven en het beste ticket schrijven voor AI en Coda.

De 8/10-regel

Via Coda streven we naar tickets die minimaal 8/10 scoren op duidelijkheid vóór ze naar development gaan. Dat betekent niet perfectie — wel:

  • Doel is helder
  • Acceptatiecriteria zijn testbaar
  • Context ontbreekt niet op cruciale punten
  • Scope past in één ticket

Tickets onder 8/10? Dan stelt Coda (of een engineer) gerichte vervolgvragen — liever vijf minuten scherper stellen dan twee uur verkeerd bouwen.

Voor en na — twee echte patronen

Voor: "Login werkt niet."
Na: "Safari 17 op iPhone: na inloggen blijft spinner hangen. Chrome desktop OK. Testaccount: demo@… Stappen: open /login → vul in → tap Inloggen. Verwacht: redirect naar /dashboard."

Voor: "Voeg AI toe aan support."
Na: "Interne FAQ-bot in Zendesk sidebar: antwoord uit Confluence + laatste 90 dagen tickets; mens keurt draft goed vóór verzenden; max 500 tokens/antwoord; geen klantdata in logs. Niet in scope: automatisch verzenden."

AI versnelt intake — maar vervangt geen denken

Coda gebruikt AI om titels te scherpen, ontbrekende velden te signaleren en suggesties te doen ("wil je acceptatiecriteria toevoegen?"). Dat werkt — mits de ruwe input enigzins klopt.

Garbage in, garbage out blijft waar: "fix it" wordt hooguit "fix it — please specify environment and steps."

AI helpt vooral bij:

  • Herschrijven van lange mails naar gestructureerde tickets
  • Checklist: mist er omgeving, criteria, prioriteit?
  • Splitsen van mega-verzoeken in losse tickets

Het vervangt geen product owner die weet wat het bedrijf nodig heeft.

Template — kopieer en plak

  1. Titel: kort, actie + onderdeel ("Export CSV op orders-pagina")
  2. Doel: waarom (1–2 zinnen)
  3. Acceptatiecriteria: bulletpoints, testbaar
  4. Context: URL, omgeving, account, stappen
  5. Out of scope: wat niet in dit ticket hoort
  6. Prioriteit: waarom nu (of later)
  7. Bijlagen: screenshots, designs, links

Wat jij morgen kunt doen

  1. Pak je laatste vage ticket — herschrijf met template hierboven
  2. Split één "mega-ticket" in drie losse verzoeken
  3. Voeg één acceptatiecriterium toe dat je zelf kunt testen
  4. Lees de gids Goed ticket schrijven
  5. Probeer Ticket check of stuur een voorbeeld via Coda

Samengevat

Na 10.000 tickets is onze conclusie eenvoudig: kwaliteit van het verzoek bepaalt snelheid en kosten van de oplossing. Niet het uurtarief, niet per se senioriteit — wel hoeveel context je meegeeft.

Wil je samenwerken met een partner die tickets serieus neemt? Bekijk Coda, werken met Teamcoda, of mail info@teamcoda.com.

Dieper: het beste ticket schrijven voor AI en Coda

Geschreven en geredigeerd door Teamcoda · Den Bosch. Praktijkkennis uit projecten — geen volautomatisch gegenereerde content zonder redactie.

Laat ons je helpen!

Wil je met een van deze technieken aan de gang? Of advies nodig over hoe je deze effectief in kan zetten? We geven advies maar hebben ook capaciteit. Neem contact met ons op om de mogelijkheden te bespreken.