Just published a new post! If you prefer to read it in your browser, click here. Otherwise read on...
Productivity is like a heat engine
When I started learning about thermodynamics, I was shocked to learn that the typical engine converts only about 35% of its energy into useful work. Just the theoretical maximum efficiency for a typical car is ~73%*—converting all of its input heat into work would violate the Second Law of Thermodynamics, which states that the total entropy of an isolated system can never decrease over time. And in practice engines operate at an actual efficiency that is much lower once you take into friction, inefficient combustion, heat loss, and drag.
When I first started working full-time, I was similarly shocked by how low my own work efficiency seemed to be. The majority of my output happened in a tiny portion of my overall hours, despite my sincere desire to be as productive as possible throughout the entire day. I felt a lot of guilt around this fact and would work late into the evenings to make up for my "wasted" time in the office. My impression was that a productive engineer was someone who churned out high quality code at a constant rate. My self-imposed standard was that from the moment I walk into work until the moment I pause for lunch and again when I leave at night, I should be making steady, unrelenting progress, and any gap in focus or deviation from the ideal path to a solution was bad performance.
As I settled in to the job, I saw that even my most effective coworkers did not match that pattern at all. They did achieve deep focus, but only after a period of settling in; as a result they emphasized having long chunks of hours to focus on a task, painfully aware of the tremendous costs of context switching. They could be sidetracked by an interesting conversation at the coffee machine just like anyone else, and everyone had days where they were just plain tired or distracted. Of course the most productive folks minimized these disruptions, but they still experienced them. Humans require time to boot up, and we don't always do what we're told—even when we want to, and even when we're the ones telling ourselves!
When these particularly effective engineers were fully focused, they still spent some time going down paths that proved to be dead ends. Some of the features they built ended up being entirely redefined by some product decision made farther up the pipeline, rendering useless all of the focused work that went into their implementation. Sometimes halfway through some task they came up with a far better approach or discovered that some other engineer had already implemented something that would solve their problem, in effect making the previous work useless. Again, all of these inefficiencies are things to minimize, but they can't be done away with entirely. Ambiguity is at the core of a lot of work, especially in software, so some amount of inefficiency is irreducible.
Finally, even a perfectly focused, visionary engineer has to sleep and eat. Most people sustainably work about a third of the day, and beyond that they start to burn out. On a tight deadline other priorities can go on the back burner, but still sleep can only be sacrificed only so much. The most I've ever worked for a continuous period of is about 16h/day, leaving 8h for sleeping, eating, and getting some fresh air, and by the end of that month I was running on empty. Maybe other folks can do that for a longer period of time, but I find it hard to imagine there isn't some limit.
It's not possible to be 100% efficient while working towards your goals. This is obvious in retrospect. Natural limits (like your need for sleep or the fact that the world is complex and constantly shifting what it even means to reach your goal) cap your theoretical maximum, and little tactical errors (like not having quite enough coffee one morning or breaking up your day with meetings) mean that we all operate at an actual efficiency that is much lower. We can make better decisions to minimize the friction caused by this second category of mistakes, but we can't eliminate them entirely.
Just like a heat engine, there's a theoretical limit far below 100% to how much we can squeeze out of a day, and realities of daily life make our actual output even lower than that. You can always strive to improve your processes to remove silly mistakes, transition costs, and other types of friction, but don't beat yourself up if you aren't perfectly efficient—it's not attainable in the first place!