Welche Argumente kann ich verwenden, um das BDD-Konzept an ein Team zu „verkaufen“, das es nicht übernehmen möchte?

11

Ich bin ein bisschen ein Befürworter der Behavior Driven Development-Methodik (auch bekannt als BDD). Ich wende BDD seit einigen Jahren an und habe StoryQ als mein bevorzugtes Framework bei der Entwicklung von DotNet-Anwendungen übernommen. Obwohl ich seit vielen Jahren Unit-Tests durchführe und zuvor zu einem Test-First-Ansatz übergegangen bin, habe ich festgestellt, dass die Verwendung eines BDD-Frameworks viel mehr Wert bringt, da meine Tests die Absicht der Anforderungen relativ gut erfassen Klares Englisch in meinem Code und weil meine Tests mehrere Zusicherungen ausführen können, ohne den Test zur Hälfte zu beenden - das heißt, ich kann auf einen Blick sehen, welche spezifischen Zusicherungen bestanden / nicht bestanden wurden, ohne zu debuggen, um dies zu beweisen.

Dies war wirklich die Spitze des Eisbergs für mich, da ich auch festgestellt habe, dass ich sowohl Test- als auch Implementierungscode gezielter debuggen kann, was dazu führt, dass meine Produktivität erheblich gestiegen ist und ich mehr kann Stellen Sie leicht fest, wo ein Fehler auftritt, wenn ein Problem aufgrund der Ausgabe, die in die Build-Protokolle gelangt, bis zum Integrations-Build reicht. Darüber hinaus verfügt die StoryQ-API über eine schöne, flüssige Syntax, die leicht zu erlernen ist und auf außerordentlich viele Arten angewendet werden kann, ohne dass externe Abhängigkeiten erforderlich sind, um sie zu verwenden.

Mit all diesen Vorteilen würden Sie es für einfach halten, das Konzept dem Rest des Teams vorzustellen. Leider zögern die anderen Teammitglieder, sich StoryQ überhaupt anzusehen, um es richtig zu bewerten (geschweige denn die Idee, BDD anzuwenden), und haben sich gegenseitig davon überzeugt, zu versuchen, eine Reihe von StoryQ-Elementen sogar aus unserem eigenen Kerntest-Framework zu entfernen obwohl sie ursprünglich die Verwendung von StoryQ unterstützten und obwohl der Code, den sie entfernen möchten, keinen Einfluss auf einen anderen Teil unseres Testsystems hat. Dies würde meine Arbeitsbelastung insgesamt erheblich erhöhen und widerspricht wirklich dem Strich, da ich durch praktische Erfahrung davon überzeugt bin, dass es eine bessere Möglichkeit ist, in unserer speziellen Arbeitsumgebung auf Test-First-Weise zu arbeiten, und nur zu einer höheren führen kann Verbesserungen in der Qualität unserer Software, wenn ich ' Wir fanden es einfacher, zuerst mit BDD am Test festzuhalten. Um dies weiter zu verdeutlichen, sind die meisten Unit-Tests, die wir durchgeführt haben, in der Regel ziemlich spröde und schwer zu warten. Dies ist ein Überbleibsel aus Jahren schlecht angewandter Tests, in denen Entwickler aufgrund ihrer Zurückhaltung, sich an einen testgetriebenen Prozess zu halten, auf alte Gewohnheiten zurückgreifen und Führen Sie alle Tests am Ende des Projekts durch (dieselben Personen behaupten, agil zu sein!).

Die Frage lautet also wirklich:

  1. Mit welchen Argumenten kann ich wirklich klar machen, dass es für dieses Team besser wäre, StoryQ zu verwenden oder zumindest die BDD-Methodik zu übernehmen?
  2. Können Sie mich auf anekdotische Beweise hinweisen, die ich verwenden kann, um mein Argument zu unterstützen, BDD als unsere Standardmethode der Wahl zu übernehmen?
  3. Welche Gegenargumente, die Sie sich vorstellen können, könnten darauf hindeuten, dass mein Wunsch, das Team zur Einführung von BDD zu ermutigen, falsch sein könnte? Ja, ich bin froh, dass ich mich als falsch erwiesen habe, vorausgesetzt, das Argument ist stichhaltig.

HINWEIS : Ich befürworte nicht, dass wir unsere Tests vollständig umschreiben, sondern einfach damit beginnen, für alle zukünftigen Testarbeiten auf eine andere Art und Weise zu arbeiten, und vorzugsweise in der Art und Weise, wie wir unsere Kunden einbeziehen.

