Executive Function 101

The term 'executive function' may already be familiar to you if you have or ever researched attention-deficit hyperactive disorder (ADHD.) It is something that every human being depends on, however, regardless of what type of operating system that their brain runs on.

In short, executive function is a set of cognitive skills that help people plan, make decisions, and carry out tasks. It is something that every human being depends on, regardless of what type of operating system that their brain runs on. Executive function helps us prioritize and focus so that we can do what we need to in order to keep ourselves alive. However, it is also mutable through intentional design and training.

In a way, it is our mental version of software development.

That may seem like a leap, so let me explain. Below are some of the top pillars of software development:

  • Create resilient systems that can handle the edge cases that come with use in the real world.
  • Ensure software performance at scale, especially when the volume of requests increases dramatically upon deployment to production.
  • Integrate with external resources when functionality or resources are not available on the local machine.

Compare that to those of executive function:

  • Find solutions to the huge variety and range of challenges that can come up in life, whether personal or professional.
  • Be able to handle the volume of requests and data to process that comes both from daily life and working in a fast-moving industry.
  • Recognize when we have hit our limits of what we can do ourselves. Ask for and successfully receive help from the right places.

Both software development and executive function are ways to solve problems despite limited computational resources. Many of the solutions we have come up with in software engineering can be used to better explain and tackle our challenges with our executive function.

With that, let's talk about a familiar piece of software.

Windows Task Manager 101

If you have ever used a Windows machine, you probably have at least some familiarity with Windows Task Manager. That is because the ability to visualize and manage processes directly (read: kill frozen applications at the click of a button) is crucial for all kinds of troubleshooting.

A short recap of what Windows Task Manager offers:

  • Shows what processes are being run on the computer at any given time.
  • How much memory and CPU is being taken up by each process.
  • A nice user interface that lets you start and stop processes with the click of a button.

In an ideal world, our brains would provide us with the same experience.

  • We should be able to know what is taking up our attention based on live and accurate information.
  • The resources used by our processes should make logical sense. Doing something as minor as opening up my browser wouldn't use up 80% of my CPU, so a simple task like washing dishes shouldn't either.
  • We should be able to easily start and stop a train of thought, especially ones that have stopped responding to the typical input.

Now, I'm sure that there are some people in the world who have that kind of experience when engaging with the world. But if you're anything like me, that's not how it works at all.

My mental Windows Task Manager is far more glitched up. It looks more like this:

A lot of issues here. Below are just a few.

  • The wrong processes are taking up way too much compute. I probably don't need half of my brain going towards existential anxiety and the laundry pile.
  • I can run new tasks, but I can't end any old ones.
  • The numbers that I'm getting don't add up - I think I still have 72% of my CPU to work with when I actually have just 20% left. That means I will be making some bad decisions about how I should use my brain space.

These bugs in the interface map directly to our biggest challenges with attention management.

  • If we allocate large amounts of attention to low priority tasks, we do not have enough to dedicate to what is actually important.
  • If the majority of your brain space is being eaten up by background processes, not only do you have the same problem as above, you can have nothing actively on your plate and still feel overwhelmed.
  • If you don't know how much is on your plate - or you incorrectly estimate how much time and energy you have to work with - you tend to do one of two things.
    • One, you take on more than you should and burn out. For example, you commit to half a dozen new things and have two weeks of nonstop, productive focus before you crash and drop everything.
    • Two, you procrastinate to avoid doable tasks that you perceive as more difficult or time-consuming than they actually are. For example, you put off an uncomfortable conversation for months to the point that it festers, during which the situation continues to eat up resources in your mind as a background process.

How Do We Debug?

I know what you're probably thinking. "That's... not great news. How do I fix it?" The dev answer to this is pretty obvious: let's do some debugging!

I want to use the term "debug" because it helps us get away from the idea that if you are finding it hard to focus and get things done, then you're just not trying hard enough. Not only is that belief actively wrong, it is actually counterproductive. It brings a great deal of shame and guilt because the message becomes: this functionality should work for you, and there's something wrong with you if it doesn't. Those negative emotions become bloatware that take up valuable resources with little to no benefit.

Debugging our attention spans is a huge topic that can be tackled from a range of angles. For this series, I will focus on one specific problem: We have a lot to pay attention to in modern life, far too much for our hunter-gatherer brains to handle. How do we do everything we need to do?

Before we get into the weeds and talk solutions, let's put that problem in context of a more familiar mental model. How do we get enough compute to run all of our necessary processes?

If you're anything like me, that software problem is a lot easier to solve than the former. A few ideas should have probably already popped into your head.

  • We can get more compute externally, either through a hardware upgrade or host in the cloud instead of locally.
  • We can run diagnostics to identify and eliminate unnecessary processes and programs in order to free up compute that can then be used elsewhere.
  • We can optimize how our processes run by refactoring our code to distribute resource consumption and address edge cases.

Those same approaches are effective when it comes to debugging our brains. In the next few posts, I will show you how to get started.

  1. If you want to start by getting more compute to work with, check out Cloud Computing for the Modern Mind.
  2. If you want to start by removing bloatware and redundant operations, check out Uninstall Your Mental Bloatware: Or, How to Stop Doing Things That Are Bad For You
  3. If you want to improve the performance of your processes, check out [LINK TBA.]

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!)

Subscribe to A Developer's Guide

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe