2010-07-23 8 views
8

Ich habe TDD für die letzten 3 Jahre gemacht. Wir waren ein kleines Unternehmen, und wir haben die meisten Aspekte des agilen Prozesses vom Management sehr gut unterstützt. Jeder im Entwicklungsteam wurde bei diesem Prozess verkauft. Und so wurde die Vorabinvestition, die es normalerweise braucht, um Fixtures zu bauen, in dem Wissen akzeptiert, dass es sich auf dem Weg auszahlt. (Code, der einen HTTP-Server startet, Code, der SQL-Datenbanken vor Tests füllt, usw.). Die Dokumentation fand meistens in den Tests statt, und Hilfeanfragen wurden normalerweise in Form eines fehlgeschlagenen Tests präsentiert.Verkauf von TDD an das Team

Jetzt bin ich zu einem größeren Unternehmen umgezogen, und während das Management den agilen Prozess unterstützt, sind die Teammitglieder eine bunte Mischung, einige von ihnen halten es für nützlich, manche tun es wegen des Managements und einige sehen es nicht Wert. Es war eine Herausforderung, die Leute davon zu überzeugen, einige Zeit damit zu verbringen, Geräte zu bauen oder ein Teammitglied zu überzeugen, wie ich ihm am besten helfen kann, wenn er sich die Zeit nimmt, einen versagenden Test zu schreiben.

Was ist Ihrer Meinung nach der beste Weg, TDD an einen zögerlichen Teamkollegen zu verkaufen? Die Einwände sind normalerweise: "Es sind unnötige Kosten", "wir können immer Tests nach der Tat für wichtige Teile schreiben", es ist ein Schlagwort, Teams nehmen es auf und dann fällt es auf die Seite, wenn der schwere Grind beginnt 'etc.

+0

Duplizieren von vielen von diesen: http://stackoverflow.com/search?q=tdd+roi –

+3

Sie haben etwas berührt, das mich gestört hat, seit ich anfing, an Teams zu arbeiten. Warum müssen wir Entwickler manchmal mit guten Praktiken "verkaufen"? Sicher haben sie nie die Erlaubnis für ihre schlechten, verschwenderischen Gewohnheiten bekommen. –

+0

mögliche Duplikat von [Wie zur Förderung der Umsetzung von TDD?] (Http://stackoverflow.com/questions/428691/how-to-encourage-implementation-of-tdd) und viele andere. –

Antwort

21

"der beste Weg, TDD zu einem zögerlichen Mitspieler zu verkaufen"

Sie können nicht. Verschwenden Sie keine Zeit "verkaufen".

Stattdessen investieren Sie Zeit in "Prüfung".

Tun Sie es einfach. Erfolgreich sein. Wenn Leute fragen, was das Geheimnis Ihres Erfolges ist, dann enthüllen Sie die TDD. Nicht bevor.

+0

das ist auch gut. Manche Leute können Sie einfach nicht überzeugen. – hvgotcodes

+0

Aktionen sprechen viel lauter als Worte. Dies ist definitiv eine Situation, in der Skeptiker von einer Demonstration überzeugt werden müssen. – DOK

+0

Ich kann es versuchen, Es würde schmerzhaft sein, weiterhin an shared-code zu arbeiten, zurück zu kommen ist wie ein fremdes Land zu besuchen ... – shipmaster

3

einfach - Wartbarkeit. TDD gibt Ihnen die Möglichkeit, Änderungen vorzunehmen und zu sehen, wo sich diese Änderungen auf den Rest des Codes auswirken. Je größer die Codebasis, desto wichtiger ist es, dass Tests zur Validierung neuer Änderungen durchgeführt werden.

Korrektheit. Obwohl Tests selbst gebrochen werden können, erreichen sie irgendwann einen Punkt, an dem sie sicherstellen, dass die Komponenten das tun, was sie tun sollen. Je besser der Entwickler, desto schneller.

Ein weiterer Vorteil ist, dass TDD das Design der Komponenten im System informiert. Wenn Sie versuchen, etwas zu testen, und der Test zu kompliziert ist, bedeutet es wahrscheinlich, dass Sie das Problem in kleinere Teile zerlegen müssen ...

, um es an Menschen zu verkaufen, sagen Sie, dass auf lange Sicht es macht Hinzufügen neuer Funktionen billiger und verringert das Risiko, bestehende Funktionen zu zerstören. So reduziert es Kosten.

+0

Nun, alle oben genannten Punkte haben den Vorteil, Tests zu machen, ohne Tests zu verwenden - zuerst als eine Art der Codierung. Mein Team hat bereits erfahren, warum sie (zumindest den prominenten Teil) ihres Codes mit Tests abdecken müssen. – shipmaster

+0

ja, aber Sie können die Vorteile verkaufen. – hvgotcodes

1

Ich denke, Joel's post erklärt sehr gut, warum Tests A Good Thing ™ ist.

Ich glaube nicht, dass er jemals den Ausdruck "TDD" verwendet, aber es hat einige gute Informationen.

+0

Testen ist nicht dasselbe wie TDD. Jeder wird sich über die Wichtigkeit des Testens einig sein. Die Entwicklungsphilosophie von tdd ist eine andere Geschichte, trotz der Annahme der op, dass es notwendigerweise der eine wahre Weg ist. – frankc

+0

Ich stimme definitiv zu. Aber von dem, was ich über TDD weiß, nähert sich Joels Beitrag (asymptotisch?) Einem Argument für TDD –

+1

@ user275455: Es ist nicht unbedingt der eine wahre Weg, es ist einfach in meinem Fall (und meiner Meinung nach) viel produktiver als das Hodge -podge, das momentan in meiner Umgebung existiert. – shipmaster

2

Für den zögerlichen Teamkollegen, geduldig sein, warten auf eine Gelegenheit, dann stürzen. In der Softwareentwicklung wird es zweifellos ein Problem geben, wo TDD das Problem verhindert oder gemildert hätte. Halten Sie Ausschau nach einer solchen Gelegenheit. Arbeiten Sie mit ihm zusammen, um einen Test zu erstellen, der von Anfang an entwickelt worden sein sollte. Stellen Sie jedoch sicher, dass Sie Ihre Nachricht so verfassen, dass Ihr Teamkollege nicht in Verlegenheit gebracht wird.

2

Ich stimme zu S. Lott, Sie können sie nicht "verkaufen" müssen Sie den Wert anzeigen.

Eine der effektivsten Möglichkeiten ist die Paarprogrammierung. Zugegeben, Sie haben ein weiteres "Verkaufs" -Problem, das die Leute davon überzeugt, dass die Paarung ein effektiver Ansatz ist, aber nach einiger Zeit können Sie einen Entwickler oder auch einen Entwickler überzeugen.

TDD war anfangs ein schwieriges Konzept für mich, aber jetzt kann ich keine Programmierung mehr programmieren.

0

Zeigen Sie ihnen diese Seite: WeDoTDD.com - tatsächliche Firma Team Use Cases. Diejenigen, die TDD in realen Unternehmen erfolgreich praktizieren.