Trying to get motivated
There are two perpetual struggles that seem of wage in my brain these days.
1.) How to get motivated
2.) How to stay motivated
In my professional life it is easy. I have a large number of problems that need solving, I have the freedom to explore any set of tools that might be useful. I then go about getting a thing functional enough to ship, and then hand it off to others to finish. That's my job, get the hard bits done, document the next steps, and then hand off to teams who are responsible for "operationalizing" it.
On my side projects this is much harder. When things work out it goes like this:
1.) write a solution in a week or two
2.) open source it and announce it
3.) pray someone finds it useful enough to pick it up and run with it.
4.) profit from the contribution of others
But most projects tend to work like this:
1.) start it, spend a few days on it, get interrupted by life
2.) return to the project but fail to remember the initial impulse
3.) let it sit on a machine for 1-3 years
4.) dust it off, update it, and get interrupted again
These side projects are often beautiful, well crafted, and quite frankly experimental. There is generally not a lot of call for a solution to a problem most people don't even realize they have. Many of these projects are not so much ahead of their time, just not suitable for popular consumption.
Other projects are more amenable to becoming popular, but without any effort taken to raise awareness, they tend to languish in obscurity. These are often projects started to address an issue I found while doing a contract, but couldn't find a business model to support. These are the most depressing to work on because they are practical and valuable.
Some projects never get to the started point. It is not because there isn't a desire to work on it. But there aren't enough hours available to ensure headway. For these projects, I have recently attempted to bundle activities. Rather than work on one project, I am trying to blend two or more projects together. For example, I have had the idea for a game for a few years now, and rather than write it in a language I already know, I am bundling it with a project to build a new programming language, and another project to build an interactive collaborative development environment. 3 large projects all rolled into one meta project. To keep motivation alive, and get productive work on each subproject, the bundling forces work with a concerted goal. When there are only 5-10 hours available a week, each small gain has a measurable benefit. And that helps maintain motivation.
Probably the least appreciated method I've found for not burning out on a side project is not setting deadlines. It may seem contrary to everything you know, but setting a deadline makes the project less fun. Less fun means less motivation to work on it when compared to other tasks that are fun. Since we're talking about free time, there is a trade off between getting things done and not doing them at all. There is no "I can do it tomorrow" because you can always do it tomorrow. Using that rationale, you'll always do it tomorrow, and tomorrow, and tomorrow. Setting a I will get this done by X milestone won't work because you don't have to do it in the first place. I've felt that need time and again and those project never get past day 2. I have projects I've worked on consistently for 14 years, they will never be "done", but I usually have several stable releases a year. Just because it is not done does not mean it is not useful and fun!
The final bit of staying motivated I've learned is to not worry about results. Results are not the point, fun is the point. If the process is enjoyable, you'll keep at it, stay motivated, and eventually when circumstances permit, succeed. Doing a little bit every so often will produce unusual results. You won't have a consistent output, and will find yourself spending more time rewriting and rethinking than forging new ground. It is because each time you return you will see it differently. You will find old models of thought less useful, and new models will take their place. You will also see mistakes that weren't obvious last time. Progress can not be measured by the distance covered, but by the number of times you've revisited an idea and not found a sufficent reason to rethink it.
Like most infinite games, success is measured by your ability to keep playing. Finishing a level, producing a release, getting something published are all nice milestones, but they are largely meaningless. If you release and it stops being fun so you quit; you've failed. The best projects keep being fun long after you'll given them away. As long as you keep playing and having fun; you win.