Alan Baljeu Summarized: In a nutshell, "refactor to eliminate duplication" is a difficult skill, and including it as a prime essential of TDD hinders successful adoption. In its place, Jay advocates "refactor to increase testability", theorizing that testability is more tangible and easier to understand than functional duplication. This is an interesting thesis. I notice that this approach simultaneously deals with the other barrier to TDD: It eliminates hard-to-test code, resolving the perpetual problem of "how do I test this?".