customers very rarely have budget for the time it takes to produce well engineered code

And thus they end up paying even more for badly engineered code