How Do You Fight Starvation?
Do you know how a computer decides what to do when you’re listening to music while browsing Facebook with a half-written blog post tucked way down your alt-tab order?
It uses a scheduling algorithm, of course. Some little process inside your operating system looks at all the applications you’re running, and decides when to spend some time processing each one.
There are all kinds of different algorithms, optimized for qualities like overhead (how much time the scheduler spends making decisions) and response time (how long an application waits before getting its “turn” on the CPU). Whatever device you’re using right now probably has a very fancy algorithm that has been perfected for over a decade.
Let’s compare this to how we as people manage our time.
It’s very similar, right? We generally have multiple tasks on the go, and we often need to prioritize them and decide where to spend our time.
I clocked some overhead thinking about this the other day, and I realized that if my brain is even using a scheduling algorithm at all, it’s due for a firmware update. I have a serious problem with starvation.
In the digital world, a process is starved when it is given a low priority and there are too many other, high-priority processes stealing all the CPU-cycles. So many important things are happening that this poor, less-critical process is constantly ignored.
Most scheduling algorithms account for this by gradually boosting the priority of tasks that have been waiting for a long time. Eventually our forgotten process gets its chance to shine.
My brain struggles with the boosting.
I’m going to cut myself some slack and rationalize that I’ve been especially busy lately. I was in Europe, then speaking at a conference in Texas, then refinishing a basement, and somewhere in there work got kind of crazy. During that time, I let a lot of things slip through.
“I’ll get to that soon. I just have to wrap up [some feu-du-jour].”
The trouble is, there have been a lot of fires, and the tasks that are still really important and I really want to do them but they’re just not quite urgent enough to ever grab enough of my attention at once have been stagnant for far too long.
So here’s what I’m going to do: Once a week (for the next little while) I’m going to spend an hour or two feeding some poor, starving task(s) in my to-do list. I can work on anything I want as long as it’s:
- Not due anytime soon (if at all).
- Something productive that I legitimately want to do.
Now instead of trying to prioritize some hapless, someday-task, I’m prioritizing the FIGHT STARVATION task. This level of abstraction will (hopefully) stop me from writing off those non-urgent-but-way-awesome tasks as things I can do when I’m less busy — a sun that never seems to rise.
I’m very curious to know how you deal with this. Do you find yourself with starving tasks every now and then? Do you have some clever (or super-obvious) way of feeding them?