Some very exciting and necessary discussions have broken out in the community about writing maintainable code and the different trade offs in projects. The discussion originated with Ayende's Maintainable, but for whom? post which had the section
I am okay with that. Because my view is that having the developers learn a better way to build software is much less costly than continuing to produce software that is hard to maintain. In simple terms, if you need to invest a week in your developers, you will get your investment several times over when they produce better code, easier to maintain and extend and with fewer bugs."
To which I agreed with on Its So True Post
Especially pay note to the statement: having the developers learn a better way to build software is much less costly than continuing to produce software that is hard to maintain. That's been my experience the last 18 months with our team and elsewhere. Don't punt the ball for someone else. We made that investment in our developers a year ago and it has paid for itself ten times over.
Very thoughtful comments by JDN and Frans Bouma, in both places have provided valuable discussion. I would like to take several of my comments in both places and offer them up here for a wider audience as this is a topic I am very passionate about and one that I believe our current project has achieved some significant gains in. First of all about the "perfect" world versus the "real world":
Then on whether TDD and other practices contribute to more maintainable code
Frans seems to have made the claim on my blog that that TDD doesn't do anything for maintainability, or just wonders what in the world it does do for maintainability to which I said