Und für diejenigen unter Ihnen, die mehr über BDD erfahren möchten, können die folgenden Links hilfreich sein:


Für diejenigen, die an weiteren Details interessiert sind, sind wir ein kleines 4-köpfiges Team, das an ungefähr 5 großen Projekten arbeitet. Der "Pilotversuch" für BDD dauerte zunächst etwa zwei Monate, gefolgt von einem weiteren Zeitraum von etwa vier Monaten. Das Team akzeptierte, dass ich weiterhin so arbeiten sollte und ihre eigenen Versuche machen sollte. Ich bin seit ungefähr 2 Jahren BDD-ing, seit der Prozess beendet ist, während die anderen sehr gut darin geworden sind, das Problem zu lösen. Anstatt eine "Konfrontation" über das Thema zu erzwingen, suche ich nach Möglichkeiten, das Team sanft davon zu überzeugen, sich von seinen kollektiven Hintergründen zu lösen und sich die Zeit zu nehmen, ihren Beitrag zu leisten.

S.Robins
quelle
2
Denken wir über "SIE" nach - warum wollen sie, dass es entfernt wird? Muss für sie von Vorteil sein - haben Sie versucht, zuerst ihre Vorteile herauszufinden und herauszufinden, welcher Mittelweg erreicht werden kann, bevor Sie Ihre Vorteile vorschlagen :)
PhD
2
Versuchen Sie, weniger zu verkaufen und mehr zu lernen. Nach meiner Erfahrung wollen die Leute nichts verkaufen, sind aber immer bereit, etwas Neues zu lernen. Dann lassen Sie die Karten fallen, wo sie können. Wenn sie immer noch dagegen sind, haben Sie als Pädagoge versagt oder bdd ist nicht alles, was Sie sagen.
Kevin
1
@ Kevin Ich denke, Sie haben meinen vorherigen Kommentar zu Nupal verpasst, und vielleicht den Punkt meiner Frage ganz. Sie haben ein einziges Wort aus meiner Frage genommen und es aus dem Zusammenhang gerissen. Ich versuche tatsächlich zu erziehen und nicht einfach als solches zu "verkaufen". Ich suche nach bestimmten Punkten, anhand derer ich eine unnötige Zurückhaltung überwinden kann, etwas anderes zu tun. Bitte antworten Sie, wenn Sie sich mit dem Thema auskennen, anstatt nur provokative Aussagen über meine Fähigkeiten oder die Technologie zu machen, die für Sie entschieden nicht hilfreich sind.
Robins
2
Binäre Entscheidungsdiagramme? Kaufen Sie eine Kopie von Knuths TAoCP Vol 4 und leihen Sie sie ihnen aus.
Peter Taylor
2
Ich denke, das Problem Ihres Teams liegt nicht in BDD selbst, sondern in der Erschöpfung der Entwicklungsmethodik. Ich leide selbst darunter. Es gibt zu viele Methoden, die versprechen, die Entwicklung zu revolutionieren. Leider gibt es einige Monate später immer wieder eine neue Methodik und ein neues Toolset. Ich sehe es eher als nervige Ablenkung als als Gelegenheit zur Verbesserung. Um BDD einzuführen, müssen Sie dieses Problem lösen.
Antonio2011a

Antworten:

5

Mit welchen Argumenten kann ich wirklich klar machen, dass es besser ist, StoryQ zu verwenden oder zumindest die BDD-Methodik anzuwenden?

"Der Kunde will es."

IMO möchten Sie BDD mindestens genauso viel an Ihre Kunden / Domain-Experten wie an das Entwicklungsteam verkaufen.

BDD ist ein kollaborativer Outside-In-Prozess, an dem mehrere Stakeholder beteiligt sind. Die Vorteile von BDD bestehen nicht nur darin, dass Entwickler ihren Testcode automatisch aus Abnahmetests ableiten, sondern auch in der kreativen Zusammenarbeit zwischen Technikern und Geschäftsleuten, um wertvolle, genau definierte Spezifikationen für das beabsichtigte Verhalten des Systems zu erstellen.

Kunden / Geschäftsanalysten Zugriff auf eine Schnittstelle zu gewähren, über die sie jede ausführbare Spezifikation ausführen, ihren Status kontrollieren und den Fortschritt ihrer Implementierung verfolgen können, wird im Allgemeinen ebenfalls sehr geschätzt.

