How Claude Code Changed the Way I Debug
I used to spend hours reading stack traces. Now I pair-program with an AI that reads them faster than I do — and explains them like a senior dev would.
It started with a stupid bug. A null pointer in a Kotlin service that took me three hours to track down — not because it was hard, but because I kept looking in the wrong place.
That night I opened Claude Code, pasted the stack trace, and it pointed straight at the offending line in under ten seconds. More importantly, it explained why it was happening: a nullable field I'd marked as non-null in the data class, propagated through three layers of mapping.
The shift in how I work
I haven't stopped debugging myself. But I've started using AI the same way I'd use a rubber duck — except this rubber duck pushes back, asks clarifying questions, and occasionally suggests a better architecture.
The pattern I've settled into:
1. Write the feature first, alone. No AI in the first pass.
2. When stuck, describe the problem out loud (to Claude Code) and let it reframe it.
3. Use it to review my own PRs before I even open them.
// Before: I'd have missed this
const result = data.items?.find(i => i.id === targetId)
// Claude flagged: what if items is an empty array vs undefined?
const result = (data.items ?? []).find(i => i.id === targetId)What it doesn't replace
Understanding the system. Architecture decisions. Knowing which abstraction to reach for. The AI is a great pair, but it doesn't carry the mental model of your whole project the way you do.
The trick is learning when to reach for it and when to sit with the problem yourself. That's still a human skill.