Aiming for perfection wouldn't have delivered the product any sooner, of course.
Zero defects is something worth striving for at the lower levels of a product, stuff that is heavily reused by higher architectural layers. When you can have breakage at any level of the stack, engineers need to have too much context in their heads to correctly detect and resolve issues. In the worst case, they make local fixes that don't address the underlying problem, which turns into scar tissue that can make the underlying problem harder to resolve, besides damaging the codebase.
That was hung on the door to the office of the DBA at my last job.
One day, we had a catastrophic loss of data due to a junior developer running a destructive script against the production server instead of the test server. We went to restore the database only to discover the hourly snapshots had been failing for months and he hadn't noticed
Zero defects is something worth striving for at the lower levels of a product, stuff that is heavily reused by higher architectural layers. When you can have breakage at any level of the stack, engineers need to have too much context in their heads to correctly detect and resolve issues. In the worst case, they make local fixes that don't address the underlying problem, which turns into scar tissue that can make the underlying problem harder to resolve, besides damaging the codebase.