Warning: This blog entry was written two or more years ago. Therefore, it may contain broken links, out-dated or misleading content, or information that is just plain wrong. Please read on with caution.
If I was to pick my pet peeve, I would have to pick something I call the "Pollish To Infinity" syndrome.
I suspect you have encountered this yourself at least once in your working life. Basically this syndrome is when a project has met all its requirements, has been tested, proof read, reviewed etc etc but the product never actually ships because someone wants to make "one last tweak" to the code.
Why This Happens
There are many reasons why this type of situation occurs, but they all boil down to personality. Either someone lacks faith in the product/developers or somebody has so much ego that they want their product to be the best thing ever created and nothing less than perfect will do.
One other reason that is tied to ego would be that someone wants to show how much power they have by stalling a project (to show that they can) and then rush in at the 11th hour to "fix" things.
Cycle to Infinity
Whatever the reason this type of behavior leads to a cycle of continued review, change, review, change where every typo is caught and every component is placed pixel perfect only for a new phrasing of some text or an idea for a new feature to be added. These small tweaks feed back into the cycle without end.
Point of Diminishing Returns
Now don't get me wrong, having high standards is good. In fact I wish many software firms held themselves to higher standards, however there comes a point where you are not actually improving the product, you are just changing it around. From a development view this might feel great, but from a business sense it is a waste of time and money for one simple reason....
100% Perfect is a Myth
The reality is that there is no such thing as 100% perfect software. No matter how many times you look at something bugs will slip through. Further if you are of a mindset where you want to add one more neat little feature when all your requirements have already been met then you are not adding value, you are adding new potential bugs.
How To Counter This Problem
I wish I could say I had the magic pill for this problem. Unfortunately this problem is purely a human one and as no two humans are the same, so too is there no one answer to resolving this problem.
Having said that there are a few things you can do.
Recognize The Problem Early
The earlier in a projects development you can recognize this problem the better. By seeing it early you can attempt to take steps to counter it, and thus prevent it becoming a pattern. It is much easier to break a pattern early on than it is to break it once it is firmly established.
Have Good Thorough Requirements
By having thorough concise documentation you give yourself more leverage to counter scope creep. This is especially important when doing contract work with a pre-agreed cost. It is still important though from an internal company application as it can be used to clearly identify when someone's actions or goals are not inline with the successful completion of a project.
Set Deadlines And Responsibilities
By far the best way though of tackling this kind of problem is to set deadlines and Responsibilities. These deadlines should map to milestones of the project and should be considered immovable for all intents and purposes, and responsibilities should be used to limit negative influence's on the projects goals from outside parties.
Accept Reality And Keep Perspective
If after taking all these steps you still find your project being delayed by personalities and politics then I have only one last piece of advice. Accept that human nature cannot be controlled as easily as computer code and try to keep some perspective.
While a project being delayed is frustrating and difficult, at the end of the day there is more to life than work. Go outside, take a break and recognize that no matter how frustrated you are, you know that you have done your best and nobody can honestly question that.