1. TDD is a long-term investment that may not show results for months, so customers need to understand it requires patience. 2. Teams may not be experienced enough with TDD and would benefit from drills or training before adopting it. 3. TDD principles are more difficult to apply to legacy code that lacks tests, but training can help use TDD effectively anyway. 4. TDD is primarily an internal design tool, not just for catching bugs, so its design benefits need emphasis over external quality assurances.