One closely related topic to TDD that I think is all to often neglected is Refactoring.
It is a funny thing, everyone seems to THINK they know how to refactor, but I see so few that are actually good at it. The topic just intuitively sounds simple, but developing the discipline to evolve and clean code in small steps is apparently counterintuitive. I can't count how many times I've had someone tell me they are refactoring some code and a few more questions uncovers that their so-called refactoring attempt is a day-and-a-half along with the code in a horribly disrupted state with no end in sight.
Now, it may be that this kind of failing is isolated to my field. (My team writes C++ embedded systems code for safety-critical medical devices.) The automatic refactoring tools in our world aren't half-as-cool as the stuff in Intelli-J we see in the Clean Code Videos. (We also have some environment and architecture issues that are making the build/test cycle too long, which probably contributes to the problem. Trust me, we're working to fix them.) But I think the real reason I see refactorings going astray is we are mis-applying the term "Refactoring" as a blanket for any redesign work, and I don't feel there is enough understanding of how to keep a system running when you are making changes of greater significance than doing a rename.
Are there any plans to address Refactoring as its own topic, during the Clean Code series? We see some of it taking place during the various TDD examples, but I think it warrants coverage as its own topic. I would prefer to see this content in conjunction with the other advanced TDD content, before we head off into other areas.
Thanks!
Phil
P.S. My team uses Extreme Programming to meet a lot of our regulatory required code-inspection and test requirements, which is pretty cool. And once we got the team up the learning curve (and the folks who didn't want to do XP had found gigs more to their liking), it is a very fun environment. But based on the folks we've interviewed over the years, Test Driven Development and Pair Programming is nearly unheard of in embedded systems. This just plain gives me the willies, knowing how many safety-critical software systems we all depend on. (On the other hand, if you are a C++ programmer that wants to do TDD in Southern California... I can suggest a good place to call.)