zurück zum Artikel

Ralf Westphal im Gespräch über Clean Code Developer

Alexander Neumann

Anfang des Jahres wurde die "Clean Code Developer"-Initiative gestartet. "heise Developer" nutzte die Gelegenheit, Mitbegründer und .NET-Experte Ralf Westphal ein ausführliches Resümee ziehen zu lassen.

Ralf Westphal.jpg

Ralf Westphal, Microsoft MVP für Softwarearchitektur, ist freiberuflicher Berater, Projektbegleiter und Trainer für Themen rund um .NET-Softwarearchitektur.

Anfang des Jahres wurde die "Clean Code Developer"-Initiative gestartet. Sie hat zum Ziel, ein Qualitätsbewusstsein in der professionellen Softwareentwicklung zu schaffen. heise Developer nutzte die Gelegenheit, Mitbegründer und .NET-Experte Ralf Westphal ein ausführliches Resumee ziehen zu lassen.

heise Developer: Ralf, ihr bezieht euch mit eurer Initiative auf das Buch von Robert C. Martin [1], wollt euch aber von einigen seiner Ideen unterscheiden. Vielleicht stellst du erst mal kurz dar, wie es zur "Clean Code Developer [2]"-Initiative kam?

Ralf Westphal: Clean Code Developer ist fast schon das konsequente Ergebnis zweier Lebenswege anlässlich einiger Zufälle. Stefan Lieser und ich hatten uns auf dem Open Space 2008 in Leipzig kennen gelernt und waren danach in E-Mail-Kontakt geblieben, in dessen Verlauf wir zufällig darüber stolperten, dass wir beide "Clean Code" gelesen hatten. Wir überlegten, wie man die Inhalte des Buchs einer größeren Zahl von Entwicklern nahe bringen könnte. Dass es mit einer Aufforderung zum Lesen nicht getan sein konnte, war uns klar. Außerdem fehlten uns einige Aspekte hochqualitativen Codes in Martins Buch. Mit manchen seiner Empfehlungen stimmen wir auch nicht überein. Also war für uns klar, dass wir etwas Eigenes auf die Beine stellen mussten.

Stefan erwähnte, dass Martin ein Armband trägt, das seine Clean-Code-Haltung zum Ausdruck bringen soll. Das erinnerte mich an eine andere Bewegung [3], von der ich gehört hatte, die mit Armbändern nicht nur eine Haltung demonstriert, sondern sie auch als Hilfsmittel benutzt, um die Haltung einzuüben. So kamen wir auf die Gürtel im Kampfsport, die eine Weiterentwicklung symbolisieren. Am Ende standen die sogenannten "Clean Code Developer"-Grade und die Armbänder. Die Grade definieren einen Weg durch die "Clean Code Developer"-Inhalte, und die Armbänder sind gleichermaßen Symbol für die Arbeit daran wie auch Lernhilfsmittel. Im Wiki beschreiben wir das näher.

Die Armbänder sind natürlich nur eine Äußerlichkeit. Ob man eines trägt oder nicht, das ist letztlich egal. Sie sind nicht jedermanns Sache. Wichtig ist, ob ein Entwickler eine "Clean Code Developer"-Haltung verinnerlicht. Das kann man nicht an einem Armband ablesen, sondern nur an Softwareartefakten.

heise Developer: Was wollt ihr mit der Initiative bewirken?

Westphal: Hier enden die Zufälligkeiten, und unsere Lebenswege treten in den Blick: Für Stefan zieht sich das Thema Qualität durch sein berufliches Leben. Hohe Qualität dessen, was er produziert – heute Software, früher Hardware-Infrastruktur –, befriedigt ihn nicht nur in einem absoluten Sinn, sondern er hält sie auch für erfolgskritisch.

Bei mir ist die innere Qualität von Software erst in den letzten Jahren in den Blick gerückt, seitdem ich mich mit Architektur beschäftige. Vorher war ich technikorientiert – allerdings immer schon auf dem Weg vom Konkreten ins Allgemeine, ins Konzeptionelle. Irgendwann hatte ich dann mal die Idee einer "Qualitätsbilanz", das heißt eines Dokuments, mit dem ein Softwarehaus beschreibt, was es für die Qualität seiner Software tut. Wenn Unternehmen Bilanzen ihrer Finanzen veröffentlichen müssen, um der Öffentlichkeit Einblick in ihre Wirtschaftlichkeit zu geben, warum sollten Unternehmen oder zumindest Softwareteams nicht auch Einblick in ihre Fähigkeit geben, langfristig wirtschaftliche Software herzustellen?

