Motivation.
I finally manage to find myself a laptop to use, and a copy of a compiler to code with. Then I install everything and test that they work. Then I arrange myself some time from my schedule so I can code a bit. Sitting in front of the computer I start thinking -- what should I code? I know, an oldskool scroller. I start typing in code, starting some simple font routines. Then at some point I find out that when I try to open an existing file with fopen(), the fopen call always fails. There is no obvious reason why this should be, and when I try the same code in another project, it works fine. This is just the kind of thing to kill your motivation instantly. Hunting down a bug that is obviously a direct spawn of satan is not my idea of fun. So I start to read Hugi, play some Indiana Jones and then start the IDE again. When I again ponder what I should code, I realize that there are two types of things that can be done:
1. Something simple that can be coded fast. Such things are plasma and the fire effect, those can be coded in 15 minutes. But then again, I've done those before and there really is no reason to do them again.
2. Something quite neat. However, the work needed to do anything neater than a plasma effect quickly gets much bigger and I haven't built up enough motivation to commit for one project for a long time.
Coding in your free time is a bit difficult motivation-wise. You can try to code for fun, but it won't be fun all the time. And when it's not fun, you get the urge to give up. It also feels stupid when you have to recode something you've done before, just because you coded it at work so you're not allowed to use it in projects outside of work. Or just don't happen to have a copy of the source code you did before on your harddisk.
When you code stuff at work, it's different. It's amazing what a feeling of security can provide. You have signed a contract to do a piece of software and YOU KNOW you'll have time to finish it. You don't have to worry about arranging the time to continue on the project, you can continue it every day. Also since you're positive you'll be using the same code for perhaps years, you'll feel more motivated to design the program properly and make clean commented code. What's more you'll have a bunch of nice reusable routines you coded before for another project.
This article was written because I once again had my share of coder's block. Luckily I didn't suffer from writer's block and this whole article could be written much quicker than I could have debugged the stupid fopen problem, or coded anything of any significance. At work battling stupid problems isn't that much more fun, but it's easier since you HAVE TO solve them and know you can't get around them. At home you'll rather start doing something else than spend days on some stupid little problem. This leads to my harddisk being full of projects that have been discontinued.
It would be nice to hear how you other folks manage to gather up enough motivation to actually code a demo instead of just watching other demos and reading Hugi. Maybe you just have more time in your hands than I have. Or maybe you are ultra talented and never encounter any stupid problems that would eat your motivation. You'll code up a 3D engine from scratch in one sitting and know every equation from AART by heart.
Too much motivation can become frustration. Looking at demos and games and thinking "I want to do that" and then realizing how much work it would be. I guess I'm just unable to code anything without signing a contract.