Balancing Personal and Professional Development Projects
A few months ago, I decided to start developing my first iPhone game, Little Devil, alongside my full time job as a Web Developer in Central London. I didn’t have much experience with Objective C or iPhone development so I knew that it was going to be quite a daunting task. Alongside this I have a girlfriend & a relatively good social life, all of which contributed to the issues with developing something difficult in my spare time.
Now, 5 months later, I’ve learnt quite a bit on how to balance my professional, social and development life and here are a few tips/pointers for anyone wanting to do the same.
Prepare Your Code
A clean, organised codebase allows you to be able to jump in and out quickly. Remember as you develop, to comment any areas that are complex because if you want to be able to develop during your 30 minute lunch break, you don’t want to waste that time figuring out what functionLongNameDoesThis(); actually does.
Keeping your code modular, following a Component or MVC model, will allow you to work on only the areas you have time to work on, with the security of knowing that any changes you do won’t have a damaging effect on the entire project. This is especially important if you are planning on opening up your code to multiple people to work on or going open source.
On the topic of multiple contributors to a project; it helped me to have my code under the version control system, GIT. Combined with a CodebaseHQ account, this allowed me to push and pull the code from many different devices. Had I been working with a team on this project, we would have been able to work in small bursts on our own areas without the risk of overwriting each others work. For a free alternative to CodebaseHQ, try Github. Each of these systems comes with robust ticketing systems which allow you to list out tasks, bug reports and to-dos.
As I developed Little Devil, I realised that to be able and want to work on it in the evenings, I had to split out the larger jobs into many smaller tasks. This made the development process a lot less daunting, taking a large such as “Implement Powerups” and turning them into procedural, bite-size steps (ie – create class, add methods, do graphics…). This also helped in making the entire task feel more achievable in my few free hours in the evenings.
Use Your Commute
As I mentioned before, I work in Central London however I live about 1 hour away on the tube, which gives me a good 2 hour period of my day where I am on my own, in my own little world (usually miserable looking with headphones shoved in my ears).
When I first started developing Little Devil, I used the commute time to watch video tutorials & podcasts. As I progressed in my knowledge and my project requirements changed, I spent the time typing out notes, jotting down ideas and doodling on pieces of paper.
The message here is that you can turn your daily commute into a productive few hours of your day. Use it to your advantage.
Find Your Zen
I am a very distracted person. When I’m comfortable at home, this distraction increases ten-fold. Whenever I sit down to code, it takes me around an hour to be able to get into “the zone”. Once I hit this zone, my best coding comes out and I fly through tasks. The important and most difficult part of this is the lead up to “the zone”.
For me, my zen was created by putting headphones on (to the annoyance of my other half) and attempting to code for an hour. Find out whatever works for you, whether it is your favourite album, a quiet room or even surrounded by friends giving input. Once you get into the zone, you’ll see your task list get smaller, quicker.
Keep Up The Day Job
Probably the most important thing about balancing your personal and professional projects is to ensure that your main job is stable and that you are not getting too distracted by your fun, new project. Always remember which of the projects pays the bills and puts food on the table.
This is not just to make sure you don’t get fired. It is also to make sure that when you find yourself able to code you aren’t distracted about your main job, worried about clients or deadlines.
You need to make sure that when you get into the zone, nothing is going to drag you back down to the real world.
Stop Developing!
The worst thing that can happen to a personal project is that you burn out. This will happen, no matter how interesting the project seems at the start. Once you compile, build or run the project and find 100+ bugs, you’ll want to just throw it away and start a new project.
To avoid this, make sure you aren’t running out of steam. Don’t code all the time and don’t fall into the trap of developing in every spare moment. Don’t feel guilty for forgetting about the project for a week or two and play the latest games or watch some junk TV.
Finally, make sure you are not forgetting your friends, family, peers and bosses. Eventually the project will be finished and these are the people that you’ll want to show off your hard work to.
Good Luck Out There
I hope these tips help you to finish your projects without turning your life into a nightmare of 24/7 coding.
If you enjoyed this post, why not subscribe to my feed or check me out on Twitter.
No related posts.
Leave a comment
I finally read it! And even though you make me out to be the demanding, distracting other half, I love this post! Just remember who did your graphics, eh?! x
Lauhug
April 19, 2011
Great document. I don’t normally post comments on blogs, that’s how much I like this document.
(BTW, I found your site via a google search for iphone app collision detection).
Frazzled Penguin
May 3, 2011
Thanks, I hope it helps you out
Andy G
May 4, 2011