Productivity

Tools and techniques for the business of getting things done.

Divide and Conquer

From How to Make Decisions by Steve Streeting:

The more you divide your time, the less efficient / productive you will become.
If you spend 10 hours a week on each of 4 projects, in 4 weeks you will have done a weeks worth of work on each, right? Wrong. In fact, you’d probably be lucky to get half that. The more you divide yourself, the less you’re going to get done on each thing, just because of a lack of focus and a need to keep context-switching.

I must be weird because I find the exact opposite works for me: the more things I have going on at once, the more I get accomplished. Which was a real drag last summer, when I was trying to single-mindedly learn Cocoa programming and get Musicality out the door, and I was all like "ooh, shiny" at all the cool technology and new APIs I was discovering. I did everything I could to block out distractions and Just Get It Done and I think it ended up doing more harm than good. Since then, I've started easing off and gradually taking on more and more threads with, as it turns out, no loss in progress on any individual one.

Partly I think this is a brain fade problem. When I'm looking at the same thing for four or six or ten hours I just stop seeing it. Maybe it is the same brain mechanics that tunes out a background noise.

Partly it's a motivation thing. If I know I've got all day to work on something, I don't feel the same urgency as when the timer is counting down. I can…and how do I say this…if I only allow myself two hours a day on a project, I will get done almost the same amount as if I gave myself all day. When I sit down to it, I'm motivated and my brain is engaged. I've had a whole day for my brain to chew on the problem and so I've got two or three things I'm ready to do right off the bat. But once those things are done, once I find myself problem solving, my output falls way off. It is time to move on to something else and let me poor brain think about the next steps for a while.

I've talked about this before, but I think I (and maybe we, but I won't speak for everyone) do our most effective problem solving away from the desk, giving inspiration a chance to appear. I can't recall the last time I ever had an "a-ha" moment while doing the work. So you can almost think of this approach as twenty hours of finding a solution, and two hours of writing it down.

I say "two hours" because I've found that to be about the ideal amount of time for me to stick with one particular effort. Then I take a short break and switch gears to something else; the change of context gets my brain engaged again. But I've found for many things a shorter timeframe works even better. For instance, I want to get writing again. Writing, and particularly blogging, seems to be one of those things that you can only get better at with practice, but the only way to practice is to do it. So I've been writing for 15 minutes each morning, off-site. The tight time frame is really motivating and forces me to get to the point. And it is short enough that I don't feel like the "more important" projects are getting shortchanged.

Interesting: I initially didn't feel like I had time for writing in the morning; my routine was already too full. But once I made the decision to do it, and stuck with it, the time appeared as if out of thin air. I, almost unconsciously, got just a little more efficient with everything else; that slight sense of urgency was all I needed to get more done.

Now Premake gets 30 minutes in the afternoon, assuming I'm not entirely brain dead from my day job. Musicality gets one hour every morning, even on the weekends. The day job gets the bulk of my day—c'est la vie—but even there I try to switch between different bits of the work.

I've found this works best on a fixed schedule. If I allow it to "float" my mind will start to rationalize slacking off by assuming that I can just add another 15 or 20 minutes. And best if I repeat it every day, so I can act on whatever insight I come up away from the desk in a reasonable amount of time. And because you get used to it, used to the pattern and the rhythm, and your mind begins to almost naturally flow from one gear to the next. It's a cool feeling when you really get into it.

Always ambitious, I'm currently trying to find a way to add two more blocks to my day somehow. One to get a new small commercial project a la Musicality started (the saying about eggs and multiple baskets); another to restart a pet project that I've no idea what to do with, but can't resist working on. And then I've a friend who insists we start playing music again, so that'll be another. But that's what we're here for right? To experience life, to live it. To do and be and have fun with the lot of it.

Edges

It is late, approaching midnight, and I long for sleep. Alas, it escapes me. Instead I toss and turn, right on the edge of it, my mind refusing to quiet.

I started a new position this week, a real job with a real office and hours and a commute. After all that talk of independence, I know, but the money was running out and something needed to be done. As far as jobs go this is a good one, but of course I miss the mornings spent journaling from the deck, the long afternoons in my own world, and most poignantly the lunches with Martha and Aiden.

