Perfectionism is a very good quality and can bring you far in life, can make you successful and appreciative by your boss, customers and colleagues alike.
But “over perfectionism” could make your life miserable. Just imagine that you could not leave your house without having your house all cleaned up. By the time you are finished with cleaning, the dust would have settled in again. If you have kids, then just ask your wife (or any mother in this regard) how frustrating house cleaning is!
As the above can be applied to life it can be applied to software development. Most of the software developers I know suffer from the disease of perfectionism in software development (myself included).
You don’t think you suffer this disease? Well then ask yourself when will your application be ready to ship or when will you let your customers take the first look at your project? Are you ready to ship your application, with the knowledge that some things are not done to your full satisfaction?
What can we do about this disease? Frankly said, “Just ship the damn thing (application)”. As always in software development, feature “A” or feature “B” will always make your application better and nicer and “can’t be without it”, but all what your customers (and your marketing team) want is to start working and using (and cashing in) your application.
I will bet with you, if you start living with compromises in your application, you will have a much less “stressful development life”, a happier boss and marketing team and a higher quality life.
This is by no means to say, that we should ship applications with bugs or with lesser quality, but I am sure that “the next big feature” which “definitely has to be in this release” can wait until next release.
So, finish up your code, test it and when ready “Ship the damn thing”!