Here is a great article from Scott Ambler on TDD adoption.
The mistakes summary is:
- Not providing sufficient training, education, and mentoring
- Not supporting pair programming
- Not reducing the creation of non-executable detailed speculations early in the project
- Not reducing the confirmatory testing being done by their independent QA/testing team
- Completely reducing initial modeling
- Completely reducing parallel independent testing
What surprises me is "reducing initial modeling". He says modeling at high level specification through agile modeling is important. I've never got into the situation where I had to model. Some high level diagrams are usually useful but is that modeling? I need to understand what is agile modeling.