I went off a bit earlier this week on "flow". Now, as I race around from meeting to meeting, filling out paperwork and hunting down installation discs, I could really use a little, good for you or not. And it occurs to me that what I am after is flow, but on a broader scale. That is to say, all of these processes and whatnot I keep working and going on about are an attempt to capture the feel of flow but writ large, in the grand scale, spanning the interruptions and obligations and changes of direction, a flow that can be put down and picked up again later.

They can capture entanglement after all.

And so I work to develop a cadence, a rhythm, carefully backed with notes and plans. I work to flow from task to task, from the coding to the business to the website to the family and so on. Head down coding was always a gross simplification, missing too much.

I have had small successes, stretches of days where everything comes together and tremendous things get done, but I've yet to figure out how to string them together. I persist. And now, especially now, when my days are filled with new work and a new environment and my own humble efforts are squeezed into the edges of nights and weekends once again.

And speaking of the edge of night, it is time for me to find sleep, one way or the other. So good night, my friend. Tomorrow we begin again.

On Flow

See Work 2.0, an excellent article of the "advice from the trenches" variety penned by Steve Streeting. He's the (former, I hear) lead of the OGRE project; back problems are forcing him to modify his old work habits.

...the first 15 years of my career was much the same as every other enthusiastic developer: you put a ton of hours in. 12-16+ hour days, evening and weekend coding marathons, pizza in the keyboard, crunch times, 3am debugging sessions where you just can’t go to bed because you can feel the source of that bug just beyond your fingertips, dammit, desperate last-minute sprints to deadlines where you manage to slot that last piece in, Jack Bauer-like, just before the world goes to hell.

We call this "flow". I first heard about it from Peopleware back in the day and it sounded great: better concentration, more productivity, less human interaction! For a young programmer what wasn't to like? And yet, as a young programmer, I had about as much say in how the office got run as the water cooler. My attempts at "flow" were perpetually foiled by meetings, phone calls, and chatty neighbors. I got frustrated, believing that things could be better, pushing against the situation instead of learning how to work within it.

Farther along now, I think that flow is not only over-rated, but potentially harmful. Let me qualify that: I find flow to be counterproductive. A quiet work place free from distractions: very good. Getting into a zone and sitting in it for hours: very bad.

Flow makes you blind. When you get into a flow everything falls away and it's just you and the problem to be solved. You crank away and turn over code and it is all great fun. But flow, by definition, puts you on a rail. You came into the session with a collection of beliefs about the problem, with preconceived notions of the "right" solution and about the problems you would encounter along the way. Now you're on the rail, you're in your flow, and you're shooting like a bullet straight at that goal. Wonderful.

But, in my experience, we rarely if ever aim correctly the first time. And while you're whizzing along in your flow you are flying past all kinds of possibilities and opportunities. If you don't take time to step back and take a breath, you just flat out miss them. Sure you solve the problem you went in to solve, but not as well as you might have. And the cost of those missed insights and opportunities, over time, is huge.

Flow blocks inspiration. My best ideas come as inspiration, often appearing as fully formed thoughts from...well, from I don't know where. Inspiration only comes away from the keyboard. It seems to be a truth of the human condition: you work your ass off on a problem only to have the answer appear while you're standing in the shower later (and I wonder if anyone has ever tried to correlate increases in intellectual output with advances in plumbing). When you're in flow, you're by definition sitting at the keyboard. You are in "output" mode; you are not receiving. Again, opportunity cost.

Flow creates work. You're in your flow, you're knocking out code left and right. You've totally whipped the problem you set out to solve, and it's only midnight! What do you do now? You can't switch to a totally different task, because that would require reconfiguring your mental working set and ruining the flow. Documentation is no fun, and you're too locked in to the task at hand to make any sense anyway. You don't want to walk away and lose a good flow. So instead, you start gold plating. You start "fixing" things, and adding "features". Of course, there's always just one more thing you can add, and the next thing you know you're in one of those "3 AM debugging sessions" Steve mentioned, trying to solve the bug caused by the crap code you wrote two hours ago when you should have just gone to bed, and which tomorrow you're going to have to rewrite anyway. You're working "12-16+" hours when you stopped being effective after 8. (And believe me, I'm not casting stones here, I've been there and done that too many times myself.)

Flow is bad for you. Sitting for extended periods of time is bad for you; Steve's own situation makes that point pretty well.

