Evan Williams posts his list of rules for web startups here. These rules aren't just for startups though, they should be taken as general guidelines for building any sort of software.

Almost every software project, from a small feature addition to an existing product, to an entirely new idea, should be run with these same basic ideas. I can't understand people who still want to drop a big bang on the world with their projects. Rule #9, unless you're building pacemaker software, should be applied to all attempts at software creation. I've yet to come across a software project where anyone involved really know what they want at the start.

So don't spend time trying to cram everything in the world in to your software, just get it out the door, get some users on it, watch how they use it, and start refining. No one knows for sure how users will use their software until we actually put it in front of them. The rest of the rules will make sure that it gets where it needs to go from there.