First of all, business only cares about the $ being spent right now. Because there is no ability to track the cost to fix an error found in the future to decisions made today there is no incentive to think about long term costs other than immediate labor costs.
And there's this crazy idea that more programmers means the work will get done sooner. So if you can get 2 or 3 junior programmers working for the cost of 1 veteran, the spreadsheet says the work will get done sooner (I am not advocating it does).
Then there's our colleges. They teach a language, and all its logic constructs, but they do not teach practical application of those principles. And they do definitely do not work with real life examples (I remember someone taking a programming class taught by an accountant and given code that was not even written in correct syntax that would compile).
It's very frustrating.