When we say someone is proficient at TDD, what outcomes have they achieved? What capabilities do they have?
I’ll take your suggestions to put together another TDD episode for Agile Thoughts
http://agilenoir.biz/en/agilethoughts/why-developers-dont-tdd-a-radio-drama/
Here is what I’ve got so far.
Here is what I’ve got so far.
You’re proficient when (scroll left to right to read):
You can write a dozen tests in an eight hour day.
You are have refactored 4 big functions or classes to make them testable.
You bristle at any suggestion of skipping writing tests.
At least a week has passed since when you last used the debugger.
You are a master when:
You can teach others how to become proficient.
Your team’s project has very good code coverage (> 80%) and still
Eg, suppose I write all the code and don't write the tests until the end. Then I spend 5 weeks writing tests.
I can easily write dozens of tests in an 8 hour day, and refactor code to make it more testable. I'm still writing tests, so bristle at the suggestion that I should. I'm using coverage to help figure out which tests to write, so I'm easily going to get 80% or better.
My own style is much closer to "Spike and Stabilize", and not TDD, yet all the things you wrote also apply to me.
FWIW, I almost never use the debugger, even without doing TDD, as I use print statements. Even with TDD, for some people the debugger is used as a way to understand/explore the interface to other libraries.
BTW, I see no mention of "mantra" of "red/green/refactor".