I am familiar with the concept of agile development and the ideology of releasing the product and then based on the market feedback perfecting it. I was wondering at what point do you stop the development and release the product to the market and then perfect it based on the market feedback.
Product Launch Product Release
Customers do not want to buy software. They want to buy a solution to their problem. Does your software solve their problem? When your software solves their problem it is ready for release. It can always be improved at a later date, but you need to solve their problem in order to get the customer to part with their money.
There are many discussions on the MVP (minimum viable product) discussion. So you have a solution to throw out there to get feedback from. The main issue in the product development life cycle that a startup doesn't have is customer feedback on what they value. The MVP is the concept of getting something out there so you can get feedback to know your heading down the right direction.
I'm having some of the same questions and difficulty your having. Here is a link to a blog that gave me some feel of how complete should your product be prior to launching.
http://www.ashmaurya.com/2009/10/how-i-built-my-minimum-viable-product/ Good Luck
Hopefully you've had some market feedback before you started development. Gary E is correct in saying when you've solved their problem you should be able to release it to them. I would add that when you can start selling it, you should release it.
You also have to be careful in managing the level of expectations users will have for your product. If there is a section you don't feel you were able to test enough or haven't received a lot of feedback, mention that. Let them know you need some help and then follow through with the improvement.
The product is never perfect, it is a process.
I recently asked myself the same question and decided that I have to limit features to only those that make all basic operation possible. Things that can be done with some "workaround" I removed from the feature list.
I also decided that there have to be a minimum set of quality tests that the product have to pass. And that's it. This is the stopping point for the first release.
I am still far-away from it actually :)
I have to agree with much of what John said about Minimum Viable (or valid) Product (MVP). It's important to understand the minimum that you need for your product to be successful. And remember that success is truly defined by your market, not by you.
That being said, I go with the philosophy that getting something out there sooner is better than getting something great out much later. With ArgyleSocial.com we released a product that was a bit short of MVP to a select group of alpha users. We set the expectation that it was missing some important features and would be a bit buggy - but we sold them on the product vision and our commitment to making them successful with it.
So although the product wasn't really at the MVP level, we got people using it and got amazing feedback. That was so much better than spinning our wheels on what we thought was important to MVP, but was more important in our heads rather than our customers'.
I didn't want to add another answer here because John Bogrand nailed it! However with anything development related, I suggest you read either Getting Real or Rework by 37signals. They have really good development philosophy.
1) Get anything out
2) Get advice
3) Iterate your software (doesn't matter what demand there's, don't add the feature they want if it conflicts w/ your vision of your service/app)
The point is to get something related to your application out. Something that matches your app's goal. An example would be an application that generates forms. You just worry about that feature and what it needs to function. Anything extra doesn't need to be added, something like Gravatar, Live stars or w/e does not need to be added. If your customers NEED it, they will literally ANNOY you for it! until then..
1) Push anything out
2) Get Advice
3) Iterate