1) TDD трудно соблюдать со 100% честностью, рано или поздно ты нарушишь его правила, особенно когда тестировать нужно много чего 2) Уходит слишком много времени на написание тестов, зачастую фича нужна вчера и тесты не являются приоритетом
Зависит конечно же от проекта, я работал на одном, где TDD применялся