Schrödinbug: wat is het, paradox van bestaan en manifestatie

Auteur: IT Sectr Gepubliceerd: 2026-07-29 Leestijd: 8 min

Schrödinbug — is een uniek type softwarefout die in de code bestaat, maar nooit tot uiting komt totdat de ontwikkelaar dit stuk code leest en zich realiseert dat het een bug bevat. De term is een woordspeling met „de kat van Schrödinger”: de bug is er tegelijkertijd wel en niet, zolang niemand ernaar kijkt. Volgens Wikipedia (2026) wordt deze term voornamelijk gebruikt in professioneel jargon en beschrijft het eerder een psychologisch dan een technisch fenomeen in het werk van de ontwikkelaar.

Belangrijkste punten

  • Schrödinbug — een bug die niet tot uiting komt totdat de ontwikkelaar de code leest en de fout realiseert.
  • Naam komt van het gedachte-experiment „de kat van Schrödinger” — de bug bestaat en bestaat tegelijkertijd niet tot observatie.
  • Psychologisch mechanisme: het besef van de fout zorgt ervoor dat de ontwikkelaar deze in het gedrag van het programma ziet.
  • Verschil met Bohrbug: Schrödinbug is onvoorspelbaar tot het lezen van de code, terwijl Bohrbug zich stabiel manifesteert.
  • Preventie — regelmatige code-review en pair programming, die de opsporing van verborgen fouten versnellen.

Wat is Schrödinbug?

Schrödinbug — een term uit het professionele jargon van ontwikkelaars, die een softwarefout aanduidt die jarenlang in de code bestaat, maar nooit tot een storing leidt, totdat iemand dit stuk code leest en begrijpt dat hier een fout zit. Daarna begint de bug zich te manifesteren.

De naam verwijst duidelijk naar het gedachte-experiment van Erwin Schrödinger met de kat, die tegelijkertijd leeft en dood is, totdat de waarnemer de doos opent. In het geval van de bug — hij „werkt” en „is defect” tegelijkertijd, totdat de ontwikkelaar naar de code kijkt.

Het is belangrijk te begrijpen dat Schrödinbug — geen technische eigenschap van programma-uitvoering is, maar een cognitief fenomeen. De code bevat objectief een fout, maar de omstandigheden of kenmerken van de invoergegevens hebben nooit het problematische uitvoeringspad geactiveerd totdat de ontwikkelaar de code heeft geanalyseerd.

Technische interpretatie

Vanuit technisch oogpunt is Schrödinbug een gewoon logisch defect dat nooit in de uitvoeringsstroom van het programma terecht is gekomen, omdat alle aanroepen via het „gelukkige” pad verliepen. Zodra de ontwikkelaar de code leest, verandert hij zijn gedrag of testmodus — en de bug manifesteert zich.

Oorsprong van de naam en verband met natuurkunde

De naam Schrödinbug — een samentrekking van de achternaam van de natuurkundige Erwin Schrödinger en het woord „bug” (fout). Schrödinger stelde in 1935 een gedachte-experiment voor dat het probleem van de Kopenhaagse interpretatie van de kwantummechanica illustreert.

Experiment met de kat: in een gesloten doos bevinden zich een radioactieve stof, een Geigerteller en een flesje met gif. Als de stof vervalt — activeert de teller het mechanisme dat het flesje breekt, en de kat sterft. Zolang de doos gesloten is, is de kat tegelijkertijd levend en dood (superpositie van toestanden).

Analogie met programmeren: zolang niemand het stuk code met de fout heeft gelezen, werkt het programma correct — de bug is tegelijkertijd „levend” en „dood”. Zodra de ontwikkelaar het bestand opent en de code leest, stort de superpositie in en begint de bug zich te manifesteren (het correcte functioneren van het programma „sterft”).

Psychologisch mechanisme van Schrödinbug

