Montag, 10. März 2014

Attrappen gestütztes Nachdenken

Wie viel Design vor dem Codieren darf es denn sein? Diese Frage erhitzt immer wieder die Gemüter. Neulich auch das von Robert C. Martin. Der reagierte nämlich sehr barsch auf einen Blogartikel von Justin Searl.

Martin sieht nun einen Unterschied in der Notwendigkeit zu entwerfen zwischen größeren Strukturen und kleineren. Für die einen sollte man explizit entwerfen, für die anderen sich durch TDD treiben lassen. Ich allerdings erlaube mir anderer Meinung zu sein. Für mich gibt es keine wie von Martin beschriebene Diskontinuität. Vielmehr sehe ich Software als selbstähnliche Struktur, die deshalb auf allen Ebenen auch ähnlich behandelt werden will. Ausführlicher erkläre ich das ein einem englischen Blogartikel.

Damit sei das Thema erledigt – doch dann ließ mich der Artikel von Searl nicht recht los. Der beschreibt nämlich einen TDD-Ansatz, den Searl für mindestens didaktisch günstiger hält als “den traditionellen”.

Schon beim ersten Lesen flog mich da eine Ähnlichkeit zu Flow-Design an, doch ich konnte sie noch nicht recht greifen. Als mir jedoch die Mock-Frameworks TypeMock Isolator und JustMock einfielen, habe ich mich darangesetzt, und Searls Vorschlag ausprobiert. Das Ergebnis hat mir sehr gefallen.

Schon lange setze ich keine Mock-Frameworks mehr ein, weil die Zahl der Attrappen zum Test meiner Flow-Designs klein ist. Für noch ausgefeiltere Mock-Frameworks wie die beiden hatte ich deshalb schon gar keinen Bedarf. Doch jetzt finde ich sie sehr nützlich. Lange hat das Profiler-gestützte Mocking auf einen Einsatzzweck bei mir gewartet, nun ist er da: mit JustMock kann ich Flow-Designs schneller in Code übersetzen – und das top-down.

Wie ich mir das denke, habe ich in einem längeren englischen Blogartikel beschrieben. Der ist als Dialog abgefasst, weil er eine Herangehensweise an TDD beschreibt – wie weiland Martin es getan hat.

image

Den Dialog zu schreiben, hat Spaß gemacht. Das war mal ein ganz anderes Format als sonst. Doch, ja, ich gebe zu, er ist ein bisschen lang und gewunden geworden. Jedenfalls für den normalen Leser im Web, der schnell, schnell Informationen sammeln will.

Deshalb habe ich das Vorgehen in einem englischen Folgeartikel nochmal systematischer beschrieben. “Informed TDD” habe ich diese Herangehensweise genannt, weil hier TDD nicht “blind” aufgrund von Testfällen betrieben wird, sondern geleitet durch ein entwerfendes Nachdenken.

image

Ich verstehe, wenn manchem der Entwurf am Flipchart zu theoretisch ist. Zwar halte ich das für eine Gefühl, das sich mit etwas Übung überkommen lässt – doch erstmal ist es halt so. Mit “Informed TDD” kann hier jedoch schneller abgeholfen werden: Das Nachdenken kann kürzer ausfallen, weil es das Problem zunächst weniger tief durchdringen muss. Schneller kann man zur Tastatur greifen und schonmal Code schreiben, der das Nachdenken verifiziert. Schrittweise werden die durch “hartes TDD” zu lösenden Probleme auf diese Weise kleiner.

Attrappen stützen also das Nachdenken. Und das ganz modern ohne spezielle Vorkehrungen für eine Injektion von Funktionalität.

Samstag, 1. März 2014

Vertragsstrafe einmal anders

imageWer einen Vertrag verletzt, der wird bestraft – auf die eine oder andere Weise. Ohne Konsequenzen wären Verträge so nützlich, wie elterliche Ermahnungen an schreiende Kinder vor dem Süßigkeitenregal im Supermarkt, wenn am Ende doch der Schokoriegel gekauft wird, damit endlich, endlich Ruhe ist.

Ob Verträge schriftlich sind oder nicht, ist unerheblich. Sie entstehen schon durch eine mündlichen Abrede über Leistung und Gegenleistung.

Soweit alles ganz normal und grundsätzlich nützlich. “Einklagbare” Verträge sind ein Fundament unserer Zivilisation seit Jahrhunderten. Schon die Römer sagten: pacta sunt servanda.

Wie jedes System kann aber auch dieses pervertieren. Dann tritt der eigentliche Zweck in den Hintergrund. Der Vertrag wird dann zu einer Art Ersatzbefriedigung – und mit der Zeit zu einem Suchtmittel. Das scheint mit zunehmend der Fall.

Unsicherheit herrscht allerorten. Wie wird die Zukunft? Kann man der anderen Seite vertrauen? Das sind Fragen, die alle Parteien im Geschäftsleben ständig umtreiben. Die Lösung scheint dann in wasserdichten schriftlichen Verträgen zu liegen. Ha! Damit hat man dann alles im Griff. Vor allem die Gegenseite. Die muss dann liefern. Und wenn nicht, dann setzt es was.

Was für eine Illusion! Was für eine Behinderung!

