Mir scheinen in der Branche zwei Modi vorzuherrschen, in denen entwickelt wird:
Modus #1, Sorglosigkeit: Es wird Code geschrieben, als gäbe es kein Morgen. Raushauen, was das Zeug hält. Gummi auf die Straße bringen. Den Coderevolver schneller ziehen als der eigene Schatten. Wichtig ist, dass der, der grad am lautesten schreit, möglichst schnell zufriedengestellt wird. Ob das dann eine Qualität hat, die Anwendern Freude macht, ist eine zweite Frage. Darüber macht man sich keine Sorgen. Es wird in den Tag hinein entwickelt. Kurzfristiger Erfolg ist wichtig. Langfristiger Erfolg wird als selbstverständlich angenommen oder ist irgendwie gar kein Thema.
Modus #2, Angst: Bevor Code geschrieben wird, werden die Implikationen aller Ramifikationen jeder Änderung länglich gewälzt. Es gibt immer viel zu bedenken. Da will zum Beispiel sorgfältig geprüft werden, was eine Veränderung für Auswirkungen auf die Sicherheit des Systems hat. Und ganz wichtig: Ist der gewählte Ansatz nicht doch zu speziell? Könnte er nicht erweitert und verallgemeinert werden, um dermaleinst auch noch unbekannte Anforderungen in der Zukunft eventuell leichter abzudecken? Und wie ist es mit Sonderfällen? Finden die schon genügend Berücksichtigung?
Beide Modi führen in die Lähmung.
Sorglosigkeit erzeugt Lähmung in naher oder mittlerer Zukunft. Denn dann ist der Code durch die sorglose Anhäufung unwartbar geworden. Für methodisches Vorgehen, Strukturplanung, Bemühen um Evolvierbarkeit war ja nie Zeit.
Angst erzeugt Lähmung in der Gegenwart. Man kommt vor lauter Überlegungen zu Unwahrscheinlichem und Unbekanntem nicht zum Wesentlichen, der Produktion von Code, der jetzt schon etwas nützt. Ultimativer Nutzen möglichst ohne Lücke in der Zukunft ist wichtiger.
Die sorglose Programmierung scheint in den letzten Jahren allerdings im Rückgang begriffen. Zum Glück. Der Diskurs über Softwarequalität im Allgemeinen und Testmethodiken und –tools im Speziellen hat etwas bewirkt.
Die angstgehemmte Programmierung hingegen ist immer noch weit verbreitet. Sie zeigt sich im Kleinen, wenn an jeder Ecke try-catch-Blöcke oder Code Contracts geschrieben werden. Und sie zeigt sich im Großen, wenn aus Anforderungen Dinge herausgelesen werden, die dort nicht stehen. Oder Anforderungen zwar als nicht explizit beschrieben erkannt, aber dennoch felsenfest ab-so-lut sicher vorhergesehen werden. Zeuge der Vorhersage ist dann die Erfahrung. Und verräterisch ist die Formulierung “Aber was, wenn XYZ so oder so wäre?”
Woher kommt nur diese Angst? Warum ist sie so unausrottbar?
5 Kommentare:
Die Angst kommt von Menschsein. Doch geht’s wirklich ums Gefühl an sich? Ich glaube nicht, es geht um Themen wie „Pragmatisch statt dogmatisch“ oder wie viel Ordnung braucht der Mensch. Die TDD Ansatz alles klein zu brechen und erst mal pragmatisch los zu Coden und dann Dogmatisch (meine Interpretation) zu Refactoren ist ein weg der Sinn ergibt. Eine Sicht aus der Gehirnforschung zu dem Thema würde mich aber auch interessieren …
Dieses Phänomen beschäftigt mich auch schon seit langer Zeit. Ich begegne dem immer wider. Aktuell arbeite ich in einen Team, wo die Mehrheit der Leute schon über 10 Jahre in PHP programmiert und noch keinen einzigen Unit-Test geschrieben haben. Zudem sind sie sehr konservativ gegenüber neuen Entwicklungs-Methoden (TDD, SCRUM) eingestellt. Es ist oft da frustrieren hin zuschauen, wie Code einfach rein gepresst wird – ohne Bedenken.
Frage an alle: wie kann man es in einem Unternehmen schaffen, SCRUM und TDD erfolgreich zu etablieren? Soll man didaktisch vorgehen oder es einfach von Oben aufdrucken lassen?
Welches große Ziele verfolge ich, wenn ich in einem Unternehmen TDD und SCRUM einführen will? Kann ich diese Ziele in Wort, Schrift und Bilder formulieren? Kann ich diese Ziele klar dem gegenüber abgrenzen, was bisher anders gewesen ist? Welche Gewinn habe ich, wenn ich TDD und Scrum eingeführt habe? Welchen Gewinn haben meine Mitarbeiter, nachdem ich es jetzt eingeführt habe? Wie hatte ich es geschafft, meinen Mitarbeitern ein gutes Gefühl zu vermitteln ihren gewohnten Alltag zu verlassen und etwas Neues zu probieren, dem sie skeptisch gegenüber standen, weil es neu war? Stichwort: Macht der Gewohnheit und Angst vor Veränderung.
Wie konnte ich ihnen 3,4 oder 5 verschiedene alternative oder ergänzende Anreize bieten TDD und SCRUM zu benutzt zu haben um sie selbst erkennen zu lassen, was für Vorteile es hat? Was für einen nutzen hatte die Einführung von TDD und SCRUM in meinem Unternehmen für mich persönlich?
Was war meine Vision, die ich hatte um TDD und SCRUM in meinem Unternehmen zu etablieren? Und welche Ziele hatte ich verfolgt um sie einzuführen?
Wenn ich meinen Mitarbeitern klar vor Augen halten konnte, welche Geldwerten und persönlichen Nutzen er von TDD und SCRUM hat ... Weniger Bürokratie, da schneller Kommunikationskanal (Stand-Up). Mehr Erfolgserlebnisse, da kürze Feedbackschleifen und frühzeitige Behebung von Hindernissen. Angstfreire Entwicklung von neuen Features, da Sicherheitsnetz aus AUTOMATISIERTEN Tests. (und und und ... mir fallen da noch mehr ein)
Ich merkte, wie meine Mitarbeiter mehr Zeit zum Testen neuer Technologien hatten, da beschleunigte Entwicklung das Projekt Vorzeitig und sicher fertigstellen ließ. Den Zugewinn in Zeit, Geld und Sicherheit konnte ich meinen Mitarbeitern weiterngeben und sie an einem Tag der Woche (20% Arbeitszeit)tun und lassen was sie wollten. So konnten sie experimentieren, sich weiterbilden und dabei ihren Spaß- und Entdeckungsdrang ausleben. Gleichzeitig erhielt ich einen zufriedeneren Mitarbeiter, der sich zudem noch Woche für Woche mehr Wissen aneignete und mit jedem freien "Spieltag" mehr Wissen und Erfahrung in mein Unternehmen brachte.
Du willst TDD und SCRUM einführen? Da darfst anfangen deine Mitarbeiter zu motivieren und ihnen Alternativen aufzeigen, was danach alles schöner für sie sein kann. Du darfst ihnen Anreize geben, damit zu spielen und den Mehrwert zu erkennen. Du darfst sie für Ihre Bemühungen belohnen und sie Erfahrungen damit sammeln lassen. Du darfst dich hinsetzen(falls nicht schon passiert) und dir das Wissen aneignen, dass du brauchst um ihnen zu zeigen wie es funktioniert. Du darfst ihnen ein Vorbild sein und ihnen zeigen, was gut ist. Vielleicht fangen sie an zu dir hinauf zu schauen und dich für deine Bemühungen zu bewundern.
@Anonym: Scrum und TDD sind Werkzeuge. Solange nicht klar ist, wofür die gut sind und ob sie überhaupt helfen, existierende Probleme zu lösen, ist es immer schwierig, Menschen zu motivieren.
Herrscht schon "Krankheitseinsicht"? Wahrscheinlich nicht. Deshalb sind da Entwickler unwillig, sich in ihre Arbeit reinreden zu lassen.
In der Situation irgendeine vermeintliche Lösung reinzudrücken, ist womöglich sogar kontraproduktiv.
Also: Am Anfang jeder Veränderung steht eine Analyse der Situation. Was läuft? Was läuft nicht? Warum läuft es nicht? Wo ist der Engpass?
Wir helfen gern, dem auf den Grund zu gehen: http://clean-code-advisors.com/die-angebote/4-eyes-assessment
Kommentar veröffentlichen
Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.