What’s important isn’t so much the initial state of the software — in fact, some say if you aren’t embarrassed by v1.0 you didn’t release it early enough — but what you do after releasing the software.
Couldn’t agree more with this, and lately on some projects I’ve had to remind myself of this mantra on a daily basis. This is right in line with the “worse is better” principle ( http://en.wikipedia.org/wiki/Worse_is_better ), and since by nature software developers tend to be perfectionists, it’s often difficult to let go, realize it will never be done, and focus on the bare minimum to get the application out the door.
A commenter on this post does have a good point, namely that you shouldn’t ship it so early that your customers lose faith. So focus on the bare minimum of features that make the application usable, make sure that small set of features is rock solid, and launch the damn thing! After launch you’ll impress your users with all the cool features you add one by one, not to mention in the meantime you’re getting real feedback from real users, and before you know it you have an amazing application on your hands.