The old way of building software "However an alternative does exist, and it's not that hard to achieve. This alternative involves short development cycles, doing a small amount of tested fully refactored work, and regular commits. There's no magic involved, and it lends itself to fully tested code, constant integration, knowledge transfer and robust code that is easy to update as requirements change (which they always do). Of course if you throw pairing in on top, you get even more of the benefits, however judging by recent experiences this is something that managers and most developers are not ready for, even if it produces excellent results."
In my recent refactoring of JRDF, if it's more complicated that 10 minutes work it doesn't get done. Thinking about how to achieve something in 10 minutes that gets to where you want to go is as powerful a programming tool as anything I've come across. Luckily, running the existing tests in JRDF doesn't take more than a few seconds. Of course, some of this requires a rather powerful IDE too.