Mir ging es darum, Unternehmen bewusst zu machen, wie viel Geld sie mit schlechter Softwarequalität "verbrennen" – selbst wenn die Umsätze sie irgendwie gerade noch tragen. Die Idee stieß bei Stefan auf offene Ohren, und so sahen wir das Buch "Clean Code" als pragmatischen Ausgangspunkt für mehr Bewusstsein hinsichtlich innerer Softwarequalität. Denn um die geht es uns. Wir machen keine Aussage zu äußerer Qualität, die zum Beispiel mit Funktionen, Usability oder Skalierbarkeit zu tun hat. Uns geht es um Wartbarkeit – auch wenn wir den Begriff unglücklich finden. Sehr viele Projekte stecken in einem Wartungsalbtraum. Aus dem wollen wir sie wecken. Andere Projekte bewegen sich darauf zu. Denen wollen wir zeigen, dass der Albtraum vermeidbar ist.

heise Developer: Damit seid ihr allerdings nicht allein. Wie grenzt ihr euch von anderen Bewegungen ab?

Westphal: Natürlich sind wir mit Clean Code Developer nicht die einzigen, die etwas zu innerer Qualität sagen. Teile von eXtreme Programming (XP) widmen sich auch der inneren Qualität (zum Beispiel Refactoring, Pair Programming). Doch XP ist zunächst mal ein Vorgehensmodell; es nimmt die Entwickler in Bezug auf innere Qualität nicht genügend an die Hand.

Dann gibt es in den USA die Software-Craftsmanship [4]-Bewegung. An ihr ist auch Robert C. Martin beteiligt. Da gibt es sicher mehr Berührungspunkte mit Clean Code Developer – doch die Differenzen überwiegen aus unserer Sicht. Die Software Craftsmen sehen sich als Gegenentwurf zum Software Engineer. Sie glauben nicht mehr an eine systematische, ingenieurmäßige Softwareentwicklung. Für sie ist eine grundsätzlich andere Herangehensweise wichtig, eben eine handwerkliche. Damit nehmen sie wieder, wie schon XP und Scrum, den Prozess in den Blick. Wie nun genau das Werk eines Software Craftsman aussehen soll, das bleibt merkwürdig unklar. Bei allem Willen zu mehr Qualität sind die Software Craftsmen für uns daher zu unkonkret. Außerdem haben wir nichts gegen den Versuch, systematischer oder gar industriemäßiger zu werden. Der Titel "Software Engineer" lässt sich aus unserer Sicht sinnvoll mit Leben füllen.

Schließlich ist Softwarequalität das Thema von Verbänden und Normen. Da kann man sich ISO-zertifizieren lassen oder sich auf ein CMMI-Level heben. Das ist alles schön und gut. Nur sehen wir nicht, dass diese Initiativen auf breiter Front Erfolg haben. Der Entwickler einer Branchensoftware in einem 5-Mann-Team hat davon sogar wahrscheinlich nicht einmal gehört. Ganz zu schweigen davon, dass seine kleine Softwareschmiede eine Zertifizierung wegen der hohen Kosten nicht durchlaufen würde. Die "große", "formale", "offizielle" Softwarequalität lässt also eine sehr große Zahl von Projekten außen vor, weil sie bürokratisch und teuer ist.

Mit Clean Code Developer wollten wir daher eine Lücke schließen, die wir in unserer Arbeit in vielen Projekten gesehen haben. Es geht uns "nur" um eine ganz pragmatische und vor allem innere Softwarequalität, die sich mit etwas gutem Willen und ein paar Werkzeugen in jedem Projekt herstellen lässt. Von anderen Initiativen unterscheiden wir uns also schon einmal durch unseren Fokus.

Darüber hinaus legen wir Wert auf die Didaktik. Denn der schönste Fokus nützt nichts, wenn sich das Ziel nicht erreichen lässt. Clean Code Developer unterscheidet sich unserer Meinung nach daher von anderen Initiativen durch sein Stufenkonzept. Wir haben den "Lernstoff" von vornherein eingeteilt, sodass ein klarer Weg hindurch sichtbar ist. Wir holen die Entwickler bei ihrer Überlastung ab und zeigen ihnen, wie sie in kleinen Schritten – definiert in den CCD-Graden – zu einer Veränderung ihrer Haltung und damit zu höherer Codequalität kommen.

