3 ms·
I would argue TDD is a workaround which allows you to do meaningful work in a team context without holding a complete program in one's head. It gets everyone t
by d2vid 14y ago
I would argue TDD is a workaround which allows you to do meaningful work in a team context without holding a complete program in one's head.
It gets everyone to put their thoughts about what the program should do in one place. Every time you run the test suite, you are outsourcing to the test suite the task of running through your mental model of the program and thinking "what did I break".
The limitation of TDD is that it blocks rapid iteration in what the program should do. When you load the entire model of the program into your head, requirements change at the speed of thought. With TDD, they change at the speed of a lot of reading and typing.
- charlieflowers 14y ago>>> "The limitation of TDD is that it blocks rapid iteration in what the program should do. When you load the entire model of the program into your head, requirements change at the speed of thought. With TDD, they change at the speed of a lot of reading and typing." I agree 1000% percent with that. You articulated very well what I see as the single biggest drawback of TDD. It's as if you're still working with clay, but you put metal around it every 2 seconds, so you lose the benefit of working with clay.
- wordplay 14y agoTDD done correctly should allow the validation of "speed of thought" changes. It happens to me often that ideas spawned between my ears break functionality in the actual application if the application is complex. It doesn't mean that the idea was invalid, tests simply illuminate what else needs to be changed if you'd like to go forward with the change.