On Stepping Back

The other day I was playing around with Claude Code, experimenting with porting some C code to Rust - not for any particular reason, just because I was curious how well it could do. As these things happen, I got more and more invested in the process, instead of just letting Claude do something and noting what happened, I kept poking in and adjusting the behavior, "no you can't pretend the result is 0, try again" - the usual stuff when you're trying to get an LLM to do something large or novel.

But I got so invested in seeing the port of the module work that I forgot that my original goal was to see how well the LLM could do on its own. Instead of testing a potentially interesting hypothesis, I was poorly porting a module of a project that I had no interest in continuing. I was only rescued in this case from my pains by the LLM itself: Claude hit some kind of rate-limiting error, forcing me to take a break from the project.

Once I was forced away, I found myself possessed with a sudden clarity: why on earth had I 5 minutes ago become so invested in this particular task? Given the forced break, my brain "reset" and I could step away from it, and go back to thinking about the original problem and what my goals and conclusions were. But there was no way in the moment I could do so. I just couldn't let it go.

This isn't of course the first time that this has happened. Sometimes the breaks are imposed: my wife and I are off to get lunch, and while walking to the door I realize the last 2 hours spent feverishly trying to get some RPC from A to B to work are actually pointless and there's some much simpler solution. Other times I find myself sitting back and catching myself getting too deep into a problem.

Of course, in any big enough problem, you're never sure what to do initially. You have to just... explore, and correct yourself if you're off. There's an unresolvable tension between trying to get through the problem at hand and contemplating "maybe this isn't the right direction after all". At least I can't seem to hold both of them in my head at the same time: if you're trying to debug some subtle problem involving 10 layers of software and hardware, you can't afford the brain space for questioning whether you'd be better off trying a different approach. But even more, the tenacity that makes you stick on problems, it's almost the thing that makes you a good engineer. You need to be stubborn and willing to push through stupid problems in order to get things done.

I don't think there's an easy solution: how do you know when you're in too deep? In RL we'd probably characterize this as a variation on the Exploration/Exploitation -- how much energy should we invest into getting "just this next bug fixed and working" versus taking a sip of tea and then you should change your approach or change your job?

Spending too much time fixating on one thing leads you towards a sort of monomaniacal obsession with it: "functional programming is the only way" sort of thing. On the other hand, you can fixate the other way and spend all your time contemplating what the best thing is to do, leading to a weird sort of nihilism as you question everything while you watch life go by. And yet stepping away from our problems can be such a powerful tool for us, giving us the space to understand if we're doing the right thing: you can't see the forest for the trees and all that.

Recently I've found myself adopting a sort of ritual for stepping back and reflecting. I find if I align it to natural time boundaries: hours, days, weeks, months, years, I can sort of set a mental schedule for myself and it's not too much of a distraction. When I take a break, I can ask myself the usual questions: "what am I doing?", "why am I doing it?", "what could I be doing instead?". I find this can be cathartic as well, letting me note progress as well as struggles.

(It should be taken for given that of course it's really hard to switch your mindset from "debugging this thing is really important" to "should I debug this thing at all", while you're in the middle of debugging said thing. But you know, you just try your best, sometimes your brain refuses to let go, and other times, maybe you get enough space to decide going off for a beer is the better bet.)

Of course, the amount of time deliberating and the scope of the questions changes with the time duration: I don't want to question why I'm working at my job 8 times at day, but maybe once a week is okay? Conversely, I can afford 1 minute an hour to jot down what I'm trying to do: I'm not contemplating throwing away a project at that point, but maybe the scope of a feature or how I'm debugging an issue.

But once a year, well then maybe it's worth taking a day off from everything and contemplating where you're going in life: are you happy with your decisions? In a way you're paying 1% of your time and energy as a sort of insurance against wandering too far in a bad direction. Not a bad trade.