Focus on only one project at a time:
Having a full time job, family, and other responsibility leaves me with minimal time for personal projects. Dividing my limited free time between multiple projects results not only in less time for each project, it also decreases my focus and problem solving capabilities as I become spread too thin. If you are spending mental cycles on multiple projects it’s harder to deeply think about a particular problem you’re trying to solve.
Work on your personal project before anything else:
The first thing I do in the morning is work on my personal project. I don’t check Twitter. I don’t read email. I don’t browse the Internet. Besides eating breakfast the very first thing I do is work on a personal project. Because I have a regular job with normal business hours I get up as early at 5 am and put in 2 to 3 hours before I go into the office. This usually means I have to stay a little later at the office but it is worth it to me as I find I’m extremely focused when I first wake up.
Set aside large blocks of time:
About 75% of the work for my personal projects is completed during large extended blocks of uninterrupted time, typically on the weekends or during extended vacations. It takes me a decent amount of time to get back up to speed on a project but once I get going I really start to make large dents on projects. In Computer Science terms I would call this the context switching penalty. Try to clear out your calendar on the weekends and let everyone know, including your family, that you are busy working and should not be interrupted.
Ship as soon as possible:
Public scrutiny is a huge motivational force. I try to get the first version of a project, the MVP, out as soon as possible. Once it’s public your name and reputation is at stake which I find is a huge motivation to continue working on the project. A secondary benefit I get is tons of feedback which tends to either validate my idea or help me morph it into a better idea.
Befriend inspiring people:
Many of my friends and coworkers have cool side projects and do interesting things with their free time. I want to be like them. Friends that don’t force me to grow tend to see less and less of me. Spending time with people that have accomplished similar things to what I want to accomplish has a powerful effect on me. I also find that people love talking about their projects which serves as amazing learning opportunities.
You have to make sacrifices:
There simply isn’t enough time in a day to do everything I want. You have to be willing to make sacrifices in order to free up enough time to make measurable progress on your personal projects. When I’m in the middle of a project my social life suffers, I spend less time then I would like with my wife, I don’t exercise as much, I don’t watch television, and I give up my hobbies (surfing, snowboarding, mountain biking). Fortunately for me, my wife is understanding and has several hobbies and projects that keep her just as busy.
You have to be passionate about the project:
Everything I said means nothing if you don’t have a true passion for the project. You can’t just work on projects for the sake of it.