A badly documented API is worse than a completely undocumented API.
There. I said it. When I’m working with undocumented stuff, I know I’ll have to poke it until I get a result; even if that result is a 418 I'm a teapot. But badly documented APIs? The ones where someone clearly just closed their Jira ticket without giving a damn? Those make me want to punch through my monitor.
The only thing that kept me back last time? The Minister of Finance wouldn’t approve the purchase of a new one… (sigh)
So… I tried what the docs said. Failed. Read more. Failed more. Hacked some things here and there…
(╯°□°)╯︵ ┻━┻
Screw it, it’s 3PM and I need a coffee. Brew a coffee. Scrolled through my emails. Made a mental note to answer one of them. Replied to some Asana comments. Back to the implementation. Threw a couple of curl requests to no avail. Sent a message to a colleague about an unrelated matter. Back to Asana. Back to curl.
Oh, 🤬. I’ll fix it tomorrow.
Tomorrow never came.
The Anatomy of Productive Procrastination
Here’s the thing about productive procrastination: it’s worse than doomscrolling. At least when you’re scrolling throughout Reddit, you know you’re procrastinating. You can see it. You can understand it. But productive procrastination? It gives you a sense of «Hey! I do things» or «I am working» or even «I’m not procrastinating».
It keeps you away from your goals and priorities while letting you pretend you’re being productive.
The Asana comments. The colleague messages. The email mental notes. All of it feels like work. All of it is work, technically. But it’s not the work that matters.
When I’m frustrated by something (some examples are a badly documented API, a task that’s extremely boring, a user story that makes no sense, a project that has no purpose) I do other things. And on those days when I’m feeling self-destructive? Just the feeling of it is enough to send me spiraling into productive procrastination.
The triggers? As predictable as the fact that it works on my machine:
- Badly documented APIs (or worse, APIs documented by someone juggling three remote jobs who needed to show progress on all of them before their 2 PM standup)
- Soul-crushing, mind-mashing boring tasks that make me wonder why I didn’t become a plumber — at least then I’d get to save the princess
- User stories that read like they were written by a Soviet-era bureaucratic committee: five people involved, none of them understand the problem, all of them have to approve
- And sometimes, just sometimes, the impostor syndrome whispering that I’m not good enough anyway, so why you even bother bro?
The Positive Feedback Loop (3.6 Roentgen, Not Great, Not Terrible)
Let’s talk about the self-destructive behavior, because pretending it doesn’t exist won’t make it go away.
It’s the combination of impostor syndrome — that thing over half of us feel but won’t admit — in conjunction with an I’m not good enough mentality. It’s a self-fulfilling prophecy in a positive feedback loop. The more frustrated you get, the more you believe you can’t do it. The more you believe you can’t do it, the more you procrastinate. The more you procrastinate, the more frustrated you get.
Rinse. Repeat. Spiral.
This is where the difference between 3PM and 3AM becomes crystal clear.
At 3PM, with a ton of things running, cars passing by, neighbors screaming, my first-born crying that she wants to watch some Peppa Pig — IT’S A NIGHTMARE. There are deadlines, meetings, messages, interruptions. The frustration compounds. If it doesn’t work in 10 minutes, I can skip to the next important thing. Procrastinating the one that usually matters.
At 3AM? When the baby wakes me up for a reason or another and I can’t fall back asleep? That’s different.
At 3AM, when there’s time and space to meditate on the problem, work becomes meditative. The serenity of the city that sleeps soundly. Some lo-fi or psybient playing quietly. The cold outside, or the warmth — doesn’t matter. What matters is the silence, the lack of competing priorities, the absence of pressure.
No race conditions between my brain and seventeen Slack notifications. Just me, the code, and a singular focus.
At 3AM, those boring tasks that would make me punch the screen at 3PM? They feel like jacking into the Matrix. Pure focus. Pure flow.
I am nocturnal. I’ve accepted this.
Breaking Through the Wall (One Brick at a Time)
So how do you actually push through when the frustration hits and tomorrow keeps not coming?
Stay a while and listen.
The 30 Minute Rule
Give it 30 minutes. If you have no results, or only bad results, SCREAM FOR HALP! Someone’s more peaceful mind and cleaner look will slay the beast. Ego is expensive. Help is cheap-ish. Use it.
Break it into dopamine shots
Let’s sit with dopamine for a moment — because realizing how this 🤬 thing works is the difference between owning procrastination and being pwned by it.
Dopamine isn’t a pleasure chemical (like oxytocin, which makes hugs and group projects feel good, or endorphins, which flood in after a run); it’s a prediction and motivation molecule. It surges when your brain forecasts a potential reward — not necessarily when you actually get it. Can you now see why you pick the tasks you pick, or even how you pick them? Why this user story feels better than that boring one? Your brain cares more about the chase than the catch.
That’s why doomscrolling, inbox refreshing, and productive procrastination are incredibly treacherous. They dispense variable dopamine hits:
- New Post!
- Message Reply!
- New Comment!
- Slack Ping!
These keep you on the hook without ever giving genuine closure (i.e., finishing something meaningful).
But here’s the hack (not really a bio-hack, but you get the point): hijack dopamine toward what matters. Train your system to reward the process, not just the result.
How? Break big goals into micro-tasks you can ship fast. Did a small, meaningful change? git commit. Does a PR await merging? Go ahead — merge it. Close that ticket. Delete that TODO. Each tiny success delivers a clean Oops, I did it again hit ‐ real dopamine for real progress. Over time, your brain begins to prefer steady micro-progress over the empty calories of distraction.
Stubbornness plus movement
I pace. I talk to myself. I go back and forth in my living room, cursing working through the problem out loud. Sometimes the solution isn’t in the code. It’s in getting your body moving and your mouth talking.
Now, without too many technical shenanigans, this works because walking increases blood flow and basically wakes up the parts of your brain handling complex reasoning — not Neo Cortex, his younger brother, Prefrontal.
Effectively vocalizing your thoughts is like sending a nice call on Linux; your working memory gets top priority, while all the other internal chatter (what’s for dinner, did I shut off the oven, is Obi-Wan Kenobi Leia’s only hope) gets pushed down the queue.
Suddenly your brain can actually focus on the problem at hand, because movement + vocalizing isn’t just a bad habit. It’s a way to prime your brain for the battle ahead: solving the problem in the best way possible.
Mood-aware task switching
What if I can’t concentrate, nobody’s around for help, and I feel like hitting a wall? Science says your brain is probably in a low dopamine / low motivation state, which makes tackling big, hard problems brutal. Dark Souls, anyone?
I switch to another small task, and here’s the trick: if I’m in a self-destructive mood, I deliberately avoid the big, scary things. Instead, I focus on small wins (unblocking a process, writing a tiny PoC, sending status updates)anything that produces fast, predictable dopamine hits. These micro-progress tasks elevate mood and motivation, often within an hour or two, essentially performing a warm-reboot on the brain.
Think of it like your brain’s own OOM Killer: when the big, heavy processes are blocking everything else, you temporarily kill low-priority tasks, let the small, manageable processes run, and regain enough headroom to attack the big problem without crashing.
Then I return to the original problem, now reinforced and more determined.
Your brain has gotten a mini reboot: prefrontal cortex ready, working memory unblocked, motivation back in play.
It never gets easier; you just figure out when your brain isn’t irradiated and ready to function.
The Eisenhower Unlock
Learning to look at my tasks differently, changed everything for me:
I follow the Eisenhower Matrix now. I delegate. I eliminate. I prioritize what must be done now versus what can wait. I split tasks so I can deliver quick wins. But more importantly, I learned to ask myself two questions:
Is this something that, if done by a colleague of mine, would actually benefit both of us?
Do we really need to do this when there are a hundred other things on the backlog that, admittedly, have higher priority?
| Urgent | Not Urgent | |
|---|---|---|
| Important | Quadrant I: Do First Tasks that require immediate attention and have high impact. | Quadrant II: Schedule Tasks that are important but not time-sensitive. |
| Not Important | Quadrant III: Delegate Tasks that demand attention but do not significantly contribute to your goals. Best to delegate if possible. | Quadrant IV: Eliminate Tasks that are distractions or low-value activities. Ideally, minimize or remove these. |
I used to procrastinate tasks that should have been delegated or eliminated. I’d let them sit in my queue, rotting, creating guilt and anxiety. Not anymore. Now I say:
- We have other priorities right now. (Do First)
- There is a critical production bug that we need to fix immediately. (Do First)
- The system outage the customer reported needs our attention now. (Do First)
- This doesn’t fit into the current sprint, we’ll schedule it later. (Schedule)
- We’ll get to this in a best-effort way when we have the capacity. (Schedule)
- Refactoring this core module is important, we’ll schedule it to prevent future issues. (Schedule)
- This is perfect for the mentee to take on and learn from. (Delegate)
- The new hire can handle this to get up to speed on the project. (Delegate)
- This doesn’t align with our roadmap priorities. (Eliminate)
- Experimenting with this new framework has no immediate payoff, so we’ll skip it. (Eliminate)
Delegation isn’t dumping work on someone else. It’s development. It’s recognizing that some tasks are better suited for others; either because they’ll learn from it, because they have a cleaner perspective, or because you have more important stuff to do.
And, yes, you can have more important stuff to do.
Elimination isn’t laziness. It’s leadership. It’s saying this doesn’t deserve anyone’s time right now.
The Matrix changed how I collaborate with my peers and crew. It changed how I look at what deserves my frustration… and what doesn’t.
Tomorrow Comes in a Couple of Days
Let’s be honest: tomorrow does eventually come. Usually in a couple of days, driven by deadlines and guilt. That’s one of the realities of professional software development.
But now I have tools. The 30-minute rule. The Eisenhower Matrix. The quick wins. The stubborn marching and vocalizing. The self-aware mood management. The willingness to scream for help before I’ve wasted half a day being frustrated.
The work doesn’t get easier. The badly documented APIs don’t magically improve. The boring tasks don’t become fascinating. The user stories don’t suddenly make sense.
But you get better at recognizing what deserves your frustration — and what doesn’t.
You get better at catching yourself in the productive procrastination spiral before three weeks later becomes a crisis.
You get better at knowing when you’re in the right headspace to tackle the hard problem versus when you should switch to something that’ll reset your mood.
You get better at asking for help before the impostor syndrome and the “I’m not good enough” loop eats you alive.
And sometimes, when the city sleeps and the lo-fi beats play and there’s nothing but you and the code and the cold blue glow of your monitors, you remember why you started doing this in the first place.
About Alexandros Koutroulis
Senior Software Engineer with over 10 years of professional experience and nearly 30 years of coding experience. Specializing in backend engineering, debugging, reverse engineering, and PaaS & Web Development. Engineering Manager of the eFront's Engineering Team, sharing technical insights from the trenches.