One thing that I’ve always struggled with is a short attention span; I tend to get bored pretty easily. One thing I like about my current job is that I get to work on a lot of different stuff, which helps keep me interested, but it’s still difficult to maintain focus, and I’ve been looking into different systems to help with that. Earlier this month my son was born, which is awesome but means I have less time and energy, more expenses, and less income (due to my wife staying home to take care of the baby), which adds that much more pressure to try to be really good at my job.
One of the things I tried last year was KanbanFlow, which is a free (and paid, though I haven’t felt the need for the paid features) tool for tracking your work; I liked the ease of use but didn’t really feel that I was getting that much out of it and more or less stopped using it. Recently, however, I’ve been reading the book Kanban in Action, which clarified for me what I should be doing, and I’ve started using my Kanban board again. I’m actually feeling more productive, so I thought I’d document what I’ve been doing.
My Kanban board is set up like this:
One of the big things in Kanban is the Work in Progress (WIP) limit; the idea being that if you limit how much work you (or your team) can take on at any one time, then each piece of work flows through the process more quickly. This leads to less work overall, because any issues get found more quickly, before you have a chance to forget the details of what you’ve been working on. By limiting how many balls you have in the air at any given time, you also reduce the number of context switches you need to make, which helps you to be more efficient. In this case, you can see that my “In progress” column – the things that I’m actively working on – has a limit of three items; once that’s full, I can’t start working on anything else until I’ve moved something out of that column. Or as the book says – stop starting, start finishing!
My process here is to start the week by making all the decisions about what to work on and put those things on the to-do list in rough order of priority. At the start of the day, I can move a day’s worth of work over to the “Do today” column (under anything that might be left over from the day before); as things move off my “In progress” list, new items get pulled in from the top of “Do today”. Once I’m done with development that someone else needs to look at, it moves to “Waiting on someone else”; when it comes back it goes back into my “Do today” column. Any new tasks that come in can go into any of the first three columns or simply thrown on the backlog, depending on urgency; a customer issue will be worked on immediately but anything else needs to wait until the current task is complete.
Pretty straightforward so far, right? Even if I’m bored with working on something, it still needs to get done so I can move it out of the “In progress” column, and I need to stay on task to be able to clear out the “Do today” column. This brings us to the next part, the pomodoro timer:
The pomodoro technique works with the understanding that it’s extremely difficult to stay focused for long periods of time, and that our brains need to rest every so often. Thus, you work for a timed 25 minutes and then get a 5 minute break to walk around, visit the restroom, check Facebook, whatever. The timer here lets you select the task you’re working on, so you can use it to keep track of how much time you’ve spent on each task. Meanwhile, it’s easier to stay focused because you know there’s a clock ticking down and you just have to stay on task for a little while longer before you can take a break. When the pomodoro ends, you’ll be asked if you stayed on task, if so, you get rewarded with FlowPoints. It’s a simple motivational system, but it seems to work.
Another technique is to break up those tasks that require the most decision making, so we’re not constantly making demands on the same part of the brain. Do the important development first, before spending time answering emails. Put in some mindless tasks, like filling out time cards and walking to meetings, in between heavy programming sessions.