Debugging Yourself Doesn't Work

Every engineer I've worked with has eventually tried to debug themselves.

The methodology is familiar. Something isn't working. Reproduce the bug. Isolate the conditions. Find the root cause. Apply the fix. If the behavior continues, you haven't found the real bug yet.

It feels completely reasonable.

It just happens to be the wrong methodology.

Why Engineers Bring Debugging to Themselves

This isn't a failure of intelligence. It's a failure of category.

When you develop a highly reliable methodology for solving one class of problem, the natural instinct is to extend it. Debugging works on software. Debugging is a general-purpose tool for fixing things that aren't working. You are a thing that isn't working in this specific way. Therefore: debug.

The methodology feels appropriate. The rigor feels appropriate. The commitment to finding root cause feels appropriate. What's missing is an examination of whether the system being debugged resembles software closely enough for the methodology to transfer.

It doesn't. Not in the ways that matter.

What Debugging Assumes That Isn't True

Debugging works because code behaves consistently enough to isolate variables. Your nervous system doesn't.

Yesterday's trigger isn't today's trigger. Yesterday's response isn't today's response. You're trying to reproduce a bug in a system whose state changes continuously. The conditions that produce a response cannot be isolated cleanly enough to be controlled.

Debugging assumes you can isolate variables. In a codebase, you can comment out a function, change one parameter, run the test again. You can hold everything constant except the thing you're investigating. You cannot do this with yourself. You are always running all your processes simultaneously. The act of examining one pattern is happening inside the same nervous system that generated the pattern.

Debugging assumes an external observer. This is the most important one.

When you debug code, you are outside the system. You can pause execution, inspect state, read memory, step through line by line. The system is not watching you watch it.

You are the system you're trying to debug. You cannot stand outside yourself to get a clean read on what's happening inside. Every attempt to observe the pattern is itself an act of the pattern-generating system, subject to the same biases and habitual responses as everything else.

Imagine trying to debug software while every diagnostic tool you use is itself being modified by the bug you're investigating. That's the actual problem.

The Problem With Root Cause Analysis

Engineers are trained to find root cause. Not the symptoms, not the surface behavior, but the underlying reason the system is failing. Fix the root cause and the symptoms resolve.

This maps onto insight-based approaches in a way that feels intuitive: find where the pattern came from, understand why it developed, and the pattern will change. Identify the root cause. Apply the fix.

The problem is that psychological patterns aren't bugs. They are not errors in the code. They are features that were written deliberately, by a system trying to survive something. The pattern that looks like dysfunction was the correct response to a specific set of conditions. It is still running not because the root cause was never found, but because the system running it doesn't update on the basis of root cause analysis.

You can find the origin of a pattern with complete accuracy and watch the pattern continue unchanged. Not because the analysis was wrong. Because finding the root cause was never the mechanism of change. The system that needs updating doesn't read root cause reports.

The System You Are Working With

A nervous system is not a codebase. It doesn't have a version history you can roll back. It doesn't have a test suite. Changes don't propagate cleanly through a dependency tree. And it cannot be taken offline for maintenance.

It runs constantly. It is always in production. The changes that take hold don't happen through identifying errors. They happen through repeated experience: through what the system encounters, over and over, that contradicts what it was built expecting.

The engineers and tech professionals I work with are often relieved by this once the initial frustration settles. Not because it makes the work easier, but because it reframes the problem in a way that goes somewhere. The question isn't what's broken and how do I fix it. The question is what experiences would this system need to have, repeatedly, before it would update?

That's a different kind of problem. It doesn't have a clean solution. It has a process. But it's the right problem, which is more than can be said for debugging.

What I'd Want Someone to Know

If you have spent significant time and effort debugging yourself, examining patterns, tracing origins, mapping the system, that effort is not wasted. You know the terrain. That's real.

What it doesn't give you is the change itself. Knowing the terrain is not moving through it.

At some point the debugging has to stop being the primary activity. Not because you've fixed what you found, but because the system you're working on doesn't update through fixing. It updates through something else.

The bug report is accurate. The bug report is not the patch.

Your analysis may be flawless. Analysis isn't execution.


If you've been debugging yourself for a while and the behavior hasn't changed, that's not a diagnostic failure. It's a signal that the methodology needs to change.


About the Author

Christan Mercurio, AMFT
Registered Associate Marriage and Family Therapist
20 Years in Tech | 20 Years in Recovery
Registration No. AMFT 156566

Supervised by: Harry Motro, Psy.D., MFT, P.C., CA License: MFC 53452 and Jennifer Lynn Weise, LMFT #90891

Contact:
📧 cm@christanmercurio.com
📞 (669) 240-0319

Serving San Jose, Campbell, Los Gatos, Willow Glen, Almaden Valley, Saratoga, Silicon Valley, and Santa Clara County

Previous
Previous

They're Sober. You're Still Waiting for the Other Shoe.

Next
Next

You're Not Growing Apart. You Were Always Different.