
“Fallback” seems to be the favorite word of AI coding agents, and the bane of my existence lately. To paraphrase one famous quote: “Wenn ich ‘Fallback’ höre … entsichere ich meinen Browning.”
The idea of a “fallback” seems reasonable on the surface: when one way of doing things doesn’t work, we try another. It actually makes sense when the first mechanism is inherently unreliable but faster or more efficient. For example, if we upload a file for processing, we may wait for a webhook call to signal that the work is done, but if the webhook doesn’t arrive after a certain time, we can query the job status directly.
AI agents love this idea, but they often apply it without merit, leading to decreased stability and unnecessarily complicated code. Suppose I wanted to use a horse as a fallback for a car. I would need to drive around with a horse in my back seat so I could use it in case the engine fails. Of course, for that to really work, I’d need more than just a horse: I’d need hooks on the car that the horse can be attached to, a shaft, bridles, reins, you name it. And I’d need to feed my horse several times a day. I’d need hay. I’d need to deal with the horseshit. And of course I’d need to test periodically that I still remember how to harness the horse to the car, and that the horse can still pull the car forward. Come to think of it, this is probably not the most cost-effective solution. People usually deal with broken engines by other means, e.g., by calling a tow truck.
This does not stop AI agents, though. From them I hear proposals every day along the lines of: “Oh yeah, we’ll use this new solution, but we’ll keep the old one just in case, as a fallback.” For example, we completely redesigned our “Mission Overview” screen. AI suggested keeping the old screen in case the chat id property of the mission is null. The probability of the chat ID being null on an actual mission is close to that of an engine failure on a car, but it didn’t stop the AI from keeping the old screen around on the back seat instead of just showing something along the lines of “sorry, can’t show mission overview, chat ID not available.” I’m not sure where this love of fallbacks comes from, but I find their lack of faith in their own solutions rather disturbing. At some point the fallback stops being a safety net and becomes a second system you’re forced to maintain forever.
