I've had to follow behind such programmers who wrote their code with the primary goal of getting done as fast as possible never expecting to have to come back to it. It's literally the worst code that exists.
Usually they no longer work at the same place they created such code, because later they were asked to maintain it. That's why I got the job. Usually we start over.
If you miss deadlines then you are failing at your job.
I don't necessarily think that it's the "biggest" but I'll agree it's certainly one of the problems. I think I'd put "unclear specifications" as the biggest problem.
I've seen a lot of code delivered on time to meet the deadline that clearly was not ready but was delivered anyway. I've never the temerity to say, "I told you so," but I thought it. There's a balance to be had. Sometimes the deadline and the customer requirements and future maintainability cannot all be satisfied. Something has to give.
Sounds like they were bad at that part