I belong to the LinkedIn TDD group and one of the other members, Raphaël Parrée (CTO of Trivera Technologies), recently posted about a flaw he sees in test driven development. The post is very thoughtful and comes from their experience with TDD. What I read from his post is that mid-level and junior-level developers are not strong enough developers to do it effectively. I disagree... sort of.
It does take a certain amount of skill in development to understand the essence of TDD/BDD, but that should be a reason for not doing it. It takes a certain level of competence with programming to write good code, but that shouldn't mean that we stop expecting mid-level and junior-level developers to turn out good code. I don't consider myself a coding wizard, but I have been doing this stuff for awhile and I have picked up some good techniques (and some bad ones). Software development (good software development anyway) is supposed to be hard. It's supposed to be an intellectual challenge and people who do well in this industry tend to be people who like that challenge.
I am also considered a senior-level developer on my team. I think that it most shops that might just mean I have to do the "hard stuff", but it should mean that I should be writing higher quality code and helping my peers, and those less experienced than myself, do the same. So everything flows. This does NOT mean that the new coders can't teach the senior guys a few tricks. Sometimes just mentoring junior developers teaches a more experienced coder a new way to look at a problem. I understand that this may slow development a bit. That may not please the business, but the other choice is lower-quality code. Helping a business understand that higher quality code costs less overall, is part of our jobs as TDD/BDD evangelists.
As usual, I am interested to see what people have to say, so please leave a comment, and read Raphaël's Post as well.