Attention as a Computational Resource
We all have the ability to focus on certain things and not on others. Unfortunately, we tend to have little choice over what hooks us and what bores us to tears. Our attention spans drive how they like: at breakneck speeds and with little concern for the rules of the road.
Do any of these following statements sound familiar to you?
- You procrastinate. You don't work on things until days or even hours before they are due, even - especially? - huge projects and important exams.
- You struggle to finish things. There's always something else you have to do that distracts you. The closer you get to the end, the further away it moves from you.
- You have a hard time prioritizing. You have a list of all the things that you need to do and enough time to get it done, but you spend that time doing something else entirely - usually far less important.
If your answer is any (or all) of these, then congratulations - you've made it to the right place!

Why Attention Management?
Let's be clear: none of these issues are a result of a deficit in attention.
We all have the ability to focus on certain things and not on others. Unfortunately, we tend to have little choice over what hooks us and what bores us to tears. Our attention spans drive how they like: at breakneck speeds and with little concern for the rules of the road. Meanwhile our conscious minds are just along for the ride, hanging on for dear life.
Take the examples above. When we procrastinate, our minds fixate on the easy but less important tasks so that they don't have to work on what is difficult yet essential. That tendency also explains why distractions appear so much more abundant and persuasive when we attempt to do things that are comparably ambiguous or arduous, such as prioritizing a sea of tasks or finishing a long-standing effort. Our attention spans are biased towards easy wins and immediate gratification, not indefinite labor with a vague notion of receiving benefit way down the line.
Our attention spans are biased towards easy wins and immediate gratification, not indefinite labor with a vague notion of receiving benefit way down the line.

Much of this can be explained with the following observation: at it's core, human attention is just another type of computational resource. It is used to initiate and run processes to completion, at which point it can be deallocated and put to use somewhere else. It is also very limited, made worse by the fact that it is far more difficult to get more compute for our brains than to slot in a new memory card.
In short, if you pay too much attention to and use up your compute on the wrong problems, you don't have enough left to solve the right ones. The solution is to maximize the amount of and optimize how we work with what compute we do have.
Luckily, as software developers, we all have experience with managing and optimizing limited processing power. We just have a lot more confidence and experience architecting solutions for computers than we do for our own brains. Th goal of this blog series is to bridge that gap.
The Approach
Now, I'm not a neuroscientist. I am assuming for my own sake that you aren't either. My goal is to help you better understand the inner workings of your brain and why you struggle with attention management. I hope to achieve that by relating them to a topic more familiar to you: developing and debugging computer software. That means I will be using a lot of creative analogies.
Imagine the following situation. Your team is setting up a new project, one that should be simple. Then a weird error pops up on your machine that no one else has ever seen. You scour the annals of StackOverflow and get ten pages deep into your search engine results. When you ask your teammates for help, they just shrug. "Well, it works on my machine!"

If you have ever had this experience, then you know the frustration of being handed a solution that works for most people but not for you. Maybe your local dev environment is just set up differently. Or the underlying hardware has additional requirements. The brute force approach is rarely helpful here, if not actively counterproductive. Trying what should work, again and again, wastes time and energy while the real problems remain unidentified.
I'm not going to do that to you. I am not here to promise you perfect solutions that will work right out of the box. There is no such thing as, "one size fits all" when we are talking about human minds. Instead, I am offering you documentation to help you debug. This series identifies and discusses mental models that are shared between software engineering and the science behind how our minds tick - for example, the similar logic behind both manual memory management in C++ and our brains' dopamine reward pathways.
Now what?
If you're still reading, then I am hopeful that this has piqued your interest enough to give this series a honest go. In classic choose-your-own-adventure style, you now have two paths to choose from.
- Ready to jump in? Let's talk about Windows Task Manager and what it can teach us about our executive function.
- Curious about what my deal is and why you should care about anything I say? Let's talk niche operating systems. (In-progress)
See you next time!
As always, if you have thoughts, do leave a comment.
(If you're not seeing the option, you'll need to sign up as a subscriber. It's free!)