Es gibt eine Präsentation von Dan North darüber, wie Sie BDD an das Unternehmen verkaufen können: http://skillsmatter.com/podcast/java-jee/how-to-sell-bdd-to-the-business

guillaume31
quelle
Ich habe diese Präsentation gesehen und Sie haben Recht, es ist eine gute Möglichkeit, dem Kunden das Konzept vorzustellen. In meinem Fall muss ich ein paar kleine Schritte machen. Wenn ich das Team nur davon überzeugen kann, die Sprache zu übernehmen, habe ich möglicherweise die Möglichkeit, die vollständige Anwendung der Methode zu fördern. Ich muss mich auch mit dem Problem befassen, dass die meisten unserer Kunden intern und weniger geschäftsorientiert sind. Ihr Punkt ist jedoch gut zur Kenntnis genommen. :-)
S.Robins
5
  1. In einem Team, das BDD nur ungern einführt, gibt es wahrscheinlich keine "Argumente", mit denen Sie Ihre Kollegen in eine vollständige Einführung "umwandeln" können.
     
    Ich denke, das Beste, was Sie tun können, ist, sie davon zu überzeugen , es zu versuchen ("Rauchtest", "Trockenlauf", "Pilotprojekt") - insbesondere, wenn Sie klarstellen, dass Sie die Idee fallen lassen, wenn Sie Testergebnisse erzielen sind negativ.
  2. Ihr Ansatz, anekdotische Beweise zu finden, passt perfekt zu der Idee, das Team davon zu überzeugen, es auszuprobieren. Dafür würde ich einfach im Internet nach etwas wie "Behavior Driven Development Success Story" suchen und herausfinden, was sich für mich einfacher anfühlt.
  3. Ich kann mir einige Gegenargumente vorstellen, die darauf hindeuten könnten, dass Ihr Wunsch, die Teambemühungen auf BDD umzustellen, möglicherweise falsch ist.
     
    Keines davon ist besonders konstruktiv, insbesondere aus der Sicht eines "Change Advocate", aber leider müssen Sie sich wahrscheinlich mit genau dieser Art von Rhetorik ( BTDTGTTS ) auseinandersetzen:
     
    • Sie können nicht garantieren, dass sich die Gesamtproduktivität des Teams verbessert
    • Sie können nicht garantieren, dass die in die Einführung von BDD investierten Anstrengungen zu einem erheblichen ROI führen
    • Das Team hat sich ohne BDD ausreichend gut geschlagen. Das Risiko einer Änderung des aktuellen Ansatzes ist nicht gerechtfertigt
    • Google (oder Microsoft oder IBM - geben Sie einfach den Namen eines "seriösen" Softwareanbieters ein) funktioniert ohne BDD einwandfrei, was "beweist", dass BDD nicht erforderlich ist
    • Nicht-BDD-Ansätze hatten im Vergleichstest keine faire Chance
    • BDD mag im Allgemeinen in Ordnung sein, aber für dieses und jenes Modul / Projekt ist es nicht anwendbar

Nach meiner Erfahrung bestand die am wenigsten schmerzhafte Möglichkeit, Gegenargumente wie oben aufgeführt anzusprechen, darin, einen begrenzten kontrollierten Testlauf für eine vorgeschlagene Änderung durchzuführen .

Der Status "Eingeschränktes Testen" macht im Wesentlichen drei der vier oben genannten Argumente ungültig, mit Ausnahme eines über "seriöser Anbieter", dem durch die Bereitstellung anekdotischer Beweise für die Erfolgsgeschichte entgegengewirkt werden könnte (anekdotische Beweise funktionieren wahrscheinlich nicht für eine "Urknalländerung", aber für begrenzte Tests ist gut genug).

Wenn sich die Änderung tatsächlich lohnt und der Testlauf ordnungsgemäß organisiert ist, werden Sie eine positive Veränderung in der Team- und Managementhaltung feststellen, die den Übergang zu einer umfassenden Änderung reibungslos und schmerzlos macht.

Ein weiterer Vorteil des begrenzten Testlaufs besteht darin, dass Sie die Details des Zielprozesses klären und anpassen können, ohne zu viel Ärger zu verursachen und das Risiko eines "Reputationsschadens" für die Idee zu verringern. Jedes Mal, wenn ich an solchen Testläufen teilnahm , war ich angenehm überrascht, als ich herausfand, wie reibungslos es war, auf eine vollständige Übernahme umzusteigen, bei der die wichtigsten Details im Testlauf festgelegt und geklärt wurden.

