Im Buch „More Agile Testing“ (mehr dazu hier im Blog im Artikel Selbst anwenden bringt den größten Lerneffekt) gibt es eine schöne Metapher dazu, warum Tests zuerst zu schreiben Zeit spart.
Kritische Nachfrage vom Management: Ist das nicht Zeitverschwendung, wenn das ganze Team zuerst (Akzeptanz-) Tests erstellt? Metaphorische Antwort:
Busfahrer: Wenn ich nicht auf alte Leute warten müsste wäre ich schneller. Wenn ich gar keine Fahrgäste mitnehmen würde, wäre ich noch schneller.
Da hat er recht, aber das ist ja nicht sein Ziel. Genausowenig ist das Ziel der Arbeit von Entwicklern „irgendwelchen Code zu schreiben“, sondern gerade eben genug qualitativ hochwertigen Code zu schreiben, um die tatsächlichen Business Anforderungen zu erfüllen.
Sich die Akzeptanzkriterien genau anzuschauen und dafür gute Tests zu schreiben ist also das wertvollste, was wir zu Beginn der Implementierungsphase tun können. Stattdessen einfach mal los zu implementieren geht scheinbar schneller, aber dafür bekommen wir Code, der Denkfehler oder Implementierungsfehler enthält, mehr kann als er müsste (und dadurch den Wartungsaufwand erhöht) oder der an den essentiellen Anforderungen des Business auch einfach ganz oder teilweise vorbei geht.
Wenn wir Tests zuerst schreiben ist das einzige, das dadurch langsamer wird, die Erstellung von Code, der seine eigentliche Funktion nicht erfüllt, weil er fehlerhaft, in Teilen redundant oder schlecht auf’s Business abgestimmt ist.