Me and a friend sat down to discuss projects we’ve actually managed to finish, and not just start and drop.
We’re both notorious start-from-scratchers, jumping from project to project, never really finishing anything, just going from passion to passion. (I hope you don’t mind me saying so, you-know-who-you-are!)
Anyway, this time we just sat down and tried to understand why the very few projects we really DID finish actually reached that level of completeless.
First off, let’s assume “finished” mean that someone else than ourselves actually found it useful to use the software.
So here’s what we arrived at, served in a short bullet list for you to pick up!
- README.TXT: Before the first line of code is written, sit down and type a README.TXT. This should be on the level of a general user being able to read the text, and understand what the rules of the game (yes, 80% of all the projects have been games of different kinds) are. Think of the short and succinct style used to write down rules of board games.
- PILOT.TXT: Write down a PILOT.TXT file. This should be more technically oriented, discussing technological considerations, and make scope reductions as much as possible–think economics–to make a “first version” or “pilot”/”prototype” fly. So a vision of how to achieve a “demo” version of the project. Important is to not be tempted to add all the “nice to have” features here: some cool algorithm to improve the visuals, or some new language/platform (suddenly starting to use another OS or programming language is a good way to fail a project). It is OK if one of those “config variables” is something you’re not used to (maybe a new library? or a new style/pattern of programming?), but not two or more!
- FEEDBACK: A way of getting feedback for inspiration is not strictly necessary (we’ve both finished projects without), but is a really good motivator. E.g. a simple blog, or posting & getting comments on progress on Facebook/Twitter/pick-your-fancy. Maybe just mailing your best friend status updates and screenshots…? Very cheap method. This bullet is essential if you want high quality from the start!
The good thing is, if this first iteration happens, the project already got legs and will happen almost by itself, because of the feedback it will generate.