Last week at work I had, what in industry terms we might refer to as, a "big fuckup". I can't go into the technical details but I will say that it was high-profile and customer-facing.
But before we talk about that, let's pause for a brief anecdote my uncle shared with me.
My Uncle Richie is what I would refer to as an "expert amateur woodworker". He's been doing woodworking for over thirty years, done countless projects both large and small, and has a well-equipped shop with tools he is highly familiar with. He's about as good at the craft as you can get without being a professional who does it for a living.
A few years back he was building some new steps for the back porch. During the final assembly he was putting the various pieces in place and unexpectedly realized that one of the boards was a bit too long. With the wood glue already drying he ran back into the garage, flipped on the table saw, and cut the board.
Bzzzt. While cross-cutting the board he also managed to pass his hand over the saw and ran the blade across the palm of his hand. Whoops. *
The point I'm trying to make is that even an expert can have moments where he/she/they becomes complacent (especially when in a hurry). And even when doing something you're good at sometimes you still have that "oh crap" moment.
None of this is to offer an excuse or rationalization for what happened with the software I am responsible for. The post-mortem I had to do revealed that there were five or six improvements I can make to increase the robustness of the program and avoid the issue in the future. And of course there are improvements to the QA process that can help catch such issues before the code makes it into production.
But while I wanted to beat myself up over what was a small bug in the code that had big implications, sometimes I have to remind myself that sometimes, "shit happens". Learn from it and move on.
* He's fine, by the way. He needed a trip to the hospital and a bunch of stitches, but no permanent damage.