It is possible to write software that solves real business problems, cheaply and reliably. The recipe is well known, even though it's not easy to do.
I am an Extreme Programmer. I help individuals, teams and organization become more effective. I'm lucky to work as a developer for ThoughtWorks, mostly in the Milano area. I used to teach at Università dell'Insubria.
We write a test showing what we intend to accomplish, and a few minutes later, we have accomplished it. If doing that has made the design not quite as nice as it was before we started, we evolve the design in place to keep it good.
The more we practice this, the easier it gets and the better we get at it.
..., there will always be times when our design ideas come too late for immediate inclusion but they are still desirable to put into the program. This is the original meaning of "technical debt", the deviation of the code now from what we understand of the desirable design now.Ron Jeffries on the Software Craftmanship mailing list (my emphasis)