Philosophy · 4 min read
ON ERROR RESUME NEXT, the working philosophy
What Visual Basic 6 quietly understood about being a person.
For non-VB veterans: ON ERROR RESUME NEXT is a Visual Basic instruction that means, roughly, 'if anything goes wrong on this line, pretend it didn't, and move on to the next one.'
It is the most beautiful and the most dangerous thing Microsoft has ever shipped.
In code, it is mostly a war crime. You take an error, you swallow it, you continue executing as if your bank-transfer function definitely worked, even though it definitely did not. Senior engineers have ended marriages over what ON ERROR RESUME NEXT has done to their codebase. Legacy systems quietly fail in production for fifteen years because of it. There are entire categories of software bugs that exist only because someone, somewhere, used this statement to make a deadline.
I love it.
I love it because the alternative — letting the program crash, telling the user, halting the universe — is sometimes also wrong. Sometimes you do not have time to handle every error. Sometimes the cost of being correct is bigger than the cost of being approximately right. Sometimes 'move on' is the answer.
Life, of course, ships with this statement built in. It's just hidden.
- —You bombed an interview. ON ERROR RESUME NEXT.
- —You shipped a feature with a typo in the modal. ON ERROR RESUME NEXT. Patch it Monday.
- —You sent the email to the wrong person. ON ERROR RESUME NEXT. Apologise. Move on.
- —Your meeting got 35 minutes of small talk before getting to the point. ON ERROR RESUME NEXT.
- —Your kid's school project, which you helped with, got a B. ON ERROR RESUME NEXT.
The instruction has limits. Some errors are not recoverable, and the program should halt, and you should look at it. Some errors are, in fact, the thing the program was for. You don't ON ERROR RESUME NEXT a missing payment, a divorce, or a chest pain.
The skill is knowing which errors deserve the full handler and which deserve 'noted, moving on.' I am still working on this one. It is a lifelong calibration. Most of the people I admire are excellent at it. Most of the people who burn out aren't.
When in doubt, my heuristic is: if the error blocks the next correct action, halt. If it doesn't, ON ERROR RESUME NEXT.
Ninety percent of the time, the next correct action is unrelated to the error.
VB6, c. 1991, knew.
Liked this?
I post weekly-ish on LinkedIn.
SAP, Idukki, AI, the messy intersection of enterprise UX and consumer SaaS, and the occasional kitchen photo. Follow if it sounds useful (or amusing).
Follow on LinkedIn ↗More notes
Career
The Venn diagram of one
Running an SAP career by day and a startup by night. The two communities almost never meet. I'm the only one in the room.
Building
Stack diary: how Idukki actually works
AI profanity filtering, product tagging, in-video checkout. A walk-through of the pipeline.
Public sector
What civil servants taught me about UX
Five years inside UK government software. Mostly humbling.