I've come to prefer working in what I'll call "pulses" instead of "flow". I like focusing completely on a small, well-defined task for a short period of time. I like using the pomodoro approach: 25 minutes on, 5 off. I like doing long-term improvement projects, both personal and professional, in small intervals as part of scaffolds. I like having a variety of projects going at the same time and switching between them at regular intervals. I like getting away from the computer entirely and doing something else (the lack of which I consider to be my biggest weakness right now). In all of this, I believe strongly that the time not actively working the project is just as productive, if not more so, then the time sitting at the keyboard.

To bring it back around, Work 2.0 provides some excellent advice on working effectively with pulses. In particular, I like his advice on maintaining an external context: keeping notes, task lists, diagrams—as much of your mental state as possible—outside your mind. I use Things from Cultured Code for this, using the excellent quick entry feature to capture any thoughts or possible next actions. Pen and paper works, of course. Vitamin-R looks interesting too.

The rest of Steve's advice is just as useful: ignoring tangential issues, focusing on individual tasks, prioritizing negatively...check out the full article.

(* Now, sometimes you just need to get the thing done. I put food on the table with client work and I understand the reality of a deadline. There are times when "done" is more valuable than "great", and sometimes more valuable than "good", and in those times the opportunity to get into a flow can make all the difference. But those times should be few and far between.)

On Balance

Okay…(deep breath)…I did it. Musicality is released. The website is redesigned. The store is running. I have customers. I have happy customers. All is well.

At some point I'm going to talk about the lessons I learned during the craziness of the past several months…just as soon as I figure out what exactly those lessons are. Today I'm just happy be out from under this rock with an opportunity to share one of those stupid simple why didn't I think of this six months ago quick improvements to my work-a-day.

The problem statement

I've got all these different area vying for attention. Improvements to Musicality are très importante, but I've got to run the business too, and the website needs serious work. And all those great, kind, (did I mention good-looking?) Premake users have been waiting patiently for a new release. And oh, the bank account is looking scary, and that iPhone app isn't going to code itself. I am making good progress on things, but I feel like whatever I'm not working on right now is falling through the cracks. Nagging, generalized anxiety.

I need balance. I need confidence that everything is under control. That I'm going to get to that very important thing that I need to get to, and soon. That everything is getting attention and enough of it (but not too much!).

Pomodoro to the rescue

I've talked about pomodoro before. 25 minutes on, five minutes off, repeat until done. (Funny side note: my friends and co-workers who read the blog always comment on what a good idea that is. But then they're surprised when they discover that, hey, I actually do it.) This pomodoro idea has always been kind of a background process. It is how I do my work, but has no bearing on what that work is.

After agonizing over how I could possibly manage everything I've put on my plate and accepting that I can't not do any of it (did you get that?), I decided to try a little experiment and give those humble pomodoro a bit more responsibility.

