Developing a reasonably sized application like Mocking Pad for the iPad while working a full time job really made me think about ways to maximise my productivity and focus and as a couple of people have asked me how I did it I thought it might be worth sharing some of the things I learned over the last 5 months.
1. What are you willing to give up?
Take a long hard honest look at your day and figure out whats really important to you. Of the many things I enjoy and do I quickly came to the conclusion there were only two things I wasn’t prepared to give up. They really were standouts. One was software development, the other was weight training. If you can’t narrow down your list to something that includes the kind of work you need to do – forget it, you won’t get it done.
I’ve not discarded my other interests permanently, and will no doubt return to them some day, but I wanted to build Mocking Pad and that required certain sacrifices. Though in truth I no longer see them as sacrifices – I wouldn’t give up the pride and joy I feel at having completed Mocking Pad for the world.
2. You have more time than you think.
Do you really need an hours lunch break? Or can you get by with 15 or 30 minutes? Carry your laptop with you (or whatever tools you need, assuming they are portable) and use this time. I generally get a solid 45 minutes work on Mocking Pad done every lunchtime.
How about after work? Do you wait for a car share colleague? Do you commute by public transport? I don’t do either but I do have regular appointments with a personal trainer 3 evenings a week which starts about an hour after my work ends. I manage to squeeze 30 minutes in here.
3. Get agile. Really agile.
If you’ve got a set of 30 minute and 1 hour windows then think about what you can best do in that time. Try and pick things you have a shot at completing – small features, refinements and bug fixes are my usual choice. I treat these as tiny sprints.
In the same way your weekends are the time to plan for “big” (2 day!) sprints. Get your big tasks done then but again pick things you can achieve in the time you have available.
If you plan your sprints well you’ll feel like you’re accomplishing things and moving forward at a heck of a clip. Its all about keeping up momentum.
4. You need your downtime.
The aim is to build something useful, not kill yourself. Right? And if, like me, you’ve got a full time development job then your employers are not paying you to turn up work exhausted and burned out – I think it is bang out of order to short change your employer, or other contractual agreements you might have, in this way. Therefore getting some downtime is essential.
I class downtime in two forms: rest and active. Rest is sleep. Everybody needs a certain amount of sleep, for me it is between 6 and 7 hours but it varies for everyone. Unless you’re one of the lucky people who can fall asleep at the drop of a hat then you also need time to mentally unload. I certainly do and have a rule to help me with this: no coding after 21:00. No matter what. After this time I sometimes blog but usually I read.
Active rest I think of as being mentally or physically active but not using the same part of your brain you use for software development (or whatever it is you are doing). I also believe that if what you’re doing is essentially mental, like software development, then you should do something physical. And vice versa. I weight train, which I find to be perfect – I’m concentrating so hard on my technique and pushing myself through the sets that I simply have no room in my head to think about code and complex problem solving and so when I’m done I feel physically tired but mentally refreshed.
5. You don’t always need to push through the wall.
Like a marathon runner chances are that at some point, no matter how passionate you are about the project, you’re going to hit the wall. The point where the task feels so large that you can’t carry on. Or where you’re just “not in the mood”. Eight times out of ten you do need to push through this and you can and will, but sometimes you can push and push and you know nothing productive is happening. At that point give up for the day. Quit and enjoy some active rest. But come back tomorrow. When this happens to me I give myself 2 hours – if I’m not in the zone and fighting like hell after 2 hours then I quit for the day with no guilt but I always, always, come back the next day.
I hope some of the above is useful and relevant to you. It might not all apply – everyone is different. I’d love to hear your own productivity tips too – leave a comment!