The Week the Deploy Ate My Buffer Time
The Slack message came in at 4:47 on a Thursday afternoon. Not a ping — a thread. The kind where someone has already typed three paragraphs before you even open it, and the first word is "Hey" followed immediately by "so." I was already in the car, phone on the dash, about to start a DoorDash shift that I had been quietly counting on since Monday. I read the first sentence, put the car in park, and went back inside.
The deploy had gone out at 4:30. Something in the data pipeline was producing null values where it absolutely should not have been producing null values, and the on-call rotation had already identified me as the last person to touch that part of the codebase. Which was true. I had touched it. I had touched it confidently, which in retrospect was the mistake.
That was Thursday. By Sunday night I had logged somewhere around fourteen hours of unplanned work, missed two DoorDash windows I'd blocked off specifically because the kids' schedules were cooperating for once, and eaten cold wings at 11 p.m. three nights in a row. The bug itself wasn't even that complicated. The cleanup around the bug was.
Explore trusted resources and connect with professionals in finance, legal, HR, marketing, technology and other key areas of your business.
How a Single Confident Commit Became a Four-Day Problem
The original change was a refactor — the kind of thing that looks clean in a pull request and feels responsible in the moment. I was tidying up a transformation function that three different services were calling in slightly different ways. Consolidate the logic, reduce duplication, add a comment explaining the intent. Textbook.
What I did not do was check what happened when one of those services passed in a value type that the original messy code had been quietly tolerating for two years. The original messy code had a bug. My clean code exposed it. And the way it exposed it was by silently swapping a valid result for a null, which then propagated downstream into a reporting table that a client checked every morning.
I'd been in a rhythm the week before — a couple of decent DoorDash evenings, a survey that actually paid out at a useful moment, a DoorDash shift where the orders were close together and the math almost made sense. I had, in my head, constructed a week where the side money would cover a specific bill and the day job would stay in its lane. The day job does not read my notes.
Thursday Night Through Sunday: The Full Accounting of the Wreckage
Thursday was the diagnosis. I got on a video call with two teammates at 5:15, we traced the null back to my transform function by 6:30, and I had a hotfix deployed by 8. My oldest wandered into the office at some point around 7 and asked if I was "doing a meeting or just yelling at the computer." I told him I was doing a meeting. He looked at the screen, looked at me, and left without saying anything. That was fair.
Friday was supposed to be light — I had a half-day of actual meetings and had planned to use the afternoon to catch up on a personal project that has been sitting unfinished on my whiteboard since approximately the Obama administration. Instead, Friday was the post-mortem draft, a second review of the downstream tables to confirm nothing else was broken, and a conversation with my manager that was fine but that I replayed in my head more than it deserved.
"You caught it fast. That's the part that matters." — my manager, Darnell, who was being genuinely nice about it, which somehow made me feel worse.
Saturday was when I had planned to do a longer DoorDash run — the kind where you actually start to see a return once the first hour of dead mileage evens out. I've written before about trying to make DoorDash make sense, and the honest answer is that it only approaches sense when you protect the time you've set aside for it. I did not protect the time. I spent Saturday morning writing the actual post-mortem document and Saturday afternoon helping the kids with something I don't even fully remember now, because by then my brain was running on reheated coffee and stubbornness.
Sunday I did a short dash — two hours, close to home, nothing exciting. Twenty-two dollars and change. It felt like putting a Band-Aid on a week that had already healed wrong.
The Actual Number, and the Hours I Won't Get a Receipt For
The DoorDash window I missed Thursday was probably worth thirty to forty dollars based on what I've seen on similar evenings. The Saturday run I skipped was the one I'd been counting on. I have a rough sense of what those hours are worth, and I've done the depressing math before in a spreadsheet I genuinely hate looking at — the conclusion is always the same and it never stops being uncomfortable.
The fourteen hours of unplanned work were work hours, so I was getting paid for them in the sense that I have a salary. But they came out of the margin I keep between the job and everything else. I don't run a tight ship. I run a ship with a little extra rope coiled on the deck, and that rope is what I use to dash, to build small tools, to do surveys while something compiles, to be present when the kids need something. That week, the rope was all the way out and I was holding the end of it.
I also want to be honest that I spent probably two of those fourteen hours being anxious in a way that wasn't productive — just refreshing the monitoring dashboard, reading the same log lines twice, convincing myself there was a second bug hiding somewhere that there wasn't. That's not billable and it's not useful and I do it every single time. There's a whole accounting of hours like those that I try not to think about too hard.
What I Changed, What I Didn't, and the Part I'm Still Annoyed About
I added more test coverage around that transform function. That part was obvious and I did it without being asked, which felt like the least I could do. I also added a comment in the code that is maybe slightly passive-aggressive toward my past self, but I'm keeping it.
What I did not do is change how I plan my side-hustle time around the day job. I still block evenings. I still count on those blocks. I still get irritated when something breaks them. The rational version of me knows that a deploy going sideways on a Thursday is not a predictable event I can schedule around — it's weather, not a calendar item. The version of me that had already mentally spent that Thursday DoorDash money on a specific grocery run does not fully accept this.
The thing I keep coming back to is that the buffer time isn't really mine. It feels like mine because the job is remote and the hours are flexible and I've built a whole little ecosystem around the edges of it. But the day job is the floor. I've written about why I've never quit to do this full time, and the short version is right here in this story: the thing that ate my week was the thing that pays for the week. You don't get to be mad at the floor for being the floor.
I'm a little mad at the floor.
The post-mortem got two thumbs up in Slack and then everyone moved on, which is the correct outcome and also somehow the most anticlimactic ending to a four-day ordeal that I can imagine. The null values are gone. The table is healthy. My DoorDash acceptance rate dipped slightly and then recovered. The wings from Sunday night were actually pretty good. That's the whole story.
Note: Everyday Hustle Jeff is the written side of a digital series. These accounts are composite and dramatized. Any figures are what they were on the day, for one person, and are not a projection, a track record, or advice.