Wie gesagt, in Maßen eingesetzt, helfen explizite Verträge zu klären. Aber was ich in letzter Zeit erlebt habe, sprengt aus meiner Sicht dieses sinnige Maß.

Allerorten werden mit Geheimhaltungsverträge vorgelegt, nur weil ich ein inhouse Training mache. Immer wieder aber sind es auch Verträge über eine Trainingsmaßnahme oder einen Beratungsauftrag. 5, gar 10 Seiten mittelgroß beschrieben gilt es dann zu prüfen. Denn die Arbeit einer Rechtsabteilung eines Kunden kann ich ja nicht in treuem Glauben einfach so unterzeichnen. Solche Verträge werden ja nicht mit mir schrittweise ausgehandelt, sondern mir vorgesetzt. Also muss ich sie zuerst verstehen, dann ggf. nachverhandeln. Das kostet mich nicht nur Mühe – das ist auch ganz grundsätzlich ohne Sinn und Verstand.

Denn worüber reden wir hier? Über einen Rüstungsauftrag? Über Millionenprojekte?

Nein, wir reden über sehr persönliche Beziehungen zwischen Kunden und mir. Mein Arsch ist immer in der Schusslinie. Das bedeutet: Wenn ich Mist baue, dann bin ich raus. Das ist die immer drohende Konsequenz bei meinen Einsätzen. Schon deshalb bemühe ich mich, einen guten Job zu machen. Aber natürlich auch noch aus anderen Gründen.

Da ich keine Rechtsabteilung als “eh da”-Kosten in meinem Budget habe, empfinde ich diese Verträge als zunehmend belastend. Konzerne (und auch kleinere Unternehmen) versuchen damit eine bürokratische Pseudosicherheit herzustellen, die nichts, aber auch gar nichts zur Sache – z.B. Clean Code oder Teamoptimierung – beiträgt.

Und deshalb ist nun Schluss damit. Nicht nur Datenkraken greifen um sich, sondern auch Vertrags- und Bürokratiekraken. Das nehme ich nicht länger hin.

Verändern kann ich diese Unternehmen natürlich nicht direkt. Aber ich kann mit ihnen reden. Manchmal hilft das schon: Wenn ein Geschäftspartner von Vertrag spricht, dann sage ich “Nein, danke. Ich brauche keinen.” Ein solches Beispiel ist developer media, mit denen ich ein Seminar zum Thema Softwarearchitektur und zusammen mit Andrea Kaden eines zum Thema Zeitmanagement mache.

Dort wollte man mir zum Abschluss der Planungsgespräche einen Vertrag schicken – und ich habe Nein gesagt. Das fand man völlig ok. Sehr schön. Interessanterweise gab man dann auf Nachfrage an, dass insbesondere junge Trainer einen Vertrag wollten. Das hat mich gewundert. Ich hatte gedacht, dass junge Menschen eher informell arbeiten wollen.

Was aber, wenn das Gespräch nichts nützt? Dann erhebe ich eine Vertragsunterzeichnungsgebühr von 300 EUR zzgl. MwSt pro schriftlichem Vertrag. Die ist leider nötig, weil ich Verträge ja auch meinem Rechtsanwalt vorlegen muss, um auf Augenhöhe mit dem Vertragspartner zu sein. Das ist doch verständlich, oder?

Und wenn nicht, dann darf man das gern auch als eine widerständige Reaktion sehen. Ich will mich einfach nicht jedem System anpassen müssen, das kontraproduktiv handelt. Mir fehlt schlicht das Vertrauen, dass so eine Maßnahme wirklich, wirklich wichtig und zu beiderseitigem (!) Vorteil ist. Bis zum Beweis des Gegenteils sind solche Verträge, wie sie mir in meiner Arbeit begegnen, parasitäre Erscheinungen von Subsystemen – Rechtsabteilung, Einkauf, Geschäftsleitung… –, die über das Ziel hinausschießen. Da geht es nicht mehr um eine sinnvolle Klärung, sondern platt ums “Arsch absichern”.

Gerade erst habe ich von einem Fall gehört, wo ein externer Trainer einmal etwas über ein Unternehmen “ausgeplaudert” hat – und das den Weg in die falschen Ohren gefunden hat. Da war es vorbei mit der Ungezwungenheit. Fortan müssen nun alle externen Trainer 3 Seiten Geheimhaltungsvereinbarung unterschreiben.

Und was bringt die? Nichts. Durch die 3 Seiten wird niemand ein besseres Gedächtnis bekommen, um sich zu erinnern, was er nicht ausplaudern sollte. Niemand bekommt einen besseren Maßstab für sensible Daten. Vor allem aber enthält die Vereinbarung keine (!) Konsequenzen bei Zuwiderhandlung. Jedenfalls keine jenseits dessen, was ja ohnehin passieren würde: die Aufkündigung der Zusammenarbeit.

Nein, ich will die Pseudosicherheit von Verträgen nicht länger unterstützen. Als Signal “an das System” sende ich deshalb etwas, das Unternehmen verstehen: Kosten. Wer Verträge will, bekommt sie – muss dafür aber bezahlen. Dann kann sich “das System” überlegen, ob es sich lohnt, die Pseudosicherheit aufrecht zu erhalten.