When working on a personal project, it is the must to effectively use small chunks of time. If you got 15 minutes, and you can use them to move the project a notch ahead, it is super and feels good. If you can not, your project is doomed. You don’t have a luxury of warming up for an hour to get into the “zone”. You don’t have the luxury of keeping your mind on the project for a few days in a raw, if you have a serious day job. All you have is 15 minutes a day, so what are you gonna do? Then giving up is not an option, get smart about spending those 15 that God gave us.
There are two keys to it. First is well crafted code. It’d better be, or the 15 minutes wasted while you struggle to remember where the things were. Invest in structure, clarity, naming and unit testing. I will say no more on this: you all know the value of well crafted code, and how to do it. We don’t always do it by the number of factors. But for the pet project you don’t have an option to slack on quality (1).
The second key is effective project management. Not a heavy duty project management to kick your own ass on your fun project. But a new type of applied 15 minutes project management.
Think of a “project binder”. It comprises the scratch pad, the back log, and the support materials. They work together:
When I sit down for 15 minutes, I open a back log and look what’s there. My mood is different as so is my energy level. I pick an item that matches my mood and energy. Code a basic design for a walking skeleton while the mind is fresh at 6.am Monday morning. Do quick research on the web while having lunch. Crank down some routine UI code on Thursday night after a hard day at work. Get some fun part for a rainy Saturday morning (2).
While I am working my 15 minutes, ideas come. Code changes, fixes, extra tests, blogs to write, design thought to incubate, reading to catch up, researches to make… It’s a lot of ideas, some good, some not so good. But 15 minutes are just too short to meaningfully sidetrack. I just jolt the ideas to the scratch notes, and keep on moving on.
When I am done, I take 16th minute to reflect on what I have done. I also write a “log line” for the session: Date, how long, and what is done. I mark it in the backlog. The scratch notes go to the “scratch notes” section; I shut the binder close and go get some life.
Once in a while, in the right mood, I spend whole 15 minutes on processing the binder. “Getting Things Done” unleashed. Start with scratch notes. Pick one: What is it? Do I need it? Any actions required? Will I do it? Decide (3). Each note makes the way to the backlog, or waist basket. Or I keep it for my references. Then it goes to the “support materials”. Then review the backlog items. Listen to your mind. Does something change? Is this item still makes sense? Any ideas triggered? Check off what is done, purge what is no longer needed, adjust old ones and and create new if they come up. Finally, go over the support materials. Same here listen to your mind, get ideas, and purge what is not longer needed.
The implementation of the “Project binder” can be hi-tech or low tech. For instance, the combination of Track and Google gives a hi-tech: Work off the Track backlog, jolt you scratch notes in “Notepad”, and append your support materials to Wiki. The flow is the same: update the backlog and parse the notes once in a while. I am working off a paper based one. It is a physical binder with three sections. In the “scratch section” there is a bunch of sticky notes, index cards, paper tear-offs, and napkins. The backlog is post-it notes stacked on several paper sheets. The support materials section keeps selected notes, design scratches, mind maps and print-outs. It looks something like this:
Scratch Notes
Backlog Page
Support Materials
After glancing at my messy project binder you might think it doesn’t look like a lot of organization. That is exactly right. It’s not too much, just enough to make 15 minutes worth what they are, and move the project ahead one notch at the time.
(1) Talking well crafted code: pet project is supposed to be fun, aren’t they? How much fun is working with crappy code?
(2) If you open the back log and nothing there, it is either of the two: a) you are done or b) you got to do planning, and this is your task for 15 minutes.
(3) Get a habit of putting the date on any funky scrawls you scribble. Date you damn napkins! Later then you stare at them, the date helps you recall what were you smoking when writing it.
Labels: ajile, project management, startup