The dog analogy is a bit off. Programmers are not like dogs. We can remember mistakes we made a year ago and still learn from them. You want a short feedback cycle, not because it's the only way your programmers will learn anything, but because you can only improve so much each cycle. The only way to improve the necessary amount is to go through a lot of cycles, preferably in the shortest possible time.<p>Feedback from testers is great, but I've found a bigger reason why I love our QA team. For whatever reason, it's hard to implement something and test it at the same time. It's just hard to make my brain think in both modes at once. It's also hard to test something that I've implemented, because my brain is biased by the thought processes it used during implementation. Trying to think in both modes (implementation and testing) means I'll probably end up doing neither effectively. If you have a great QA team, you don't have to think in both modes. It's great.<p>That hints at his point about letting incompetent programmers do QA. I completely agree with him. A tester thinks differently than a programmer. Hire great testers. <i>So many</i> companies make that mistake.<p>I'm glad to see Joel take a public stand on automated tests, too. Automated tests have their place and their value, but his criticisms of them are completely valid. No amount of automated testing can obviate the need for good human QA. For <i>some applications</i>, automated testing can be such a pain to get right and maintain, that it's often more work than it's worth.