Seems to be the way these days:
(A) modern project management - too many people disconnected from the whole, too many people making executive decisions who don't understand software development, often a rigid schedule that means once one part has been committed there is a lack of flexibility to perfect it or sort little issues, etc. unless a major show stopping bug is found combined with only listening to user feedback that fits what the developer wants to hear.
(B) Too many career programmers with limited ability to step off the established path they've been taught and little pride in their work or willingness to really make code robust, etc. as long as it mostly sort of works as intended that is as much as many seem to care these days.
There is an element of making sure things keep moving along i.e. it is very easy to get so bogged down in over-perfecting one part of a project it seriously delays or stalls the whole thing but still.
EDIT: Reminds me of a job a few years back - I got so fed up with the archaic, with a lot of manual re-entry way we were moving data between two systems that was costing vast amounts of money due to the time, inefficiency and inaccuracies involved that I coded a proof of concept in an afternoon which was like 90% actual functional - but obviously you can't put something like that into a live production environment without proper qualification, testing and documentation, etc. more than 6 months and a 6 figure sum (some was on updating hardware mind) later the external IT provider produced a system that was less functional and far more buggy than what I'd thrown together in a few hours