So. I get eight luscious pomodoro (sorry, it's just a fun word to say: pomodoro) each day, which is about what I can fit into a humane workday after all of my other scaffolds. I divide them up between the different bits of Industriousness to create a weekly schedule, which is currently just so:

M T W R F*
Musicality - 4 - 2 -
Nextgen 4 - 4 2 -
Premake - 2 - - -
Business 2 - - 2 -
Free play 2 2 2 2 2

And…um…well, I guess that's it. And, to be honest, I didn't really believe it would work. I mean, one hour a week on the website? On Premake? Really? But I was desperate so I gave it a go.

I'm a month into this experiement now and, like I said at the start, the results have been head smacking why didn't I do this sooner good.

Alright, so yeah, Premake is only getting an hour a week.* But it wasn't uncommon for me to get hung up on something else and go weeks without looking at it before. Now I'm guaranteed to look at it every week, and I'm building up a good rhythm. Stuff is getting checked off (and 4.3 is coming soon, for real).

All that anxiety about stuff falling through the cracks? About working on the wrong thing? Gone. All the mental energy spent juggling priorities? Now available for real work. All the prioritization has already been done! Everything is getting an appropriate amount of time relative to everything else, and all I've got to do is show up and work the lists. When I'm working on Musicality, I'm working on Musicality. Period, end of story. When the time runs out, I stop thinking about Musicality and I get on to the next thing.

This is seriously motivating. I get one hour this week to work on Premake. When that timer starts I am busting my ass to make it count. I don't check Twitter, or email, or anything else, even during the break. In fact, the only things I'm running at that point are my code editor, a terminal window, Things, and, if I need it, a browser window open to the Premake website. For that hour, that's all I need.

A nice bonus that I didn't expect: I'm having more fun. I wake up in the morning thinking whoo-hoo, it's Musicality day! and I'm totally into it. (Okay, that's pretty dorky now that I see it in writing. Still true though.) There's no oh, but there's those Premake patches that need to be applied, and I need to get more keywords in my AdWords campaign, and I still haven't watched the rest of the WWDC sessions, and… There's just Musicality and that damn Grooveshark integration that refuses to obey its master, and I can enjoy it completely guilt and anxiety free.

And finally: the schedule makes it clear when the day is over. Nothing is left open-ended. When I complete the last block I turn off, and I go away. Very clear line between working and not working. Better time with the family, better sleep, better mental health. Which means that when I am working, I work better.

* Those "free play" blocks give me the flexibility to spend a little more time on "hot" areas as needed. My one rule is that I can only work on stuff that is already on the schedule for that day. So, for instance, on Tuesdays I can only work on Musicality or Premake. Fridays I do my weekly/monthly/quarterly reviews; any time left over I use for whatever feels most important.

Doing More With Less

I had the intention of writing more during this process of ramping up and launching the business, sharing the view from the trenches as it were. But I just haven't managed to get to it; poor time management on my part. Before taking the leap I read all of these interviews with other entrepreneurs, about how everyone was working 14, 15, 16 hours a day to start. I read about people who failed and blamed it on being too complacent, and hoo-boy that wasn't going to be me, no sir. So I hit the ground running and then some, basking in the pearly white glow of my LCD even before my first cup of coffee in the morning, and right up until my head hit the keyboard at night.

This, of course, was stupid.

I knew I was going to be up all night, and so there was no urgency to get anything done early in the day. I found myself gold plating. Or spending too long on research, or on an approach that clearly wasn't working. And then, after dinner when I was less than 100%, I was trying to cram and check things off, resulting in sloppy and ineffective work that would need to be cleaned up the next morning anyway. I was logging plenty of seat time, but my roadmap wasn't getting any shorter.

Like I've never done this before.

I scaled back, and not only did the the quality of my work immediately improve, but I am actually getting more done day to day. My mental focus is better and so I am making better decisions. My attitude is more upbeat and so I am approaching problems more positively which, to me at least, makes them easier to solve. And the time away from the computer is allowing perspective and insight; I often come back to my desk with a better plan than when I left.

Basically I've gone back to the schedule I had when I was employed. I've got my "day job"—building the product, the website, and launching the business—which I work in the traditional hours, usually getting in between 8-10 pomodoro plus my scaffolds. I knock off shortly after the kids get home, and we hang out and have dinner together. Tonight we're continuing Aiden's introduction to James Bond with From Russia With Love, good stuff. Once the kids are tucked in I spend some time with Martha reading or playing a game—she likes to ride shotgun on my video games, shouting instructions and advice until she drifts off to sleep; we're currently working on Mass Effect. Then I come back downstairs, usually around 9:30 or 10 o'clock and log a couple more hours. However, this late night time is strictly for my fun or "hobby" projects. I'm thinking of blowing the dust off my old driving simulation code.

This approach is how I got to the point of starting my own business in the first place, and silly of me to try and fix something that wasn't broken. I learned a lot by researching the startup experiences of other folks but at the end of the day you have to know, and do, what works for you.

So, good morning! Time for that cup of coffee.

The Art of Someday

"…the terror of knowing that I can't keep up with all of it. It's like finding a river of flowing gold when you haven't even got a cup to save a cupfull…you've but a thimble, and that thimble is your pathetic brain and labour and humanness." —Jack Kerouac

When I began capturing notes and seeing them actually get completed, the floodgates opened and out came more good stuff than I knew what to do with. Attempting to improve my workflow by getting more granular has only added fuel to that fire. After much pain, suffering, and suboptimal productivity I think I've got things whipped back into shape. For the sake of my future self, here's a moment to capture these hard-earned lessons, just in case I find myself wandering off into the wilderness again (not like that would ever happen, of course).

The Someday List

If you've got more projects than you can handle, take the ones you aren't actively working and put them somewhere else. Duh. I call it a backlog so the agile folks at work will know what I'm talking about, but in GTD parlance it's a Someday/Maybe list. Whatever you call it, it's the place you put the things that you're not ready or able to do right now.


A sampling of the Someday list

So the first step to getting my lists under control was to shove everything I could on to the backlog. And I didn't kid around: if I wasn't actively working on it today I pushed it off. Which brings up my rule number one:

Use it aggressively. I mean like every day. If you aren't going to work on a project today, and you aren't going to work on it tomorrow, seriously consider pushing it off to the someday list. If you aren't going to work on it this week definitely push it off. Get everything out of your sight you possibly can; focus on your most important work. If you find yourself with nothing to do—lucky you!—then you can go grab the next thing off the backlog.

Okay, so I pushed everything off, cutting several dozen active projects down to six, and now I've got a big long list of someday. Here's the rub: the Someday/Maybe list only works if someday eventually arrives. Otherwise it's the "Never/No way/No how" list and the kiss of death. And it killed me: I had a backlog, and I used it. More and more new ideas came in and it grew and grew, with no end in sight, until I started losing stuff, losing the big picture. I became afraid to push off ideas, fearing they would never be seen or heard from again. So I kept them active, so I was looking at all of them every day, feeling overwhelmed and unorganized. I couldn't push them off without killing them, and I couldn't keep them around without killing me.

Like I said, I did manage to get it sorted, and here are my rules for making sure someday does arrive. Note that if you use the list aggressively, like I mentioned above, most of these will fall out all on their own. I mention them here for my own edification.

Structured Procrastination

Ugh.

I'm at home today, the first of two days of vacation. I had hoped to use this time to crank out some Industriousness, like a new article or progress on Xcode for Premake. But I find myself unmotivated, uninspired, lacking in enthusiasm or energy. Humbug.

One needs time to recharge now and again, I know. I ought to go out on the deck and read a book or scribble in my sketchpad; noodle around on the Danelectro or take a drive out Crum Creek way. But I feel a certain obligation to my work, to be making steady progress, especially on an "opportunity day" like this one.

To take the edge off my self-imposed guilt I've dropped back to structured procrastication, checking off odds-and-ends around the house like ripping the new movies to the Playstation, fixing the mower, getting Aiden some bike riding practice. This has a certain satisfaction, and if it lacks in glamour it still shortens the backlog.

I guess what bugs me most is the correlation between the vacation and the drop in motivation. I have an entire day available for my own work, and so I feel no urgency to get started. Coincidence or causation? Is it worth creating a false deadline for myself, or better to just let it ride? Push through and get something done knowing that it will be uninspired, or live to fight another day?

I have no answer. But these books on my desk could be put away, and those shelves could be dusted...

Update: Apparently I just needed to vent and organize. I felt better as soon as I posted, and by the time I finished decluttering the studio my brain was turning over Xcode ideas. I ended up making decent progress on the day.

On Proper Projects

A lesson learned from the development of Premake 4.1: keep your active projects specific. I mean really specific.

I started development by creating a new project, naming it Premake 4.1, and dropping in a bunch of actions from my backlog. Technically this is a valid approach; the only definition of a project I've ever encountered in this context is "any result that requires more than one action." Now older and a little wiser I realize how incredibly vague that is. Consider: Program TV remote vs. Achieve world peace. Both technically valid projects. One doable, the other not so much (which one is an exercise left to the reader).

My project started out with a reasonable list of actions, but inevitably new ideas came up, features and refactorings, bugs that needed fixing. Because my project was vague enough to encompass all of this new work it soon did, growing larger and less focused, and I started to feel like I was losing ground. Rather than stepping back and fixing it as I should, I tried crunching harder which just made the problem worse. Ack!

Looking back at this trainwreck learning experience, I've come up with some rules to help keep my projects manageable going forward:

  • Projects should be a dozen actions or less, a number I pulled out of thin air based on past experience. If it requires more than a dozen steps it is probably larger than I can get my head around in one go, and likely contains hidden work. Better to split it up.
  • If I have to think about whether an action belongs in the project or not, one of them is too vague. Either the action needs to be more specific (or become its own project) or the project needs a tighter focus.
  • Project names should always start with a verb. What is it I'm trying to achieve with the completion of this project? That doesn't prevent Do stuff projects but it at least makes me think about it for a second.
  • When in doubt, split it up.

There are probably more rules, I can't remember. I reserve the right to edit this post later.

I've been doing this for about three weeks now and while I thought it would help my planning a little, the gain in clarity has been quite remarkable.

On Pen and Paper

Continuing my series of stupid simple ways to get things done, I bring you...pen and paper.

The first habit I picked up when I started my forays into GTD was keeping a pen and paper on me at all times. Any thought of significance gets written down. Once it gets written down, I stop thinking about it, freeing up those mental cycles for something bigger and better.

I started out capturing to-dos and reminders; as the mental cruft cleared I found myself with more project and writing ideas. The process is cumulative, and builds on itself. Simple ideas gather depth over time as I consider new perspectives: new features, presentation ideas, a twist in the plot line. And the best part is that all of this happens organically over time, insights arriving of their own accord, so there is no real effort involved other than writing it down as it comes.

Pen and Paper
Notes, quotes, to dos, and MITs...pocket sized!

Once a week at first, but now once a day, I review my notes and move them to more permanent homes, usually into Things or Evernote. I've developed quite a queue of ideas over the years — now I just need to figure out how to make them all happen! Fortunately, I've gotten some ideas on that, too.

I've tried various form factors of paper and pens, including index cards, Post-It notes, Space pens, and all the gimmicks on 43Folders and Lifehacker. My well-informed opinion is a Moleskine Cahier notebook paired with a Zebra F-301 compact pen is the best combo out there.

The Cahier is the perfect size to slip into a pocket. It comes in blank, ruled, or graphed versions. The back pages are perforated, perfect for sharing a phone number or directions. It lays out flat, and holds up well to weeks of travel.

I like the feel of Zebra pens, smooth and consistent, even in wet or cold weather. The F-301 compact is small enough to fit into a back pocket next to the notebook, but expands to a full size pen at need. And it's metal shell is sturdy enough to handle being sat upon, for those times when you forget what's in your pockets.

I have an iPhone as well, which is great for capturing a quick photo or a snippet of sound, but I still keep my Moleskine with me. Despite my gadget-oriented nature, pen and paper is more often than not faster, easier, and more versatile. Project ideas, blocks of writing, sketches, UML or interaction diagrams — not quick or easy on the iPhone.

An added bonus: when a notebook gets full, I note the date on the last page and toss it into a box in my office. I find they make for great inspiration when I'm feeling stalled, providing a real nitty-gritty, nuts and bolts window into my past: what I was thinking, what I was doing, and what seemed important.

This is one powerful habit to have. I've gone from being the guy who forgets everything to the one everyone counts on to remember. My friends have even picked up the habit themselves and started carrying around Moleskines of their own. Maybe I should get a commission, eh?

On Most Important Things

A few years back Marc Andreesen took the productivity pr0n plunge and posted an article describing the tips and tricks he uses to get more done. Some of his suggestions, such as throwing out your schedule, were...thought provoking, but didn't stick for me. I did pick up one invaluable habit from his list though, which I've since seen mentioned elsewhere under the name of "MITs".

MIT stands for "most important task". Each night, just before I go to bed, I make a list of the three things I most want or need to get done the next day. These actions then become the first things I work on when I wake up (after completing my morning scaffolds).

This practice is very clarifying. It is easy, in the hustle and bustle of the work day, to get caught up in a lot of small urgent tasks and never address the big, important ones. When that happens I might work my ass off all day with nothing much to show for it. By deciding on my MITs the night before, when I am relaxed, I gain some distance from the noise and commotion, some perspective. As a result I make better decisions about where to focus my attention.

Those MITs aren’t the only thing I get done, of course. And some days I don't get to all of them, in which case I roll that task over to the next day, and make it the first thing I tackle.

Doing the important actions first is key to making it work. Those urgent emails, the meetings, the fires that need to be put out...those are going to keep coming. The list of quick hits never ends. Developing the habit of addressing the important before the urgent ensures I'm making progress where it matters, no matter what the world throws at me.

It sounds simple, but makes a profound difference in the quality of my day.