//[http://www.klumpp.net/blog/archives/295-Author-and-consultant-Johannes-Link-about-agility,-ethics-of-consulting-and-..-Java-being-a-code-smell..html This is also available in English.]//
Neulich bin ich auf einen Tweet gestoßen:
<a href="https://twitter.com/johanneslink/status/274593126641963009"><img src="/blog/uploads/adventsbloggen2012/johanneslinkjavaisacodesmell.png" /></a>
Ich musste herzlich lachen und stellte mir die Situation folgendermaßen vor: Die diesjährigen [http://www.xpdays.de XPDays] (#xdde12), seit 2004 die deutsche Leitkonferenz für die Themen rund um Extreme Programming. Dann dieser Wettbewerb: [http://www.xpdays.de/twiki/bin/view/XPDays2012/DeutschlandSuchtDenAgilenEntwickler "Deutschland sucht den agilen Entwickler"], und mittendrin [http://johanneslink.net Johannes Link], Urgestein der testgetriebenen/agilen Softwareentwicklung - [http://www.amazon.de/Softwaretests-mit-JUnit-Johannes-Link/dp/3898643255/ unter Java]. Und genau //der// hält ausgerechnet Java für einen [http://c2.com/cgi/wiki?CodeSmell Code Smell] ...
Also habe ich mal nachgehakt.
//Herr Link, auf Ihrer Website steht über Sie: "Berater für agile und testgetriebene Entwicklung. Softwaretherapeut." Unter einem Berater kann sich jeder was vorstellen - aber was ist denn ein// Softwaretherapeut//?//
Ich musste in den jahren meiner Tätigkeit als Berater und Coach feststellen, dass diese Tätigkeit durchaus der eines Therapeuten ähnelt. Am Anfang steht fast immer das Herausfinden der größten Schmerzen meiner Kunden. Das können ganz unterschiedliche Dinge sein: Fehlendes technisches Wissen an wichtigen Stellen, Probleme in der Teamdynamik oder bei der Motivation einzelner Mitarbeiter. Insofern gleicht auch die anschließende Beratung eher einer langfristigen Therapie als einem einzelnen gezielten Ratschlag, weil sich die Richtung jederzeit ändern kann, weil die ständige Beobachtung des Kunden den wesentlichen Feedback-Mechanismus darstellt, und weil nach dem Ausräumen eines Problems ein anderes Problem zum wichtigsten wird.
//Sie sind schon lange in der "agilen Szene" in Deutschland unterwegs und haben dabei unterschiedliche Rollen bekleidet. Wie hat sich in den letzten Jahren das Thema "Agilität" aus Ihrer Sicht entwickelt?//
Für mich ist die entscheidende Veränderung, dass agile Softwareentwicklung zu Beginn - vor mehr als zehn Jahren - eine Bewegung "von unten" d.h. von den Softwareentwicklern selbst war. Der Name "Extreme Programming" macht das sehr plakativ deutlich. In diesen Jahren bestand meine Aufgabe daher maßgeblich darin, ein überzeugtes und meist begeistertes Team noch ein wenig "extremer" zu machen und die passenden Schnittstellen zum Rest der Organisation zu schaffen.
Die Situation änderte sich, als "Agil" und vor allem "Scrum" in den Fokus des Mainstreams geriet. Von da an wurde ich immer häufiger geholt, um dem Management bei der Durchsetzung einer agilen Top-Down-Strategie zu helfen. Dies stößt jedoch bei den Mitarbeitern meist auf großen Widerstand, weil sie nicht gefragt wurden und weil das Management nicht versucht hat, die eigenen Ziele und die der Mitarbeiter aufeinander abzustimmen. Mein persönliches Fazit ist: Wenn ich ein anderes Unternehmen möchte, benötige ich auch andere Mitarbeiter, entweder durch Austausch oder durch freiwillige Veränderung der Einzelnen; in der Regel durch beides. Und am Ende wird es immer welche geben, für die sich die Situation verschlechtert hat. Diesem ethischen Problem müssen wir Berater uns stellen.
Eine weitere Veränderung ist der vergrößerte Baukasten, der uns mit den Methoden des //Lean Developments// und des //Software-Kanbans// zur Verfügung steht. Damit hat sich der Anwendungsbereich von agilen Ansätzen deutlich erweitert. Allerdings bleiben dabei einige der agilen Utopien auf der Strecke, denn nicht jeder per Kanban optimierte Produktentwicklungsprozess orientiert sich am humanitären und individuum-zentrierten Menschenbild des ursprünglichen Extreme Programming.
//Was hatte es nun mit diesem Tweet auf sich: "Got kicked out in first round of DSDAE for mentioning that Java is a giant code smell #xdde12"? Ich kenne einige polyglotte Entwickler, die bei der Aussage sehr hektisch und sehr zustimmend nicken. Allerdings, "giant code smell" klingt ziemlich resolut - was war der Hintergrund?//
Ein //Code Smell// ist etwas, das "komisch riecht" und uns unter Umständen zu Veränderungen der Software (oder des Prozesses) veranlassen sollte. Ob wir einen Geruch wahrnehmen, hängt maßgeblich vom Training unserer Nase ab; je häufiger ich einem Geruch ausgesetzt bin, desto weniger fällt er mir auf. Und ob wir dem Riechen eine Handlung folgen lassen sollten, ist hochgradig kontext-spezifisch. [http://de.wikipedia.org/wiki/Kent_Beck Kent Beck] führt beispielsweise "Kommentare im Code" als Codesmell auf, aber nicht jeder Kommentar kann und sollte umgehend gelöscht werden. Mancher Kommentar wird erst nach langen Refactorings überflüssig, ein anderer bleibt wesentlich, weil er den Grund für eine bestimmte Entscheidung festhält.
Ähnlich verhält es sich mit dem Geruch einer Programmiersprache: Man muss sie eine Zeitlang verlassen haben, um die stinkenden Stellen wahrzunehmen. Java hat eine ganze Palette unangenehm riechender Eigenschaften, viele davon fallen in die Kategorie "überflüssige Zeremonie". Trotzdem gibt es in zahlreichen langlaufenden Projekten keinen zwingenden Grund, Java durch eine Hipster-Sprache zu ersetzen. Auf der anderen Seite muss man sich bei neuen Aufgaben - das kann auch ein neues Subsystem einer bestehenden Software sein - fragen, ob nicht eine andere Sprache (vielleicht eine der über 200 JVM-Sprachen) oder gar eine andere Technologie der zukunftsträchtigere Ansatz ist. Dabei spielt die aktuelle Mode sicherlich eine Rolle, weil die Qualität einer Software auch von der Begeisterungsfähigkeit der beteiligten Entwickler abhängt.
Dennoch kurz zum Kontext des Tweets: Ich war Teilnehmer der Abendveranstaltung "Deutschland sucht den agilen Entwickler" im Rahmen der diesjährigen XP-Days in Hamburg. Als ich mir eingestehen musste, dass meine Konzentration für eine ernsthafte Bearbeitung der Aufgabe ("Suche so viele Codesmells in der gegebenen Codebasis wie möglich") nicht mehr ausreichte, wählte ich den spektakulären Abgang.
//Letzte Frage - die legendäre Fünf-Millionen-Euro-Frage: Wenn Ihnen jemand heute fünf Millionen Euro in die Hand drücken würde, unter der Bedingung, nie wieder Software zu schreiben - würden Sie das Geld annehmen? Was würden Sie anstatt dessen tun?//
Ich würde das Angebot annehmen und anschließend ein Doppelleben als Programmierer im Geheimen führen. Und wenn ich auffliege, werde ich Profispieler in der NBA.
//Herr Link, vielen Dank für das Gespräch.//
//Neben seiner Tätigkeit als Berater und Autor ist [http://johanneslink.net Johannes Link] Vorstand bei der [http://netdosis.de Netdosis AG], einer Ausgründung der Universität Erlangen-Nürnberg. Mit seinem Projekt http://rechnerzeit.net führt er junge Menschen an das Programmieren heran.//
http://klumpp.net/blog/ am : Wünsche zum Jahresanfang
http://klumpp.net/blog/ am : Author and consultant Johannes Link about agility, ethics of consulting and .. Java being a code smell.