Debugging Techniques That Actually Work (Rubber Duck Not Included)
Practical debugging strategies that go beyond console.log. Learn systematic approaches to finding and fixing bugs efficiently.
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:
- Observe - What’s actually happening?
- Hypothesize - What do you think is causing it?
- Test - Change one thing and check the result
- 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:
- Understand what the code should do
- Delete it
- 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! 🐛🔨
Keep reading
Why I'm Using Moondream Instead of Cloud Vision APIs
Moondream vs GPT Vision vs Gemini: local vision AI that runs on your laptop. Free image captioning, OCR, object detection, and visual Q&A without API costs. Includes Python examples and GitHub repo.
Computer Vision
Maybe LLM CLI Is All You Need.
Boost developer productivity with command-line AI tools. Learn Simon Willison's LLM CLI, build custom translation tools, and automate git commits. Practical examples for terminal-based AI workflows.
Developer Tools
LLM Data Extraction: A Complete Guide to Document Processing Libraries and Tools
Master document processing for LLMs with this comprehensive guide covering open-source libraries, premium APIs, and cloud services. Compare PyMuPDF, Unstructured.io, Docling, and LlamaParse for your RAG systems.
AI Engineering