In the case of software development what I have experienced in just about every project I have ever worked on is that it also relates to the amount of time it takes to get something done.
As you get to the last few features of a particular product there somehow becomes more things to work on and finish that get added on. For my iPhone game that I’m currently developing it has been functionally complete for several weeks now. A big part of the work was getting the game engine working, getting a collision detection function that worked well, adding all the menus, graphics, and music. All the major components are in place and it comes down to game play tweaks and subtle improvements.
Somehow there is never an end to the amount of things that can be improved. And so it starts taking up more and more time. the last 20% of a project takes roughly 80% of the development time. It’s something to expect, plan for, and in my opinion try to cut in half.
The ethos of the lean start up is to fail fast by testing early and often. When it comes to this last 20% of the work I’m attempting to cut it in half. There may come a time when I have all the time in the world to work on something until it is perfect. I’m not there yet. So corners have to be cut and the first and easiest thing to cut out is the least valuable stuff that takes the most time, energy and effort.
Shipping something is the most important part of the whole endeavor. Take a look at your last 20% of work and decide what’s really necessary and what is just a nice to have enhancement. Cut out the nice to haves and ship sooner. Then gauge the next steps from customer feedback. With the App Store, it’s always possible to publish an update.