Ayende (he gets upset when I refer to him as Oren) recently posted on his blog an opinion that I doubt many of my readers will disagree with. Someone bemoaned that businesses perpetuate the current state of the software development industry where “just getting things done” is more important than doing it right. My thoughts are below.
This is a problem that will continue to persist as long as businesses can get "functional" code that works good enough to solve their problems.
It is very difficult to convince a businessperson that Potential value justifies extra up front costs. Even more difficult is convincing them that future savings in maintenance (which may or may not happen in their eyes) is worth the extra money it takes to hire a developer that can inject that maintainability into their application…or the extra time it takes to do that instead of "Just getting it done".
A faulty bridge is a very tangible concept, if I drive over a poorly constructed bridge it could collapse and I’ll fall 200 feet into the river below. Code that needs to be rewritten will not necessarily cause the company to collapse. When deciding where to place their budget dollars, a company will choose 9 times out of 10 to pocket the savings and incur the technical debt later over paying the costs now and realizing the savings later.
This is the same thing that causes people to swipe their credit card for an item they can’t afford and pay three to four times the cost in interest later.