🧠 1. The Pro Mindset: "Assume Nothing"
Before touching the keyboard, a pro debugger changes their mental state.
Don't Believe Your Own Code: Just because you intended for a function to return a string doesn't mean it is. Verify everything.
The "Spock" Method: Look at what the code is actually doing, not what you think it should be doing.
Embrace the Bug: Every bug is a free lesson on how your system works. Don't get frustrated; get curious.
🛠️ 2. The Tactical Workflow
Professional debugging follows a scientific loop: Observe → Hypothesize → Experiment → Repeat.
Step 1: Consistent Reproduction
If you can’t make the bug happen on demand, you can’t fix it.
Isolate the environment: Does it only happen in Safari? Only when the user is logged out?
Minimize the case: Strip away every unnecessary line of code until you have the smallest possible snippet that still breaks.
Step 2: "Divide and Conquer" (Binary Search)
If you have 1,000 lines of code and aren't sure where the error is, don't read them all.
Comment out the bottom half. Still broken? The bug is in the top half.
Keep halving the search area. You will find the culprit line in about 10 steps ($log_2(1000) \approx 10$).
Step 3: Leverage the Right Tools
The Debugger Over Console Logs: While
console.log()is great for quick checks, a real Debugger (like Chrome DevTools or VS Code Debugger) lets you pause time (Breakpoints), look inside variables, and step through execution line-by-line.Git Bisect: If the code worked yesterday but is broken today, use
git bisectto automatically find the exact "bad commit" that introduced the bug.
🦆 3. Famous Pro Techniques
Rubber Ducking: Explain your code line-by-line to an inanimate object (or a colleague). In the process of simplifying the logic for the "duck," you will often spot the flaw yourself.
The "Paper and Pencil" Trace: For complex logic, step away from the screen. Manually write out the values of variables at each step of a loop on paper.
📝 4. Future-Proofing (Pro-Active Debugging)
A pro doesn't just fix the bug; they make sure it never comes back.
The Regression Test: Once fixed, write a unit test that specifically tries to trigger that bug. If it passes, the bug is officially dead.
Better Logging: Don't just log "Error." Log the state of the system when the error happened:
Error: User ID 402 failed to fetch 'profile' with status 500.
No comments:
Post a Comment