- Things you are paid to do
- Things you do because you want (need) to use the end-product
- Things you do because you think doing it would be rather nifty
The first one is easy. You go in, you do what your boss tells you to do, and you go home. It's a good idea to enjoy most of what you do when you're at work, but when it gets dull or repetitive, you can always fall back on the fact that at the end of the day, you get a nice pay-cheque.
Category two is easy as well. If you're motivated to do something because there's some reward in the end-result, you keep going for as long as the reward justifies the effort. An example of something I did in the second category was OurPlace. I wanted my website to be able to do certain things that couldn't be done by the regular free Perl wiki engine, and I didn't really want to be reliant on anyone elses code since they all tended to rely on annoying things like relational databases. ("Find the dependencies -- and eliminate them." When you're working on a really, really good team with great programmers, everybody else's code, frankly, is bug-infested garbage, and nobody else knows how to ship on time. -- Joel Spolsky) So in a couple of weekends of hacking, I had my own wiki engine. When I needed to totally rewrite the parser because it was too hard to add new markup tags, I took another weekend to rewrite it.
It's category three that's the problem. This is how 90% of my personal projects start, and how 100% of that 90% finish. I get a neat idea, and I start thinking "Now, how would I do this?" It's that thought I can't get out of my head. I don't really want the program, I just want to know that I can do it. My head is filled with ideas of how the various bits would work, how it would fit together, what it would look like and so on, and I need to write code just to get all that out of my head.
The thing is, I reach a point where I've written enough, worked out enough that the nagging voices get a lot quieter. Eventually, it gets quiet enough that my natural inertia overcomes it. The little voice that says "You'd much rather turn your brain off and watch those idiots on Temptation Island" ends up being louder than the voice that says "You remember that really nifty Content Management System idea you had?"
So I accumulate unfinished programs, like the line of seaweed on the beach. The wave of enthusiasm throws them onto the sand, the tide recedes and they're left to rot.
Unfortunately, the nagging voice hasn't gone. It's just quieter than the other voices. Every project is a little thing in the back of my skull saying "You haven't finished me yet! And you told me I was so cool! You bastard!" Perhaps I need an exorcist?