Practical debugging, step by step

Small bugs, examined properly

Each guide gives a direct answer, a minimal reproduction, a debugging method and a challenge that preserves the guide context.

A missing await is a control-flow bugFind and fix JavaScript code that uses a Promise before it settles.Mutable defaults keep state between Python callsDiagnose list and dict defaults that unexpectedly retain earlier values.Debug SQL JOINs by predicting cardinality firstUse row-count expectations to find duplicate or missing JOIN predicates.Why did my debugging-practice rating change by 30 points?Follow one rating change and learn what difficulty, time and the Elo-inspired formula do and do not mean.Why one solved challenge changes XP, difficulty and streak separatelyFollow one solution and see why XP, skill level, next difficulty, streak and achievements are different signals.