Jeff I think you’ve hit the nail on the head with this post. Most specifically:
not everyone writes code for the same reasons you do, either
Sam, Scott - I don’t think this is a strawman argument and I don’t think either of you actually addressed it in your replies.
With all due respect, I think your analogy with hard core gamers doesn’t make much sense here. I am arguing aggainst being in the debugger at all.
(I think this is the same ‘EC is dangerous’ argument expanded to the Debugger as well. I’d respectfully say you missed the point of the analogy, rather than it not making sense.)
And indeed, everyone should construct code the way we do. If we’re talking about building applications and systems, there’s a lot more at stake than a gamer twiddling away his study time in the glow of Halo.
(This seems to be an explicit denial that other people could have a software problem that looks different than yours, and would be better solved by different methods.)
The crux here is the desire to advocate TDD + Unit tests to the exclusion of tools and methods that support other modes of working. Basically it is dangerous to have support for anything that does not lead one to conclude a unit test is the right answer.
Projects with different goals will benefit from a different mix of tools and processes, whether that involves use of EC or Big Design up front.
To make some specific examples:
EC is perfect for prototyping game play mechanics. Would you really try to write a unit test to ensure you don’t regress the fun in your game?
EC is useful for letting a software aware Domain special-ist simply make a somewhat less supportable yet useful first pass of the required software. Sometimes that is the right business tradeoff. Does that kind of loose development practice create a headache for software professionals … you bet. But that is why those are paid positions, because the end goal is the benefit to the software user, not the developer.
(I have to use ‘special-ist’ above because there is a forbidden word embedded in it.
(Also I should say though I am saying that TDD + unit testing isn’t the answer for every problem I fully acknowledge it is a HUGE leap forward in best practices.)