Zettelkasten voor ontwikkelaars: een praktische methode die werkt
Stel een ontwikkelaarskennisgrafiek samen.
Ontwikkelaars lijden meestal niet aan een gebrek aan informatie. Wij lijden aan te veel daarvan.
Er zijn API-documentatie, pull requests, productiewaarheden, ontwerpsessies, notulen, architectuurschema’s, codecommentaren, Slack-threads, onderzoeksrapporten, experimenten, bladwijzers en halfafgeronde ideeën die in vijf verschillende tools liggen. Het moeilijke deel is niet het opslaan van informatie. Het moeilijke deel is het omzetten van die informatie in herbruikbaar denken.
Daar komt de Zettelkasten goed van pas.

Een Zettelkasten wordt vaak omschreven als een notitiesysteem, maar dat doet het tekort. Goed gebruikt is het een persoonlijk kennissysteem voor het ontwikkelen van ideeën over tijd. Voor ontwikkelaars kan het een praktische brug worden tussen code, architectuur, debuggen, leren en schrijven.
Het meningsvolle deel is dit: de meeste ontwikkelaars zouden de Zettelkasten niet moeten gebruiken als romantisch productiviteitshobby. Bouw geen prachtig notitiemuseum. Bouw een werkend systeem dat je helpt bij het oplossen van problemen, het uitleggen van systemen en het nemen van betere engineeringbeslissingen.
Wat is Zettelkasten?
Zettelkasten betekent “kaartjeskast”. De methode is geassocieerd met socioloog Niklas Luhmann, die een grote collectie gekoppelde notities gebruikte om ideeën te ontwikkelen en uitgebreid te schrijven.
De belangrijke les is niet dat hij papieren kaartjes gebruikte. De belangrijke les is dat zijn notities geen geïsoleerde bestanden waren. Elke notitie had een duidelijk idee, een plek in het systeem en links naar andere notities. Na verloop van tijd werd het systeem waardevoller omdat verbindingen zich ophoopten.
Voor ontwikkelaars is de moderne versie eenvoudig:
- Schrijf één nuttig idee per notitie.
- Koppel het aan gerelateerde notities.
- Gebruik die links om uitleggen, beslissingen, patronen en artikelen te laten groeien.
Dat is het. De rest is een implementatiedetail.
Waarom ontwikkelaars worstelen met kennisoverload
Softwareontwikkeling creëert kennis die zowel gedetailleerd als tijdelijk is.
Je leert waarom een cache-invalidatiebug is ontstaan. Je ontdekt een vreemde uitzonderingsgeval in een framework. Je vergelijkt twee wachtrijstrategieën. Je debugt een productieuitval. Je begrijpt waarom een legacy-service vreemd gedraagt. Je leest een geweldig artikel over gedistribueerde tracing.
Dan herinner je je twee maanden later vaag dat je ooit het antwoord wist.
De gebruikelijke ontwikkelaarskennisstapel maakt dit erger:
- Bladwijzers bewaren bronnen, geen begrip.
- Mappen dwingen tot vroege categorisering.
- Wikis worden verouderd als niemand ze onderhouden.
- TODO-lijsten mengen taken met ideeën.
- Codecommentaren verklaren lokale details, niet bredere concepten.
- Chatberichten verdwijnen in de geschiedenis.
Een Zettelkasten helpt omdat het kennis behandelt als een netwerk, niet als een magazijn. Als die framing bekend klinkt van het lezen over het bouwen van een tweede brein, dan is dat geen toeval — beide methoden aanpakken dezelfde kloof tussen vastleggen en hergebruik, maar de discipline van de Zettelkasten van atoomnotities en expliciete links geeft ontwikkelaars een granularer greep op technische ideeën.
Kernprincipes van Zettelkasten
Atoomnotities
Een atoomnotitie bevat één idee.
Niet één onderwerp. Niet één samenvatting van een artikel. Niet één enorme pagina genaamd “PostgreSQL”. Één idee.
Bijvoorbeeld, dit is te breed:
PostgreSQL notities
Kubernetes
Caching
System design
Dit komt dichter bij atoom:
Partiële indexen verminderen schrijfoverhead wanneer queries gericht zijn op een klein subset
Kubernetes readiness-probes beschermen traffic-routing, niet container-startup
Write-through caching verbetert consistentie maar verhoogt schrijflatency
Idempotentie-sleutels maken van retries veilige operaties
Atoomnotities zijn krachtig omdat ze makkelijker te koppelen zijn. Een enorme pagina kan alleen gekoppeld worden als een vaag onderwerp. Een gefocuste notitie kan verbonden worden met een exact concept, beslissing, bug of systeem.
Een goede ontwikkelaarsnotitie zou meestal één van deze vragen moeten beantwoorden:
- Wat is het idee?
- Wanneer is het belangrijk?
- Welke afweging onthult het?
- Waar heb ik het in echte code gezien?
- Met welk ander concept verbindt het?
Koppelen
Links zijn het hart van het systeem.
Het punt is niet om een mooi grafiekje te maken. Het punt is om ideeën herbruikbaar te maken.
Als je een notitie schrijft over idempotentie-sleutels, koppel het dan aan notities over retries, gedistribueerde systemen, betalingsverwerking, message queues, API-ontwerp en incidentpreventie. Als je een notitie schrijft over databasemigraties, koppel het dan aan deployveiligheid, rollback-strategie, backwards-compatible en feature flags.
Een link zou meestal één van deze betekenissen moeten hebben:
- “Dit verklaart hetzelfde concept vanuit een ander perspectief.”
- “Dit is een praktisch voorbeeld van het idee.”
- “Dit is een afweging of tegenargument.”
- “Dit concept hangt af van dat concept.”
- “Deze notitie hoort bij een groter argument.”
Vermijd lui koppelen. Het koppelen van elke notitie aan elke andere notitie creëert ruis. De beste links zijn intentioneel.
Emergentie
Emergentie is het deel van de Zettelkasten dat mystiek klinkt, maar het is praktisch.
Je hoeft niet vooraf de perfecte structuur te ontwerpen. Je voegt nuttige notities toe, koppelt ze eerlijk en laat clusters na verloop van tijd verschijnen.
Na enkele maanden merk je misschien dat veel notities zich verbinden rond onderwerpen zoals:
- API-betrouwbaarheid
- Observabiliteit
- Ontwikkelaarservaring
- Event-driven architectuur
- Databaseprestaties
- Technische schuld
- Documentatie
- Beveiligingsreviews
Die clusters worden toekomstige artikelen, interne documentatie, ontwerpprincipes, conferentiepraatjes, onboardingsmateriaal of betere engineeringbeslissingen.
Daarom is Zettelkasten anders dan een maphiërarchie. Mappen vragen je om te beslissen waar kennis thuishoort voordat je het volledig begrijpt. Links laten kennis toe te behoren tot meerdere contexten.
Een ontwikkelaarsadaptatie van Zettelkasten
Klassiek Zettelkasten-advies komt vaak uit academisch schrijven — de persoonlijk kennismanagement-literatuur dekt die traditie goed. Ontwikkelaars hebben een iets andere versie nodig.
Een ontwikkelaars-Zettelkasten zou drie dingen moeten verbinden:
- Concepten
- Code
- Systemen
Concepten
Conceptnotities verklaren herbruikbare ideeën.
Voorbeelden:
Backpressure voorkomt dat snelle producers trage consumers overweldigen
Optimistisch locking detecteert conflicterende writes zonder readers te blokkeren
Circuit breakers beschermen afhankelijkheden tegen herhaalde mislukte calls
Deze notities moeten in je eigen woorden geschreven zijn. Het kopiëren van documentatie is niet genoeg. De waarde komt voort uit het dwingen jezelf om het concept duidelijk uit te leggen.
Een nuttige conceptnotitie kan bevatten:
- Een korte uitleg
- Een concreet voorbeeld
- Een afweging
- Een link naar een gerelateerd patroon
- Een link naar een echt systeem waar je het hebt gebruikt
Code
Codnotities vangen praktische implementatiekennis.
Ze zijn geen willekeurige snippet-dumps. Een snippet is alleen nuttig als het een beslissing of patroon verklaart.
Bijvoorbeeld:
## Idempotente verwerking van verzoeken met een databasebeperking
De veiligste implementatie is vaak een unieke beperking op de idempotentie-sleutel.
De applicatie kan veilig opnieuw proberen omdat dubbele verzoeken resulteren in hetzelfde
opgeslagen resultaat in plaats van een tweede neveneffect te creëren.
Gerelateerd:
- [[Retries hebben idempotente operaties nodig]]
- [[Databasebeperkingen zijn concurrentiebeheersing]]
- [[Betalings-API's moeten netwerkfouten behandelen als onbekend resultaat]]
Goede codnotities verklaren waarom de code werkt, wanneer je hem moet gebruiken en wat er mis kan gaan.
Systemen
Systeemnotities verbinden abstracte ideeën met je daadwerkelijke architectuur.
Bijvoorbeeld:
De factureringsdienst gebruikt idempotentie-sleutels omdat calls naar de betalingsprovider kunnen
slagen zelfs wanneer onze HTTP-client time-out geeft.
Deze notitie kan koppelen aan:
Idempotentie-sleutels maken van retries veilige operaties
Timeouts bewijzen geen mislukking
Betalings-API's moeten onbekende resultaten modelleren
Outbox-patroon scheidt database-writes van externe neveneffecten
Hier wordt Zettelkasten waardevol voor senior engineeringwerk. Het helpt je een geheugen te bouwen van waarom systemen de vorm hebben die ze hebben.
Een praktisch workflow
Stap 1: Vang vluchtige notities
Een vluchtige notitie is een ruwe vastlegging. Het hoeft niet gepolijst te zijn.
Voorbeelden:
Uitzoeken waarom readiness-probe faalde tijdens deploy.
Misschien hebben retries de dubbele factuurbug verergerd.
Goed citaat uit incidentreview: timeout is geen mislukking.
Onderzoek: Postgres partiële index voor alleen actieve rijen.
Gebruik wat het snelst is: Obsidian dagnotitie, Logseq journal, een tekstbestand, mobiele notities of een scratch buffer.
De regel is eenvoudig: snel vastleggen, later verwerken.
Stap 2: Verwerk notities naar permanente notities
Verwerking is waar de waarde verschijnt.
Maak van ruwe notities duidelijke, herbruikbare notities. Herschrijf in je eigen woorden. Geef elke notitie een titel die het idee vaststelt.
Slechte titel:
Retries
Betere titel:
Retries zijn veilig alleen als de operatie idempotent is
Slechte notitie:
Idempotentie nodig voor retries.
Betere notitie:
Retries kunnen een tijdelijk netwerkprobleem omzetten in dubbele neveneffecten.
Een retry is veilig alleen als de operatie meer dan één keer kan draaien en toch
hetzelfde bedrijfsresultaat kan produceren. Voor API's vereist dit vaak een
idempotentie-sleutel, een unieke beperking of een opgeslagen verzoekresultaat.
Stap 3: Voeg links toe terwijl de context vers is
Na het schrijven van de notitie, vraag:
- Wat verklaart dit?
- Waar hangt dit van af?
- Waar heb ik dit in code gezien?
- Wat is het tegenovergestelde standpunt?
- Welk systeem zou baat hebben bij dit?
Voeg alleen de links toe die toekomstige jij helpen denken.
Stap 4: Maak indexnotities of kaarten van inhoud
Zodra een cluster groeit, maak een indexnotitie.
Bijvoorbeeld:
# API-betrouwbaarheid
## Kernideeën
- [[Retries zijn veilig alleen als de operatie idempotent is]]
- [[Timeouts bewijzen geen mislukking]]
- [[Circuit breakers verminderen druk op faalende afhankelijkheden]]
- [[Rate limits beschermen gedeelde resources]]
## Implementatiepatronen
- [[Idempotentie-sleutels maken van retries veilige operaties]]
- [[Outbox-patroon scheidt persistentie van levering]]
- [[Dead letter queues bewaren mislukte berichten voor inspectie]]
## Systeemvoorbeelden
- [[Factureringsdienst betalingsretry-ontwerp]]
- [[Webhook-leveringsmislukking afhandeling]]
Dit geeft je navigatie zonder alles in mappen te dwingen.
Stap 5: Gebruik notities om output te produceren
Een Zettelkasten zou iets moeten produceren.
Voor ontwikkelaars kan output zijn:
- Architectuurbeslissingenrecords
- Ontwerpproductendocumenten
- Blogberichten
- Debugging-gidsen
- Onboardingdocs
- Pull request-uitleggen
- Interne praatjes
- Refactoringplannen
- Incidentreview-inzichten
Als je notities je werk nooit beïnvloeden, is het systeem te decoratief.
Aanbevolen notitietypen voor ontwikkelaars
Vluchtige notities
Tijdelijke notities voor snelle vastlegging.
Gebruik ze voor:
- Ideeën tijdens coderen
- Debuggingobservaties
- Vergaderfragmenten
- Vragen
- Bladwijzers om later te verwerken
Verwijder of converteer ze snel. Laat ze niet een moeras worden.
Literatuurnotities
Notities over externe bronnen.
Voor ontwikkelaars kan een bron zijn:
- Documentatie
- Blogartikel
- RFC
- Broncode
- Conferentiepraatje
- GitHub-issue
- Postmortem
- Hoofdstuk uit een boek
Houd bronnotities gescheiden van je eigen permanente notities. Een bronnotitie zegt: “Deze bron zei dit.” Een permanente notitie zegt: “Ik begrijp dit idee op deze manier.”
Permanente notities
Dit is de kern van de Zettelkasten.
Een permanente notitie zou moeten zijn:
- Atoom
- Geschreven in je eigen woorden
- Gekoppeld aan gerelateerde notities
- Nuttig zonder de oorspronkelijke bron nodig te hebben
- Stabil genoeg om later te herzien
Projectnotities
Projectnotities zijn toegestaan, maar verwar ze niet met permanente notities.
Een projectnotitie zou kunnen zijn:
Factureringsworker migreren naar queue v2
Het kan koppelen aan permanente notities zoals:
Backpressure voorkomt dat wachtrijconsumers instorten
Outbox-patroon scheidt persistentie van levering
Feature flags verminderen deployrisico
Projecten eindigen. Concepten blijven.
Toolvoorbeelden
Obsidian
Obsidian werkt goed voor ontwikkelaars-Zettelkasten omdat het lokale Markdown-bestanden gebruikt en interne links ondersteunt.
Een eenvoudige Obsidian-structuur:
notities/
vluchtige/
bronnen/
permanente/
kaarten/
projecten/
Voorbeeldnotitie:
# Timeouts bewijzen geen mislukking
Een timeout betekent dat de client stoppen met wachten. Het bewijst niet dat de server faalde.
De operatie kan geslaagd zijn, gefaald zijn, of nog steeds aan het draaien zijn.
Dit is belangrijk voor betalings-API's, job-wachtrijen en elk extern neveneffect.
Gerelateerd:
- [[Retries zijn veilig alleen als de operatie idempotent is]]
- [[Idempotentie-sleutels maken van retries veilige operaties]]
- [[Externe neveneffecten vereizen reconciliatie]]
Obsidian is een goede fit als je bestandeigenaarschap, platte tekst en editor-achtige workflows waarderen.
Logseq
Logseq is nuttig als je voorkeur hebt voor outlining, dagjournals en block-referenties.
Zijn block-model werkt goed voor het vastleggen van kleine gedachte-eenheden. Je kunt ruwe notities in het journal schrijven, en dan nuttige blocks promoten naar permanente notities.
Voorbeeld Logseq-stijl workflow:
- Timeout tijdens betalingsverzoek bewijst geen betalingsmislukking.
- Dit moet een permanente notitie worden over onbekende resultaten.
- Gerelateerd: [[Idempotentie]], [[Retries]], [[Betalings-API's]]
Logseq is een goede fit als je denken begint als outlines en je block-referenties leuk vindt. Voor een naastelkaars-vergelijking van beide tools qua workflow-stijl, sync-opties en plugin-ecosystemen, Obsidian vs Logseq zet de afwegingen duidelijk uiteen.
Platte Markdown en Git
Je hebt geen speciale app nodig.
Een Git-repository van Markdown-bestanden kan genoeg zijn:
kennis/
permanente/
bronnen/
kaarten/
Gebruik normale Markdown-links:
[Retries zijn veilig alleen als operaties idempotent zijn](../permanente/retries-veilig-alleen-met-idempotentie.md)
Deze aanpak is saai, duurzaam en ontwikkelaarsvriendelijk. Dat is een compliment.
Notities benoemen
Voorkeur voor titels die claims maken.
Zwakke titels:
Caching
Wachtrijen
OAuth
PostgreSQL-indexen
Sterke titels:
Cache-invalidatie is een coördinatieprobleem
Wachtrijen verbergen latentie maar verwijderen geen werk
OAuth-toegangstokens moeten kortlevend zijn
Partiële indexen zijn nuttig wanneer queries gericht zijn op een subset
Een claim-gebaseerde titel maakt de notitie makkelijker te begrijpen en makkelijker te koppelen.
Wat in een ontwikkelaars-Zettelkasten te plaatsen
Goede kandidaten:
- Architectuurprincipes
- Debugginglessen
- Productiewaarheidsinzichten
- API-ontwerpregels
- Databasepatronen
- Beveiligingsaannames
- Prestatie-afwegingen
- Framework-uitzonderingsgevallen
- Refactoring-heuristieken
- Teststrategieën
- Deploylessen
- Code-reviewpatronen
Slechte kandidaten:
- Ruwe vergadertranscripties
- Onverwerkte bladwijzers
- Enorme gekopieerde documentatiepagina’s
- Willekeurige snippets zonder uitleg
- Takenlijsten
- Geheimen
- Inloggegevens
- Alles wat alleen in officiële bedrijfsdocumentatie thuishoort
Een persoonlijke Zettelkasten kan werk refereren, maar het zou geen onveilige schaduwkopie van privésystemen moeten worden.
Veelgemaakte fouten
Fout 1: Te vroeg over-structureren
Ontwikkelaars houden van structuur. Dat is soms een probleem.
Besteed niet de eerste week met het ontwerpen van mappen, tags, sjablonen, naamconventies, dashboards en automatisering. Je weet nog niet welke structuur je notities nodig hebben.
Begin met een klein aantal notitietypen:
vluchtige
bronnen
permanente
kaarten
projecten
Laat complexiteit zijn plek verdienen.
Fout 2: Het behandelen als mappen
Een Zettelkasten is geen betere mapboom.
Als elke notitie precies bij één map hoort en geen betekenisvolle links heeft, heb je een archiefkast gebouwd. Dat kan nog steeds nuttig zijn, maar het is geen Zettelkasten.
De waarde komt voort uit verbindingen:
API-retries -> idempotentie -> databasebeperkingen -> betalingsveiligheid -> incidentpreventie
Die keten is nuttiger dan een map genaamd “Backend”.
Fout 3: Opslaan in plaats van denken
Kopiëren is geen leren.
Een opgeslagen paragraaf uit documentatie kan later helpen, maar een herschreven uitleg helpt nu. Het act van een idee in je eigen woorden te herformuleren is waar begrip verbetert.
Een goede regel:
Maak geen permanente notitie totdat je het idee kunt uitleggen zonder te kopiëren.
Fout 4: Alles koppelen
Te veel links is net zo slecht als te weinig.
Koppel woorden niet alleen omdat ze bestaan. Koppel ideeën omdat de relatie belangrijk is.
Een nuttige link zou toekomstige jij moeten helpen beantwoorden:
Waarom is dit verbonden?
Fout 5: Tags verwarren met structuur
Tags zijn nuttig voor status en brede groepering:
#todo
#bron
#beveiliging
#concept
Maar tags mogen het hele systeem niet dragen. Als je alleen op tags vertrouwt, verlies je de rijkere betekenis van directe links.
Een link zegt:
Dit idee relateert op een specifieke manier aan dat idee.
Een tag zegt meestal:
Dit hoort bij een brede bak.
Beide zijn nuttig. Ze zijn niet hetzelfde.
Fout 6: Nooit output produceren
Een Zettelkasten die nooit output produceert, wordt een privéarchief.
Output hoeft niet publiek schrijven te betekenen. Het kan een ontwerpproductendocument, een incidentreview, een betere pull request of een duidelijke uitleg aan een teamgenoot zijn.
Het systeem zou je denken makkelijker herbruikbaar moeten maken.
Een minimale sjabloon
Gebruik een kleine sjabloon. Weerstaan de drang om een formulier met vijftien velden te creëren.
# Titel als claim
## Idee
Verklaar het idee in je eigen woorden.
## Waarom het belangrijk is
Beschrijf de praktische impact.
## Voorbeeld
Toon een code-, systeem- of debuggingvoorbeeld.
## Afwegingen
Noem beperkingen, risico's of tegenargumenten.
## Links
- [[Gerelateerde notitie]]
- [[Nog een gerelateerde notitie]]
Voor veel notities is zelfs dit te veel. Een titel, een paragraaf en drie links kunnen genoeg zijn.
Voorbeeld: Van bug naar Zettelkasten-notities
Stel je voor dat je een bug oploste waarbij gebruikers twee keer werden in rekening gebracht na een timeout.
Een zwakke notitie zou zijn:
Betalingsbug - retries veroorzaakten dubbele belasting.
Een sterkere set notities zou kunnen zijn:
Timeouts bewijzen geen mislukking
Retries zijn veilig alleen als de operatie idempotent is
Idempotentie-sleutels maken van retries veilige operaties
Betalings-API's moeten onbekende resultaten modelleren
Databasebeperkingen zijn concurrentiebeheersing
Nu is de bug herbruikbare engineeringkennis geworden.
Later kunnen die notities ondersteunen:
- Een postmortem
- Een ontwerpproductendocument voor betalingsretries
- Een blogpost over idempotentie
- Een checklist voor externe API-integraties
- Een code-reviewcommentaar
- Een veiligere implementatie
Dat is de praktische waarde van Zettelkasten.
Een wekelijkse onderhoudsroutine
Je hebt geen ingewikkeld reviewproces nodig.
Een keer per week:
- Verwerk ruwe notities.
- Verwijder notities die niet meer belangrijk zijn.
- Converteer nuttige ideeën naar permanente notities.
- Voeg ontbrekende links toe.
- Promoot clusters naar kaartennotities.
- Kies één notitie en zet het om in output.
Houd het lichtgewicht. Het systeem zou ontwikkeling moeten ondersteunen, niet concurreren met.
Praktische regels
Gebruik deze regels om het systeem gezond te houden:
- Één idee per notitie.
- Schrijf titels als claims.
- Voorkeur voor links boven mappen.
- Houd bronnotities gescheiden van je eigen ideeën.
- Verbind notities met echte code en echte systemen.
- Maak kaartennotities alleen wanneer een cluster bestaat.
- Verwijder notities met lage waarde.
- Automatiseer niet voordat je je workflow begrijpt.
- Gebruik het systeem om iets te produceren.
Wanneer Zettelkasten niet de moeite waard is
Zettelkasten is niet het antwoord op elk probleem.
Het kan overkill zijn als:
- Je alleen een takenbeheer nodig hebt.
- Je zelden technische ideeën herbezoekt.
- Je niet schrijft, onderwijst, ontwerpt of documenteert.
- Je notities voornamelijk kortlevende projectdetails zijn.
- Je het gebruikt om het daadwerkelijke werk te vermijden.
Het is het meest nuttig als je werk afhankelijk is van oplopend begrip.
Dat omvat senior engineering, architectuur, technisch leiderschap, debuggen van complexe systemen, schrijven, adviseren, onderzoek en diep leren over vele jaren.
Slotgedachten
Voor ontwikkelaars gaat Zettelkasten niet over het verzamelen van notities. Het gaat over het bouwen van een denkomgeving.
De methode werkt het beste wanneer het praktisch blijft: atoomnotities, betekenisvolle links, echte voorbeelden en regelmatige output. Verbind concepten met code. Verbind code met systemen. Verbind systemen met beslissingen.
Probeer niet het perfecte tweede brein te bouwen. Bouw een nuttig.
Een goede ontwikkelaars-Zettelkasten zou je moeten helpen betere vragen te beantwoorden:
Waar heb ik dit probleem eerder gezien?
Welk concept verklaart deze bug?
Welke afweging maken we?
Welk patroon is hier van toepassing?
Wat moet ik opschrijven zodat ik dit niet opnieuw hoef te leren?
Dat is genoeg.