Skip to content
Skip to the lesson
← RoadmapDay 7 of 90Foundationsstarts with 5 min · 2h 15m in all

How to debug anything without guessing

By the end of today you can take a bug you cannot explain and narrow it to a single line by halving the search space, rather than changing things until the symptom disappears.

YesterdayOn Day 6 you learned to read a trace when Python tells you what broke. Today handles the harder case, where nothing crashes and the answer is simply wrong.

TomorrowTomorrow you leave the editor and learn the terminal, where most debugging actually happens.

01

Why this matters

Debugging is the skill you will use most and be taught least. Everything from a failed test on Day 47 to a wrong retrieval on Day 76 is the same method applied to a bigger system.

Reproduce first
A bug you cannot trigger on demand cannot be fixed, only disturbed.
Bisecting
Halving the search space rather than reading top to bottom.
Hypothesis debugging
Predict, check, narrow. Every attempt produces evidence instead of noise.
Using a debugger
Breakpoints, stepping and inspecting, for when prints stop scaling.
02

See it first

5 min

One small thing, worked through here before you go anywhere. Guess the answer before you open it.

An invoice total is wrong. Not crashing, not erroring, just wrong: it says 118.80 and it should say 108.00. The number passes through six functions on its way to the page.

read_order()
  -> apply_discount()
  -> add_shipping()
  -> apply_tax()
  -> round_money()
  -> render()

You can print one value, one time, and then you have to guess. Where do you print?

Decide before you open it. Being wrong here is the point.

Show me what happens

In the middle, after add_shipping. Not at the start, and not at the end. Checking the middle throws away half the suspects whichever answer comes back. If the number is already wrong there, the bug is in the first three functions. If it is still right, the bug is in the last three. One print, six candidates down to three. Do it again and it is three down to one or two. Six functions take about three prints to corner, and twenty functions take about five. Printing at the start instead tells you the input was fine, which you already believed, and leaves all six suspects standing. That is the difference between halving the problem and merely poking it.

Where you meet this at work

This is the whole method, and it does not care how big the system is. git bisect finds the commit that broke a test the same way, across a thousand commits, in about ten steps. Commenting things out until the symptom moves is the alternative, and it is how an hour turns into an evening.

03

Learn it

70 min

Copy this into Claude or ChatGPT. It quizzes you before it explains anything, which is deliberate. The resources under it are how you check what it told you.

Today's Master Prompt

Free · sign in

A prompt written for this day alone: your level, the exact scope, what to leave out, and an instruction to quiz you before it explains anything. Paste it into Claude or ChatGPT and it teaches you today's material.

Sign in to continueNo card, now or later.

Check it against something that is not a model

An assistant can be fluent and wrong, and on a topic you met today you will not catch it. These cover the same ground and were made by people who do this for a living, so they are what you hold the explanation up against. They are other people's work and we only link to them, so judge them for yourself.

3 hand-picked resources

Free · sign in

Videos, official docs and articles covering the same ground, each opened and annotated by hand. They are what you check the assistant against on a day you cannot yet catch it being wrong.

Sign in to continueNo card, now or later.
04

Build it

40 min

Take any script you have written this week and deliberately break it in a way that does not raise an exception, for example an off-by-one in a slice or a wrong comparison operator. Leave it overnight if you can. Then find it by bisection, writing down each hypothesis before you test it.

05

Recall it

20 min

Answer out loud, reveal, then mark honestly whether you had it. That score is the only thing on this page you do not get to choose.

4 recall questions

Free · sign in

Questions you answer from memory, then grade yourself against the real answer. The score is carried into the mastery rating below it, so an honest miss cannot quietly become a tick.

Sign in to continueNo card, now or later.
06

Rate it

Finishing a day and understanding it are two different things, and this page counts them separately.

Mastery tracking

Free · sign in

Rate yourself against five named criteria per concept. Completion and mastery are tracked separately, and anything you rate shakily comes back automatically on a spaced schedule.

Sign in to continueNo card, now or later.
07

Recap

  • 01A bug you cannot reproduce cannot be fixed, only disturbed
  • 02Predict before you check, so every attempt produces evidence
  • 03Halve the search space instead of reading top to bottom
  • 04Silent wrong answers need the same method, not more staring

Your progress

Free · sign in

Mark days complete, pick up where you left off across devices, and watch completion and mastery diverge. Free, and the account exists only so ninety days of work cannot vanish with a cleared browser.

Sign in to continueNo card, now or later.