In a comment on his article , Karl Seguin has this to say about the usefulness of TDD: My best suggestion was to unit test as you go, and most of these problems would have ironed themselves out. They never would have gotten the 100+ line controller actions under test, and would have had to address the problem upfront. Well... unfortunately, that only works for someone who truly believes in the value of TDD, figures out the "hint" - and then is disciplined enough to do the right thing. You know what my reaction is, in these cases? Screw the tests, I have code to write! Which, of course, is the wrong thing to do. I feel the need for a serenity prayer...