Here is the summary of tools that I find essential for doing software project :
- Version Control System : Subversion
- Roadmap, Issue/Bug Tracker : Trac
- Iteration, Schedule, Progress Tracking : XPlanner
Experimental and small program would have only several issues to develop, a small time window to manage ( "let's just get this work and see what happen, we'll think about what to do with it later" ), a little constraint to fulfill and balance. Our brain could handle that amount, maybe with a help of a text file/spreadsheet or two. However, production-level software would explode your brain if you try to manage it all in your head (or at least only left so small amount of space that is unusable for effectively coding anything).
Those tools helps the teams to
- Focus on the now (Progress Tracker) without loosing touch of the past (Version Control System) or worry about tomorrow (Roadmap, Issue/BugTracker).
- Focus on the work at hand without loosing touch of the big picture.
- Separate committed issues with the pool of incoming one without which there will be no milestone/releases/versioning ("let's start from scratch straight to version 5.0!") which a sure recipe for starting a soon-to-be-abandoned project.
Having past beyond code samples and toy-problem, and when it times to get something worth-talking built, it's time to roll-up some tools to help us achieve it, version by version.