I think this analogy nicely illustrates the short-term and long-term problems. Building the house without foundations means building it faster. So the guy who builds it will be considered a genius, and he will be happy to tell you about how doing useless things such as building the foundations is a waste of time. Then the guy collects a huge bonus and disappears to another new project, and you are left with the “trivial” task of fixing the cracks when they appear. Fixing the cracks turns out to be more expensive in long term than building the house… which may be interpreted as further evidence that you are less competent than your genius colleague.
My software development experience suggests that developers who make new projects prefer languages without static typing and code without unit tests, developers who maintain existing projects prefer languages with static typing and with unit tests.
I think this analogy nicely illustrates the short-term and long-term problems. Building the house without foundations means building it faster. So the guy who builds it will be considered a genius, and he will be happy to tell you about how doing useless things such as building the foundations is a waste of time. Then the guy collects a huge bonus and disappears to another new project, and you are left with the “trivial” task of fixing the cracks when they appear. Fixing the cracks turns out to be more expensive in long term than building the house… which may be interpreted as further evidence that you are less competent than your genius colleague.
My software development experience suggests that developers who make new projects prefer languages without static typing and code without unit tests, developers who maintain existing projects prefer languages with static typing and with unit tests.