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?