I’m willing to bet that in almost all cases the first versions of software, released for use, are never as ready as they should be. In fact I am saying software released for use for the very first time is the very first draft.
Of course it’s sometimes called “production ready”. And in some cases it’s called “beta” to sorta advertise the fact that it’s just not that good. In all cases however, the code that goes to users for the very first time never survives. Ever. It’s always re-written. So why is there so much stress and pressure for absolute perfection?
Developers and Engineers will often not release software at all until they feel it holds a certain level of perfection. It has to have all the features and qualities that they perceive to be required, before anyone should ever see it. Companies will drive teams to late-night sessions or over-time hours to eek out that last bug before releasing software. But why?
Software is always re-written. Bugs always exist. Or as is most often the case: things change that force a change to software. Engineering teams should start from the beginning with a culture of “re-write”. It would make work environments so much easier if teams just had this attitude to begin with.
I often say:
There are robots on Mars. We can do anything.
And those robots on Mars get their software updated all the time. Why can’t we do the same for all software?