heise Developer: Warum scheint es gerade jetzt dafür das Bestreben zu geben, dass solche Initiativen verstärkt aufkommen?

Westphal: Softwarequalität im Allgemeinen ist natürlich kein neues Thema. Es gibt – wie gesagt – viele Initiativen, die sich damit auf die eine oder andere Weise auseinander setzen. Auch an Literatur mangelt es nicht. Und doch: Irgendwas ist heute anders.

Ich denke, wir haben eine kritische Masse an Legacy-Code überschritten. Dazu kommen immer anspruchsvollere Kunden. Und die Technikanbieter treiben uns noch mehr als früher zu Veränderungen. Ergo: In weniger Zeit ist immer mehr zu erledigen, dadurch stolpern Teams deutlicher als bisher über den Haufen "technical debt", den sie aufgetürmt haben. Früher sind wir sozusagen vom 1-Meter-Brett ins Wasser gehüpft; da ist ein Sprung von schlechter Qualität kein Problem. Jetzt hingegen springen wir vom 10-Meter-Brett und tun gut daran, wirklich sauber zu springen, denn ein Bauchklatscher kann tödlich sein.

Schließlich ist Bewusstheit – und um nichts anderes geht es bei Clean Code Developer – immer auch eine Sache des Alters. Es gehört zum Entwicklungsprozess. Die Branche kommt langsam aus der Pubertät heraus. Wir entwickeln einen Blick über uns und den Moment hinaus. Angefangen hat das aus meiner Sicht mit der Pattern-Bewegung Mitte der 1990er. Sie hat jenseits akademischer Kreise einen Schritt zurück gemacht und abstrahiert. Die Agilitätsbewegung war der nächste Schritt. Und jetzt geht es um innere Qualität, um Nachhaltigkeit.

Auch bei Clean Code Developer geht es um Patterns im weitesten Sinn, um Best Practices. Voraussetzung dafür sind jedoch Daten, in denen man überhaupt Muster erkennen kann. Was führt zum Erfolg, was ist kontraproduktiv? Die Datenlage ist anscheinend erst seit vielleicht etwas mehr als fünf Jahren ausreichend, um akzeptable Muster nicht nur zu sehen, sondern auch verbreiten zu können. Wir haben damit vielleicht 20 bis 30 Jahre im Allgemeinen an massenhafter Softwareentwicklung gebraucht und 15 Jahre Objektorientierung und Rapid Application Development (RAD). Das halte ich für verständlich.

heise Developer: Wen seht ihr denn als eure Zielgruppe?

Westphal: Vor allem erst mal die Entwickler. Wir kommen also von unten die Organisationshierarchie herauf. Die ersten Schritte zum Clean Code Developer kann jeder Entwickler für sich allein tun. Er muss niemanden um irgendetwas bitten. Er braucht dafür kein Budget und keine Managementzustimmung. Ab einem gewissen Punkt ändert sich das natürlich. Dann ist das ganze Team gefragt. Deshalb sind auch Softwarearchitekten und Projektleiter unsere Zielgruppe. Am Ende kommen wir am Management ebenfalls nicht vorbei. Denn hohe Softwarequalität ist ultimativ eine strategische Entscheidung.

heise Developer: Wie fällt bislang das Feedback zu Clean Code Developer aus?

Westphal: Das Feedback ist sehr gut. Mehrere hundert Entwickler sind Mitglied in den Diskussionsforen bei Google [5] und XING [6]. Armbandbestellungen gehen bei uns fast täglich ein. Vorträge halten wir darüber, wo wir können: auf .NET-Veranstaltungen oder User-Group-Treffen, aber auch vor Java- oder C++-Entwicklern. Neulich habe ich zum Beispiel vor 50 Entwicklern und Testern eines mittelständischen Industrieunternehmens die Initiative präsentiert.

heise Developer: Mittlerweile haltet ihr ja sogar Schulungen.

Westphal: Das Clean Code Developer Camp [7] beziehungsweise die School of .NET [8] als Seminarangebote waren nicht konkret von vornherein geplant. Uns war zwar klar, dass das Thema irgendwie Unterstützung durch Publikationen, Beratungen und Trainings braucht – doch einen Masterplan hatten und haben wir nicht in der Tasche. Das Thema "gehört" uns ja nicht. Wir freuen uns immer, wenn mal jemand anderes darüber öffentlich berichtet. Auf Mathemas Herbstcampus [9] hält zum Beispiel André Fleischer einen Vortrag darüber.