Mücke
quelle
Danke für die nachdenkliche Antwort. Zufällig habe ich einen begrenzten Test erfolgreich absolviert, gefolgt von einer Annahme durch das Team, dass BDD auf unbestimmte Zeit angewendet werden kann. Die Produktivitätsverbesserungen waren messbar, aber wie Sie bereits erwähnt haben, gibt es keine Garantie dafür, dass dies notwendigerweise für das gesamte Team gilt, ohne dass ein Weg gefunden wird, jedes Teammitglied zu ermutigen, es selbst auszuprobieren, was im Übrigen die Motivation für die Einführung der Frage ist.
S.Robins
@ S.Robins interessant. Diese begrenzten Tests, die Sie erwähnen, wie lange lief es? Welcher Teil des Teams war beteiligt?
Mücke
Wir sind ein kleines 4-köpfiges Team, das an ungefähr 5 großen Projekten arbeitet. Der "Test" dauerte anfangs ungefähr 2 Monate, gefolgt von einem weiteren ungefähr 4-monatigen Zeitraum. Das Team akzeptierte, dass ich weiterhin so arbeiten sollte und ihre eigenen Versuche machen sollte. Ich bin seit ungefähr 2 Jahren BDD-ing, seit der Prozess beendet ist, während die anderen sehr gut darin geworden sind, das Problem zu lösen. Anstatt eine "Konfrontation" über das Thema zu erzwingen, würde ich lieber Wege finden, das Team sanft davon zu überzeugen, sich von ihren kollektiven Hintergründen zu lösen und sich die Zeit zu nehmen, ihren Beitrag zu leisten! ;-)
S.Robins
Aha. Das macht Ihre Frage noch interessanter. Ich brauche etwas Zeit, um es zu kauen; Bis jetzt kann ich mir einfach nicht vorstellen, wie es möglich wäre, weitere Fortschritte zu erzielen ( abgesehen von "unfairen" Ansätzen wie der Nutzung der Macht des Mikromanagements )
Mücke
@ S.Robins, während ich unsere Aufmerksamkeit habe - haben Sie Module, die BDD- und Nicht-BDD-Teile "mischen", oder gibt es eine Art Trennung zu 100% BDD / 0% BDD-Modulen?
Mücke
-1

Es kann Zeit sein, das Management zu rekrutieren. Wenn Sie versucht haben, solide Ergebnisse zu erzielen, das Team jedoch zurückschreckt, muss sich das Management möglicherweise engagieren.

Dies gilt insbesondere dann, wenn sie das produktivste Teammitglied des Unternehmens verletzen. Seien Sie auf das Spiel vorbereitet. Sie können sich zunächst an das Management wenden und versuchen, dass das Team Sie nicht mehr unterbietet, indem Sie Ihre Testfälle herausnehmen.

Bill Leeper
quelle
1
Ich weiß nicht, ob ich damit einverstanden bin. Wollen Sie damit sagen, dass es ohne Entwicklerkauf im richtigen Ansatz ist, das Management dazu zu bringen, die Kehlen des Entwicklers zu drücken? Führt das nicht zu Ressentiments? Unabhängig von den Vorzügen von BDD denke ich, dass dies zu schlechteren Ergebnissen führen wird. Das heißt, Sie haben die Schlacht gewonnen und den Krieg verloren.
Kevin
@ Kevin Ich stimme Kevin in diesem Punkt zu. Ressentiments und schlechte Gefühle können ein Team sehr schnell zerbrechen, und dies kann an sich ein größeres Risiko für die Produktivität des Teams darstellen, als es einfach ineffizient arbeiten zu lassen. Kevins Kommentar erinnert mich an das Sprichwort , keinen Nagel zu haben. In diesem Fall versuche ich nicht, etwas drastisches oder heldenhaftes zu tun, nur um meinen Willen zu haben. Was ich suche, ist mein "Nagel".
S.Robins
Das Team ist bereits gegen sie, wie die Tatsache zeigt, dass sie den von ihnen geschriebenen Testcode herausnehmen. Das ist meiner Meinung nach ziemlich feindselig und rechtfertigt die Intervention des Entwicklungsmanagers. Das ist ihre Aufgabe, das gesamte Team reibungsloser laufen zu lassen.
Bill Leeper