Breaking Up the Day

Sep 03, 2013

I’ve always had a pretty loose attitude towards how I work. I’d wake up, feed and take the kids to school, and just go. When you work at GitHub and you really only have one project, it’s pretty easy to sink your teeth in and forget all the other stuff.

The thing is, that “other stuff” is important. Bills that need paid on time, car maintenance, grocery shopping, banking. That stuff was getting dropped way too often, things that deserved attention got none, and we paid late fees. Part of the deal with my wife and I both working from home is that we divide up the household work, and my bits weren’t getting taken care of. I’m sick of always feeling behind, and like I’m failing.

So starting today I’m changing it.

The Schedule

My day needs more structure. Things that are important but not fun need to have a procrastination-proof method for getting attention, and I don’t want to be distracted by them when I’m trying to write code. The answer is to more intentionally manage my focused attention.

Early morning – writing

My family doesn’t wake up until about 6:30, but I’ve found that getting up early and writing something helps me have more focus for the rest of the day. So I have a 45-60 minute block of time to get something done, and a project that needs monotonic progress. Perfect!

Before lunch - work before play

Once the kids are fed and at school, and I get back from the gym, there are three things I must clear out before I sink into coding:

  1. Household inbox
  2. Personal journal
  3. Work inbox

These are the things that distract or annoy me, and the things that need to get done that aren’t. Having an empty inbox just feels good, like a real accomplishment, rather than yet another day at the sisyphean grind.

I have to have a strategy for things that arrive, though. Things that are seriously urgent can override the other stuff I’m working on, but it has to have a enough urgency and importance to displace the work I’m already doing. Anything that can wait until the next morning, should.

This is bigger than it sounds. It takes a good 15 minutes to get into a flow state, and any interruption can cost you all that spin-up time. Even something so small as the mail delivery. By corralling all these little snippy tasks into one part of the day, and keeping them out of all the others, I preserve my precious flow states without letting things slip through the cracks.

After lunch - heavy focus

Now that the inboxes are cleared and my attention isn’t divided, I can devote serious focus to solving code problems. My wife also works from home, and it might be possible that we distract each other with stupid cat GIFs from time to time, but we’ve agreed that from lunch until school lets out is uninterruptible time. This gives both of us a multi-hour block of focus time to get into a flow state.

Evening - writing

We pick up the kids from school at 4, and from then until 7 is time for being present. Working from home presents the very real risk of never leaving work, so we make a conscious effort to close the office door and just hang out as a family.

Once the kids are asleep (bedtime is 7pm), I usually find that I have one or two more hours’ worth of productive energy left. Some nights this doesn’t happen, and my wife and I will just kick back and watch TV or read, but when I do have some gumption left, I don’t want it to go to waste. This time is set aside for writing, and it’s usually when I do my best work.

The Focus

GitHub employees get to work on whatever they want, and there are always at least 10 majorly interesting things happening that I want to contribute to. I’ve started to learn to say “no” to that first email notification, to unwatch the repository, to make a rational choice about whether I can help out on a project. What I don’t want is to dabble in a hundred things, without making a single meaningful contribution to any of them.

So for now I’m limiting myself to one writing project, and two big software projects. I’ve heard that it works for some people to declare Monday as “Project A Day”, Tuesday as “Project B Day”, and so on, but I don’t think that’ll work for me. The only way to be fair to the projects I’m involved in is to be constantly available, but only shipping one thing at a time. This means that my projects “take turns” getting a chunk of code from me.

Wish me luck!

This is a bit of an experiment, but isn’t everything? I’ll check back in a month and see how it’s going.