Schrödinbug — is in de eerste plaats een psychologisch fenomeen, geen technische eigenschap van code-uitvoering. Laten we het mechanisme van het ontstaan ervan bekijken vanuit het oogpunt van de cognitieve psychologie van de programmeur.

Het effect van bewustwording

Wanneer de ontwikkelaar code schrijft, verkeert hij in een staat van „flow” en kan hij een logische fout over het hoofd zien. De code doorloopt review, tests, komt in productie en werkt maandenlang. Vervolgens keert de ontwikkelaar terug naar deze code voor refactoring, leest deze aandachtig en ziet plotseling: „Maar dit is een voor de hand liggende fout!”.

Zelfvervullende voorspelling

Na het besef van de fout begint de ontwikkelaar doelbewust te zoeken naar scenario's waarin de bug zich zal manifesteren. Hij verandert testgegevens, start de debugger, doorloopt codetakken — en op een gegeven moment veroorzaakt hij daadwerkelijk een storing. De bug wordt „ontdekt” juist omdat de ontwikkelaar nu weet waar hij moet zoeken.

De rol van hypothesebevestiging

Cognitieve vertekening — confirmation bias — speelt een sleutelrol. De ontwikkelaar, die een fout in de code ziet, begint onbewust te zoeken naar de manifestatie ervan in het gedrag van het programma. Elke ongebruikelijke log of storing wordt onmiddellijk geïnterpreteerd als een gevolg van de gevonden fout, zelfs als de werkelijke oorzaak anders kan zijn.

Voorbeelden van Schrödinbug uit de praktijk

Laten we een aantal realistische scenario's uit de ontwikkelingspraktijk bekijken die de klassieke Schrödinbug beschrijven.

Verkeerde feature-vlag

In een Android-app gebruikte de ontwikkelaar standaard de vlag `isEnabled = true`, hoewel de nieuwe functie uitgeschakeld moest zijn. De code met de verkeerde vlag werkte drie maanden in productie — niemand klaagde, omdat de functie inderdaad ingeschakeld moest zijn. Toen de ontwikkelaar de code las ter voorbereiding van de volgende release, begreep hij de fout, corrigeerde de vlag naar `false` — en kreeg onmiddellijk een bugmelding dat de functie verdwenen was.

Defecte maar ongebruikte methode

Een methode van de bibliotheek bevatte een duidelijke deling-door-nul fout, maar werd nooit aangeroepen in realistische scenario's. De bibliotheek werd in vijf projecten gebruikt en niemand merkte het probleem. Tijdens code-review wees een nieuwe ontwikkelaar op de fout — en na correctie bleek dat een van de projecten afhankelijk was van dit „onjuiste” gedrag.

Verschil tussen Schrödinbug en andere bugs

Schrödinbug neemt een unieke plaats in in de classificatie van softwarefouten. Laten we het vergelijken met andere typen.

Type bugManifestatie vóór het lezen van codeManifestatie na het lezen van codeAard
SchrödinbugNooitBegint zich te manifesterenPsychologisch
BohrbugAltijd bij dezelfde gegevensAltijd bij dezelfde gegevensDeterministisch
MandelbugSoms, chaotischSoms, chaotischSysteem
HeisenbugStabielVerdwijnt in debuggerTechnisch

Schrödinbug — het enige type bug waarvan de manifestatie direct afhangt van het feit dat de ontwikkelaar de fout realiseert. Hierin ligt zijn paradoxale aard.

Hoe Schrödinbug in een project te voorkomen

Hoewel Schrödinbug meer een psychologisch fenomeen is, zijn er praktische methoden om de invloed ervan op het project te minimaliseren.

Regelmatige code-review

Hoe eerder de fout wordt ontdekt, hoe kleiner de kans dat deze in de categorie Schrödinbug valt. Pair programming en verplichte code-review van elke regel code verminderen het aantal verborgen defecten tot een minimum.

Automatische controles

Statische code-analyzers (ESLint, detekt, ktlint, SpotBugs) detecteren potentiële fouten in de compilatiefase, zonder te wachten tot een mens ze opmerkt. Linters kunnen „slapende” bugs in dode codetakken opsporen.

Testen van dode code

Het testen van alle codetakken, inclusief zelden gebruikte, — is de enige manier om te garanderen dat Schrödinbug niet jarenlang op zijn kans wacht. Hulpmiddelen zoals JaCoCo voor Java helpen bij het volgen van ongedekte vertakkingen.

groovy
// Voorbeeld van potentiële Schrödinbug — bug in zelden aangeroepen tak
def processOrder(Order order) {
    if (order.isRush()) {
        // Deze tak is nooit in productie getest
        sendRushNotification(order)  // hier kan een bug zitten
    }
}

In dit voorbeeld kan Schrödinbug jarenlang bestaan als spoedbestellingen (rush) nooit in het systeem zijn ingevoerd. Zodra de eerste dergelijke bestelling verschijnt — zal de bug zich manifesteren, maar tot dat moment denken ontwikkelaars dat de code correct is.

Veelgestelde vragen

Is Schrödinbug een echt type bug of een grap?

Schrödinbug — is een echt fenomeen uit het professionele jargon, maar het beschrijft eerder een cognitief en psychologisch fenomeen dan een technische categorie van fouten. De term wordt door ontwikkelaars gebruikt om de situatie te beschrijven waarin het besef van een fout in de code leidt tot de eerste manifestatie ervan.

Waarom wordt Schrödinbug een paradoxale bug genoemd?

De paradox is dat de bug objectief bestaat, maar zich subjectief niet manifesteert tot het moment van ontdekking. Vóór het lezen van de code werkt het programma correct, hoewel het een fout bevat. Na het lezen — „materialiseert” de bug zich en begint storingen te veroorzaken.

Hoe hangt Schrödinbug samen met de kat van Schrödinger?

De analogie is direct: net zoals de kat van Schrödinger tegelijkertijd levend en dood is totdat de doos wordt geopend, is Schrödinbug tegelijkertijd „werkt” en „is defect” totdat de ontwikkelaar het bestand met de code opent en leest. Waarneming vernietigt de superpositie.

Kan Schrödinbug tot ernstige gevolgen leiden?

Ja, Schrödinbug kan gevaarlijk zijn als de verborgen fout zich in een kritiek deel van de code bevindt dat zelden wordt uitgevoerd — bijvoorbeeld bij de verwerking van betalingen onder specifieke omstandigheden of in de herstellogica na een storing. Het ontdekken van zo'n fout op het meest ongelegen moment kan tot ernstige problemen leiden.

Hoe test je code op de aanwezigheid van Schrödinbug?

De enige betrouwbare methode is het garanderen van 100% code coverage met tests, inclusief alle vertakkingen en randvoorwaarden. Als elke regel code in ten minste één test wordt uitgevoerd, wordt Schrödinbug in de testfase ontdekt, niet na het lezen van de code in productie.

Samenvatting

  • Schrödinbug — een softwarefout die niet tot uiting komt totdat de ontwikkelaar de code leest en het bestaan ervan realiseert.
  • Naam komt van de paradox „de kat van Schrödinger” — de bug bevindt zich in superpositie van toestanden tot observatie.
  • Psychologisch mechanisme: het besef van de fout verandert de testbenadering, en de ontwikkelaar zoekt doelbewust naar het manifestatiescenario.
  • Belangrijkste oorzaak — zelden uitgevoerde codetakken die niet door tests worden gedekt en niet in realistische scenario's zijn gecontroleerd.
  • Verschil met Bohrbug: Schrödinbug manifesteert zich niet vóór het lezen van de code, Bohrbug manifesteert zich altijd bij dezelfde invoergegevens.
  • Preventie — 100% testdekking, statische analyzers en verplichte code-review.
  • Aanbeveling: vertrouw er niet op dat de code „werkt” — als u een potentiële fout ziet, schrijf dan een test die deze reproduceert.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook