AI is making the debugger obsolete.
Originally published on LinkedIn
๐๐ ๐ถ๐ ๐บ๐ฎ๐ธ๐ถ๐ป๐ด ๐๐ต๐ฒ ๐ฑ๐ฒ๐ฏ๐๐ด๐ด๐ฒ๐ฟ ๐ผ๐ฏ๐๐ผ๐น๐ฒ๐๐ฒ.
Iโm not saying debugging is obsolete. But the way we have always done it is rarely the right way now.
I build heavily with AI and realised I rarely now use a debugger anymore.
I spent a huge part of my engineering carear debugging: sustained engineering, operations, production issues, ugly failures, edge cases.
So this isnโt coming from someone who doesnโt value debugging. The opposite.
Using a debugger was never the hard part of debugging.
One thing Iโve had to hammer into engineers over the years is:
Donโt just sit there debugging. Use your brain first. Before you step through anything, narrow the problem.
๐ What do we know?
๐ What changed?
๐ What can we eliminate?
๐ What are the two or three most plausible explanations?
Donโt debug a hundred possibilities one by one.
Reason about the system first. Eliminate most of them. Then investigate the few worth your time.
You might be wrong and have to come back to one. Fine.
That thinking is debugging.
The debugger is just one tool you might use once youโve decided where to look.
And thatโs why AI has changed this so much for me.
When I get a bug now, I rarely say:
โAI, fix this bug.โ
Wellโฆ occasionally if itโs trivial ๐
Normally I think about the investigation strategy first:
๐งญ Narrow the logs to the affected period
๐๏ธ Check the database state
๐ Look at recent code changes
๐ Add targeted diagnostics
๐งช Create a red test that reproduces the failure โ๏ธ Compare expected vs actual behaviour
Then I give that strategy to the AI.
Why would I manually do the mechanical work myself?
The AI can search logs, inspect data, trace code paths, add diagnostics, reproduce the failure, and bring the evidence back to me.
Then I decide what makes sense.
Iโm not out of the loop. If anything, Iโm more in the loop.
My time goes on the part that requires engineering judgement:
๐ง Where should we look?
๐ง What evidence matters?
๐ง What hypotheses are plausible?
๐ง Which fix is actually correct?
None of this happens by magic.
I have AI skills around logs, production failures, database state, diagnostics, and testing hypotheses.
More importantly, Iโm building software to be observable and debuggable from day one.
If youโve generated code you donโt understand and then have to open a debugger to work out what it did, AI probably hasnโt improved the engineering process much.
But if you understand the system, design it for observability, and encode years of debugging experience into how your AI investigates problems?
Why would you do all the stepping?
When people say:
โAI can write the code, but youโll still have to debug it.โ
Iโm curious what they actually mean.
๐๐ผ๐ ๐ฎ๐ฟ๐ฒ ๐๐ผ๐ ๐ฑ๐ฒ๐ฏ๐๐ด๐ด๐ถ๐ป๐ด ๐๐-๐ฏ๐๐ถ๐น๐ ๐๐ผ๐ณ๐๐๐ฎ๐ฟ๐ฒ?
๐ Still manually stepping through generated code?
Or designing systems to be observable, giving AI a disciplined debugging strategy, and letting it do the investigative legwork?