Auch das Thema Zertifizierung hatten wir schon auf dem Radar – haben es dann allerdings erst mal zurückgestellt. Die Community ist noch nicht reif dafür. Früher oder später wird es jedoch Nachfrage dafür geben, CCD-Kompetenz offiziell sichtbarer zu machen als durch ein "Armband des guten Willens".

heise Developer: Wie siehst du den derzeitigen Status eurer Initiative?

Westphal: Clean Code Developer durchläuft wie alle Themen einen Lebenszyklus. In dem stehen wir am Anfang. Wir hatten einen sehr guten Start – jetzt müssen wir schauen, wie wir das Momentum aufrechterhalten können. Nun geht es um Arbeit in der Breite. Denn die bisherige Community von vielleicht 500 bis 600 Entwicklern ist ja nur ein winziger Bruchteil derer, die von Clean Code Developer profitieren könnten.

heise Developer: Bislang bezieht sich Clean Code Developer eher auf die .NET-Community. Gibt es Bestrebungen, das auf andere Plattformen auszuweiten? Die von euch adressierten Nöte sind ja zum Beispiel auch in der Java- oder PHP-Entwicklung zu finden.

Westphal: Entlang zweier Dimensionen wollen wir Clean Code Developer noch weiter tragen: Region und Plattform. Wir arbeiten an einem englischen Wiki, um Clean Code Developer international ins Gespräch zu bringen. Die DACH-Region ist uns also mittelfristig nicht genug. Damit haben wir jedoch keine Eile.

Die andere Dimension ist die der Plattformen. Die "Clean Code Developer"-Bausteine sind nicht plattformspezifisch. Einige beziehen sich zwar auf das OO-Paradigma, ansonsten kann man Java-, C++- oder Ruby- genauso wie C#-Entwickler sein. In einigen Punkten haben wir allerdings bei der .NET-Plattform eine spezifischere Meinung. Zu Tools oder physischer Codeorganisation bei C++ oder Python können wir nicht so konkrete Empfehlungen geben wie bei .NET. Doch das macht nichts. Clean Code Developer ist offen für jeden, der das mit seiner Plattformerfahrung realisieren kann. Wir sind glücklich über jeden, der Lücken in den Bausteinen für andere Plattformen schließt. Im Java-Bereich arbeiten wir mit Leuten zusammen, die bei Detailfragen einspringen, wenn wir mit unserer .NET-Erfahrung nicht weiter wissen.

Dass wir mit .NET und in der .NET-Community angefangen haben, ist keine ideologische Entscheidung gewesen, sondern eine rein pragmatische. Hier kennen wir die Community und die Medien. Wir konnten mit wenig Aufwand große Reichweite erzielen. Es war schlicht einfacher, vom Konkreten zum Allgemeinen zu gehen. Statt eines plattformübergreifenden Frameworks haben wir sozusagen erstmal eine konkrete, plattformspezifische Lösung gebaut. Jetzt, da die läuft, refaktorisieren wir sie. Clean Code Developer frisst hier sein eigenes Hundefutter: schrittweise vorgehen, refaktorisieren, Belange trennen.

Wir sind zuversichtlich, dass wir letztlich die Nöte der Entwickler auf vielen Plattformen in vielen Regionen verständlich adressieren.

heise Developer: Ralf, ich danke dir für die Beantwortung der Fragen.

Die Fragen stellte "heise Developer"-Redakteur Alexander Neumann. (ane [10])


URL dieses Artikels:
https://www.heise.de/-403655

Links in diesem Artikel:
[1] http://en.wikipedia.org/wiki/Robert_Cecil_Martin
[2] http://www.clean-code-developer.de
[3] http://acomplaintfreeworld.org/
[4] http://manifesto.softwarecraftsmanship.org/
[5] http://groups.google.de/group/clean-code-developer
[6] https://www.xing.com/net/ccd/
[7] http://www.prodevcollege.de/produkte-ccdcamp.html
[8] http://www.prodevcollege.de/produkte-sonsyncdev.html
[9] http://www.herbstcampus.de
[10] mailto:ane@heise.de