Es gibt einige, aber die Vorteile überwiegen bei weitem die Nachteile.
Es gibt eine steile Lernkurve.
Viele Entwickler scheinen zu erwarten, dass sie mit der Erstprogrammierung vom ersten Tag an effizient arbeiten können. Leider braucht es viel Zeit, um im gleichen Tempo wie bisher Erfahrungen zu sammeln und zu programmieren. Sie können es nicht umgehen.
Genauer gesagt ist es sehr leicht, sich zu irren. Sie können sehr leicht (mit sehr guten Absichten) eine ganze Reihe von Tests schreiben, die entweder schwierig zu pflegen sind oder die das falsche Zeug testen. Es ist schwierig, hier Beispiele zu nennen. Solche Probleme lassen sich nur mit Erfahrung lösen. Sie müssen ein gutes Gespür für das Trennen von Bedenken und das Entwerfen für die Testbarkeit haben. Mein bester Rat wäre, mit jemandem zu programmieren, der TDD wirklich gut kennt.
Du machst vorne mehr Codierung.
Test-first bedeutet, dass Sie keine Tests überspringen können (was gut ist) und dass Sie am Ende mehr Code schreiben werden. Das bedeutet mehr Zeit. Auch hier kann man nicht umgehen. Sie werden mit Code belohnt, der einfacher zu warten, zu erweitern und im Allgemeinen weniger Fehler enthält, der jedoch einige Zeit in Anspruch nimmt.
Kann für Manager ein schwerer Verkauf sein.
Software-Manager beschäftigen sich in der Regel nur mit Zeitplänen. Wenn Sie zu Test-First-Programmierung wechseln und plötzlich 2 Wochen brauchen, um eine Funktion anstelle einer zu vervollständigen, wird es ihnen nicht gefallen. Dies ist definitiv ein Kampf, den es wert ist, gekämpft zu werden, und viele Manager sind aufgeklärt genug, um ihn zu bekommen, aber es kann ein harter Verkauf sein.
Kann ein schwerer Verkauf an andere Entwickler sein.
Da es eine steile Lernkurve gibt, mögen nicht alle Entwickler die Erstprogrammierung. Tatsächlich würde ich vermuten, dass es den meisten Entwicklern zunächst nicht gefällt. Du kannst Dinge wie Pair-Programming machen, um sie auf den neuesten Stand zu bringen, aber es kann schwierig werden.
Am Ende überwiegen die Vorteile die Nachteile, aber es hilft nichts, wenn Sie die Nachteile einfach ignorieren. Wenn Sie von Anfang an wissen, womit Sie es zu tun haben, können Sie einige, wenn nicht alle Nachteile aushandeln.