Honestly, the biggest shift in my debugging skills came when I stopped thinking of debugging as “logs + tools” and started treating it as “checking assumptions.”
Most juniors say:
“I use Hardhat logs, Foundry tests, Tenderly traces…”
But interviewers don’t care about the tool list. They care about how you think.
Here’s how I explain my process in interviews, and it’s worked well so far:
-
Reproduce the issue as close to real conditions as possible
I start on a local Hardhat/Anvil fork so I can see the exact state that triggered the bug. Half the time, the bug is just wrong assumptions about state, ordering, or msg.sender context.
-
Look at state diffs before reading any code
Tenderly and Foundry both show what changed and what didn’t.
This step alone catches things like:
unexpected storage writes
incorrect fee math
silent overflows
CEI violations
wrong msg.value or sender context
Reading diffs saves a ton of time.
- Trace the execution path
Instead of blindly console.logging everything, I check:
Which branch actually executed
Where the revert came from
What values flowed into the failing condition
Whether the pre-conditions I expected were ever true
This tells you why the transaction took the path it did.
- Verify assumptions one by one
This part interviewers like the most.
I literally list assumptions and test them:
“I assumed this function wasn’t callable before X event.”
“I assumed this mapping always contains Y.”
“I assumed the invariant A > B holds after swaps.”
When one assumption fails, you’ve found the bug.
- After fixing, I add protection around the cause, not the symptom
For example:
If fuzzing revealed an edge case, I add property tests.
If a branch was vulnerable under certain calldata, I add input guards.
If state drift caused the issue, I add invariants.
This shows proactive debugging, not reactive patching.
If you say something like:
“I debug by validating assumptions, not by chasing errors.”
You’ll sound 10x more senior.
Tools matter, but they’re secondary.
The real skill is putting structure to the chaos.