Basketball-Driven Development
A remedy for when the human in the loop is tired
One of the perks of being a fully-grown adult, is that you can waste your own time and money however you want. A few months ago, I made full use of this perk. I saw a basketball net on sale as I was walking past a toy shop. Needless to say, I am now the proud owner of my own basketball net.
I’m no Michael Jordan, but I enjoy it. After a few months of practice, I’d say most of my shots are now finding the net. At least I don’t have to sheepishly ask the neighbours for my ball back as often.
I’m extremely lucky to be able to work remotely for my role. I’ve taken advantage of this set-up by heading out to the garden to shoot some hoops a few times during the working day. Not really when I’m stuck on a bug, funnily enough, but when my head just feels full. Usually after a long stretch of working with AI assistants, or in the middle of a big architecture planning or design session.
Death by a Thousand Decisions
Back in ye olde days, when I wrote most of my code by hand, a lot of the day was spent making things. I’d pick up a problem, get my head down, and work through it. It took a while, but it had a nice rhythm to it, and the decisions I had to make were a bit more spaced out. As I physically typed out the code, my brain could work away in the background on whatever else I needed to figure out.
Working with AI assistants has changed that. The assistant does a lot of the actual coding, and my job shifts towards planning, reviewing, and judging what it’s written. The decisions I have to make each day come at me thick and fast. Is this plan right? Are there any edge cases that I’ve missed? Should I really be adding that dependency? Why do these useless comments keep creeping in?
None of these decisions are particularly taxing on their own. But there are far more of them in a single day than there used to be, and they come at the speed of AI, not the pace I think. By mid-afternoon, I can feel the difference. I’m not necessarily tired from doing a lot, I’m tired from deciding a lot.
The Human in the Loop Is Tired
A popular concept when dealing with AI and LLMs is that of keeping a “human in the loop”. Maybe I’m just a bit of a control freak, but it’s something that I think is hugely important. I’ve written before about how critical it is to actually read and understand the changes your AI assistant makes. Personally, I want to ensure that I’m not committing to anything I can’t explain myself.
However, this only matters if the human in the loop is actually paying attention. When I’m tired, I’m not. After reading through an endless swathe of code for hours, I know how easy it can be to just give the next change a quick skim. It’s really easy to think “ah it’s probably fine”. I can find myself starting to trust the assistant’s summary of a change instead of actually inspecting the change itself. I can easily just accept things I’d have pushed back on at 10am, mostly because pushing back would mean yet another decision, and another loop.
That worries me. A tired reviewer ultimately just becomes a rubber stamp, the actual review becomes a checkbox exercise.
Get Your Head Out of the Game… to Get Your Head in the Game
When I find myself slipping into that funk, I head out to the garden and to my basketball net. Three to five minutes of missing free throws does two things for me.
The first is that it acts as a reset. For a few minutes there are no decisions to make, and I can clear my head. Then, when I come back in, I’m actually reading the changes again, rather than just skimming them.
The second is less obvious, but I think fairly well understood. I’ve found that my “best” thinking on a problem usually happens when I’m not actively thinking about it. For example, I’ll normally go out halfway through an architecture design session, not trying to solve anything in particular. After a few minutes of letting things simmer in the background, I come back with an answer to something I’d been going round in circles on.
Salvador Dalí used to nap in a chair holding a heavy key. As he dozed off, the key would drop and wake him, and he’d get back to work with whatever ideas had surfaced. Thomas Edison reportedly did something similar with steel balls. Obviously, I’m not a world-class artist or inventor, but if it worked for them, then hopefully it can work for me too.
There are a few studies that back this up. A 2021 study found that people who reached an early stage of sleep were far more likely to crack a hidden pattern in a maths problem. A Stanford study also found that people came up with about 60% more creative ideas while walking than sitting, and that boost lasted for a while after they sat back down.
Call a Timeout
As engineers, our way of working has changed. There are trade-offs, but when I use them properly, I’ve found that AI assistants do make my work better. However, our attention spans are finite, and we need to plan around this in the same way that we’d plan around any other limited resource.
For me, that means noticing when I’ve started skimming and taking that as the signal to step away, rather than push through. I’m learning not to start a big review or an important decision when I’m already running on empty. Part of that process involves not feeling guilty about spending a few minutes outside, because approving a bad change due to fatigue will ultimately cost far more than that.
It doesn’t have to be basketball. You can take a walk, go for a run, or play with the dog. Ultimately, I just think it’s important to have something that gets you away from the screen and gives your brain some respite from all of the decisions.
AI doesn’t get tired, but we do. Keeping a human in the loop only works if that human is fit to be there, so it’s important to look after yourself.
Now if you’ll excuse me, I have to go fish my basketball out of the neighbour’s hedge.