First off, I'd like to mention a great source of tips on Getting Things Done is from Lifehacker, I've learned a ton of tricks from there to use on my projects and personal stuff. Also, Vince on the Tiebreaker blog made a great post recently on staying motivated on a part-time project and his list closely mirrors my own. Just more proof that these tips work!
Here are my personal tips to finishing a project:
Work on something you can finishThis should probably go without saying but seeing as it was one of the number one reasons I failed to finishing I guess it does require mentioning. So how can you tell your great idea is one that you can finish? Estimate how long you think it will take to finish. Make sure you put some good thought into this estimate. My mistake when first did estimating was that I tried to estimate how long the entire project would take. As many of us in development know, estimating something that big is like taking a wild guess. So break up your project into major milestones and estimate each of those separately. Its especially important that if you're learning a new technology, engine or framework that you factor that in the estimate too. Also, its difficult to estimate how long things will take doing it part-time, when most of us are used to estimating full-time work. So estimate as if you were doing it full-time, then break up those hours into how much hours you think you'll be able to do in a week (aim on the low side, for those times when need to get caught up on a season of Game of Thrones and you don't get any work done)
Find a partner (or two)
This is a common tip but it really does work. My own personal spin is to make sure your partner's are as dedicated or preferably more dedicated than you are, because if you're both too lazy no one does any work!
Celebrate the milestonesThis is important, because hey, celebrating is awesome! But is also gives you a sense of accomplishment and that feeling that you are getting closer to the end. And that's important when you still have a long way to go.
Don't stop workingThe number two reason I kept failing at my projects is that I'd go for long periods without working, which resulted in a loss of interest or a loss of momentum which was hard to gain back. To remedy this, I commit myself to completing some tasks every two weeks (more on this below). The key word is commit, not aim. It's easier to start small to ensure you meet your commitment, then gradually you can commit to more. But don't ever stop the work cycle.
Have a processNot a must have, but I find having a process that works helps things get done easier because when things are repeatable and predictable, you settle in to a nice work rhythm that just keeps going and going. I use a agile-like process with my team of two week iterations. At the beginning of each iteration, we plan the work items we are going to commit to, and at the end of the iteration we go over what we completed. Lather rinse and repeat!
I'll go over our process in Part Two.