It's because many hobby programmers don't see any immediate results when they start coding,
so they lose interest after a couple of days. As with all the programs the beginning is a difficult but important
part because the foundation has to be made to create a solid project.
Some people set their goals too high (including myself, sometimes). It's good to take on a challenge
and to do something you didn't do before, however doing it like this has devastating effects on the mood
and will result in abandonment of the project.
It's more important for an individual to see results to keep yourself motivated.
Maybe the SCRUM process could be something interesting for you to check out (just the idea, not necessarily the process).
Basically, you decide what application to build and you create a catalog of a couple of features you'd like to implement.
You sort them after importance / priority and then you start coding and implement feature after feature.
For example if you want to create a game, a feature list might be this:
- Write basic initialization code (inits, open screen, main loop, ...).
- Create structures to keep track of game characters.
- Display the player's character and implement basic movement using the keyboard.
- Create a tile map system.
- Add first weapon for the player and implement shots.
- Create enemies and implement a way for the player to kill them.
- Implement collisions.
- Implement player animation.
- Implement enemy animation.
- Play sounds when the player attacks or gets hit.
- ...
You see, all of these features are very simple and straight forward and they can be implemented
one by one. Keep it simple! Of course this idea requires the developer to re-write certain code parts,
but that's not really a problem. A software project can't be planned out in the very beginning, things
are always going to change as problems and difficulties cannot be foreseen.
The whole idea of this approach is to be able to "show something", even if it only is to yourself.
This motivates a lot, believe me. As a hobby developer you don't really have time pressure anyway,
so take your time and keep working.
Of course you can (and should) release your software early, for example here on the forums.
It doesn't matter if it's far from finished. You only implemented a couple of features and the game
isn't really playable yet? Whatever, release it anyway. People will test it and give feedback and
you might as well raise some interest. This also gives you additional motivation if you see that people
are interested in your project.
