One question I have about iterative development or constant refactoring/evolution is:

How do you ensure that the codebase remains in a maintainable (readible / tidy) state and that it doesn't suffer from the constant churn.

Otherwise I agree with all the sentiments expressed in this podcast, especially taking the pain early or "go ugly early" as it is known here.

I would be very interested in futher reading about the evolution of service interfaces and Just Enough Validation which was discussed in the early part of the podcast.

Any suggestions?