Skip to main content

Debugging Techniques That Actually Work (Rubber Duck Not Included)

3 min read

Let’s be honest: we all start with console.log(). But when that doesn’t work (or when you have 47 console logs and forgot which is which), it’s time to level up your debugging game.

The Scientific Method (Yes, Really)

Debugging is just the scientific method in disguise:

  1. Observe - What’s actually happening?
  2. Hypothesize - What do you think is causing it?
  3. Test - Change one thing and check the result
  4. Repeat - Until the bug surrenders

Technique 1: Binary Search Your Code

Comment out half your code. Does the bug still happen?

  • If yes: It’s in the other half
  • If no: It’s in the commented half

Keep halving until you find the culprit. Works every time.

Technique 2: The Debugger (Use It!)

I know, I know. Setting up the debugger feels like work. But trust me:

// Instead of this...
console.log('user:', user);
console.log('user.profile:', user.profile);
console.log('user.profile.email:', user.profile?.email);

// Do this...
debugger; // One line. Inspect everything.

VS Code tip: Press F5, click in the margin to set breakpoints, and thank me later.

Technique 3: Trace Backwards

Start from where the error appears and work backwards:

  • What function called this?
  • Where did this data come from?
  • When was this variable last modified?

Stack traces are your friend, even if they look scary.

Technique 4: Reproduce It Consistently

Random bugs are the worst. Before fixing, make it happen on command:

  • What exact steps trigger it?
  • Does it happen every time?
  • Is it environment-specific?

A reproducible bug is 50% solved.

Technique 5: Explain It to Someone (or Something)

Rubber duck debugging works because:

  • You slow down and articulate the problem
  • You catch assumptions
  • You notice what you don’t know

I have a rubber duck named Debug Dan. He’s a great listener and never judges my code.

Technique 6: Take a Break

Seriously. Sometimes the solution appears when you:

  • Go for a walk
  • Make coffee
  • Think about anything else

Your brain keeps working in the background. It’s like defragmenting your mental hard drive.

The Nuclear Option: Delete and Rewrite

When nothing works:

  1. Understand what the code should do
  2. Delete it
  3. Write it fresh

Often faster than debugging spaghetti code from 3am last Tuesday.

Tools I Actually Use

  • Chrome DevTools - Network tab is criminally underused
  • React DevTools - For when props are acting sus
  • Postman - Test APIs independently
  • Git bisect - Find which commit broke everything

The Golden Rule

Change one thing at a time. I know you want to fix all the things, but then when it works you won’t know why.

Conclusion

Good debugging is like being a detective. Gather evidence, test theories, and eventually you’ll catch the bug. And when you do, write a test so it can’t escape again.

Now if you’ll excuse me, I have a null reference error to track down. Wish me luck.

Happy debugging! 🐛🔨