• Click here for a list of all my projects.
  • Click here for Touchlib info. Source code here.
  • Click here for our multitouch community site.

Saturday, March 08, 2008

Staying motivated on large hobby coding projects

  1. First, evaluate whether this project really is something you want to do. Here are some questions you may want to answer: What will you get out of it? Possible benefits include: money, experience, recognition and the joy of a job well done. Or it could just be a tool you hope to use. Are you doing this for yourself or for other people? Visualizing the end goal is a good first step.
  2. How long will it take and how much time can you commit to it? Even a small project will take a few months. However, you don't have to worry about tackling it all at once. With Genome, I try to put in a half an hour before I go to work every day, which usually allows me to tackle one small item from my todo list. It's huge project but I am making steady progress. Which brings us to #3...
  3. Set small, easily achievable goals. Big projects are made of thousands of very small steps. Whenever I start a new project I set the bar very low. Step one is always to get something compiled and up on the screen that I can see. I don't start out trying to write a huge chunk of code.
  4. Work on whatever interests you. If you are stuck on something, work on something else or some other part of the code. Don't feel like programming? Organize your todo list, work on your website for the project, or brainstorm. That way you are always getting something done. If you feel stuck and stop working on it, there's a better chance that you'll abandon the project.
  5. Make coding an enjoyable experience. I like to put on some music, get a nice cup of coffee and crank on some code. If you find yourself getting frustrated with bugs or your slow progress then it's time for some introspection and self reflection. Where does your sense of urgency come from? It may be that you are telling yourself that you should be further along than you are or 'I'm stupid, I can't figure this out' or other such things. These thoughts aren't really productive. The only way to overcome obstacles is to put fourth a steady effort. Instead of feeling down or complaining, try to focus on "What can I try next? Where can I find the resources I need?". Bugs are part of the process, part of the challenge, and part of what makes the task rewarding.
  6. Take breaks, do other stuff.
  7. Celebrate your progress and successes. I like to write what I've accomplished in this blog to help motivate me.
  8. Be organized. I like to use Mindmapping software such as Freemind to brainstorm, diagram my code, and also keep track of my todo's. It's easy to drag things around so I can prioritize and reorganize if necessary. Things that I want to look at soon I give a bigger / bolder font, things that I don't want to pay any attention to yet I shrink down or hide in sub categories.
  9. Deal with one thing at a time. Trying to think about everything that needs to be done will make you crazy. The human brain can only hold a few variables at once.
  10. Use lists to help unload things from your brain. As soon as you think of something that needs to be done, write it down, that way you don't have to stress about it.