So you have this great idea for the next killer app, don't you?
As you begin to write the code, millions of details start to obfuscate your mind. This should be done in this way, that function must be splitted in two, the UI needs some improvement, etc.
As the project goes on, many other ideas on how to make your app better come to your mind. And, for each one, you think that if you don't implement it, your app will be just an average app. So it ends that your application will never be completed and never be available to anyone. And, you know, this is not good for a killer app.
What you have to do is to stop adding features. Does your application cover only 10% of what is in your mind? Don't bother: make sure that 10% is working fine and then publish it. After that you can start working on other features in order to publish the release 1.1 which will implement 15% or maybe 20% of the original idea. And then 1.2 and 2.0 and so on.
In the meantime, you will receive some feedback from the users that will help you to refine your original idea - or to change it dramatically. And this will lead you to write a *better application - even if probably not the best.
Because you always have to remember that
Image created with pinstamatic.com