In When I might not TDD, I posed myself the following question:
If I'm trying to be effective and efficient, when wouldn't I practice TDD?
In response, I enumerated degenerate cases, false negatives, and conjectures, but was unable to come up with anything simultaneously true and nontrivial. Carrying out Alistair Cockburn's Elephant Carpaccio exercise yesterday uncovered an answer I had forgotten.
In How to efficiently learn a programming language, I noticed early on that not doing TDD was probably slowing me down. So I tried adding it, started making progress and having fun, reversed my performance problem, finished early, and got to help my neighbor.
Early in Elephant Carpaccio, my “Coaching in an Agile Context” class partner and I noticed that doing TDD was probably slowing us down. So we tried removing it, started making progress and having fun, reversed our performance problem, finished early, and got to chat for a bit.
I'm relieved to know that when the environment produces a signal to consider not practicing TDD, I'm able to receive and act on it. This indicates my strong feelings about the practice are truly a matter of context, as I hope they remain. For your reference and mine, the forgotten context where I probably wouldn't TDD is: tiny projects.
Apparently I've even forgotten that I remembered that context just fine in When is refactoring a good decision?. At least I still remember that my forgetfulness is one of the reasons I prefer to test first.