Nachdenken über Clean Code Developper

Die Initiative
Über ein Jahr ist es her, dass Ralf Westphal und Stefan Lieser die Clean Code Developer Initiative ins leben gerufen haben. Viel Lob gab es für die Initiative aus der Entwickler-Community. Im Großen und Ganzen ist jeder der Meinung, dass die Prinzipien und …. richtig und wichtig sind und angewandt werden sollten.
Natürlich gibt es auch einige Stimmen die sagen, dass die Prinzipien und Praktiken zu übertrieben seien oder aufgrund des großen Aufwandes nicht umsetzbar seinen. Wieder andere stören sich an den empfohlenen Armbändern und Graden. Selbstverständlich ist fast allen klar, das der vorhandene Mehraufwand während der Einarbeitung in die Prinzipien und Praktiken im Nachhinein durch die bessere Wartbarkeit des Codes wieder rein geholt wird. Ebenfalls betonen die beiden Initiatoren immer wieder, dass die Armbänder und die Einhaltung der Grade kein Muss ist, sondern eine Empfehlung um sich Stück für Stück in die Prinzipien und Praktiken einzuarbeiten, um den Überblick zu behalten und nicht alles auf einmal lernen zu müssen.
Ich persönlich halte die Initiative und die Motivation von Ralph und Stefan für eine großartige Sache. Ich habe in meiner Laufbahn als Webentwickler gesehen, dass es nötig ist Entwickler zum Umdenken zu bewegen, dass es dringend erforderlich ist, dass sich ein neues und besseres Qualitätsbewusstsein bei den Entwicklern durchsetzt. Damit sage ich nicht, dass ich die Prinzipien und Praktiken selber schon komplett verinnerlicht habe und selber ständig Clean Code schreibe. Ganz im Gegenteil, eine Punkte muss ich selber lernen, wie z. B: Test Driven Developement. Ich weis, dass TDD richtig ist und umgesetzt werden sollte, aber ich habe es selber noch nicht geschafft wirklich richtig TDD einzusetzen. Ich ertappe mich immer wieder dabei, das ich mehr implementiere, als die aktuelle Anforderung verlangt. Was TDD angeht hat mein Kopf noch nicht komplett umgestellt. Ich bin also selber noch dabei alle Prinzipien und Praktiken zu verinnerlichen.
Das Problem der Initiative
Ich denke mit meiner Einstellungen zur Clean Code Developer Initiative stimme ich mit der Mehrheit der Community überein und genau das ist das große Problem an CCD.
Die Clean Code Developer Initiative ist meines Wissens leider nur in der Entwickler Community bekannt, mehrheitlich sogar nur in der .NET-Entwickler Community. Ralf und Stefan nutzen mehrheitlich die Kanäle der Community (Usergroups, Foren, Blogs, Twitter, Fachzeitschriften) und sprechen damit natürlich auch nur aktive beteiligte der Community an.
Stefan erzählte mir, bei seinem Besuch beim .NET-Stammtisch Konstanz-Kreuzlingen, dass eine Kampagne gestartet wurde, bei der möglichst viele Berufsschulen angeschrieben wurden um auf CCD aufmerksam zu machen. Stefan und Ralf wollten das Problem bei den Wurzeln packen, nämlich bei der Ausbildung der zukünftigen Softwareentwickler. Das Ergebnis war ernüchternd: Laut Stefan gab es keinerlei Feedback auf diese Kampagne.
Um ganz ehrlich zu sein: Ich hätte das leider so oder so ähnlich vorhersagen können.
Das Problem der Berufsschulen
Leider sieht es in den meisten Berufsschulen so aus (wie ich vor mehreren Jahren im Gespräch mit einem Berufsschulrektor und selber während meiner Ausbildung zum Fachinformatiker für Anwendungsentwicklung erfahren habe ), dass bestimmte Fachrichtungen bevorzugt werden. Leider sind es in den wenigsten Fällen die die IT-Berufe. Die IT-Klassen sind diejenigen, die häufig in den Berufsschulen eine Randbedeutung haben. Das sind die Klassen, die angeboten werden müssen, weil es im Gesamtangebot gut aussieht. Warum das so ist, kann ich nicht sagen und ich möchte auch an dieser Stelle nicht darüber spekulieren.
Hinzu kommt, dass es zwei verschiedene Arten von Lehrern gibt. Das sind zum einen die unmotivierten ehemaligen Apotheker (kein Witz!), die einem Objektorientierung anhand von C++ nahe legen sollen zum anderen die jungen, motivierten Lehrer die tatsächlich aus dem echten IT-Leben kommen und wissen, was es heißt junge Menschen Fachwissen beizubringen. Leider sind letztere sehr selten anzutreffen :-/
Desweiteren kommt hinzu, dass die angehenden Anwendungsentwickler in den seltensten Fällen eine einzelne klasse bilden. Oft sitzen angehenden Anwendungsentwickler mit angehenden Systemintegratoren in einer Klasse. Beide Fachgebiete bekommen den gleichen Lehrplan, lediglich die Prüfungen sind unterschiedlich. Die Schüler fragen sich bei über der Hälfte der Fächer, was sie hier überhaupt zu suchen haben. Wieso muss ein Anwendungsentwickler wissen wie er einen RJ45 Stecker an das Kabel moniert und was hat ein Systemintegrator mit objektorientierter Programmierung zu tun.
Der motivierte angehender Anwendungsentwickler sieht die Zeit in der Berufsschule als störende Unterbrechung seiner interessanten Arbeit im Geschäft. Der motivierte angehender Anwendungsentwickler sitz im Unterricht und beschäftigt sich mit dem aktuelle Kundenproblem. Und der motivierte angehender Anwendungsentwickler lernt zu 95% im geschäftlichen Alltag und nicht in der Berufsschule. Der Grund hierfür ist dass er in der Schule nicht neues oder nichts relevantes lernt. Die Themen sind entweder altbacken oder passen nicht in sein Fachgebiet.
Kann man dann wirklich CCD über die Berufsschulen an die Auszubildenden zu bringen? Ich denke nicht.
Mit den obigen Aussagen möchte ich aber auf keinen Fall die Ausbildung zum Fachinformatiker für den Bereich Anwendungsentwicklung schlecht machen. Ganz im Gegenteil. Der ausgebildete Anwendungsentwickler ist ein Fachmann mit - im Normalfall – dreijähriger Berufs- und Projekterfahrung, den ich persönlich einem frischgebackenen Uni- oder FH-Abgänger vorziehen würde. (Natürlich spielen da noch weitere Faktoren eine Rolle.)
Eine Firma die selber ausbildet, schafft sich einen Mitarbeiter, der optimal an die Bedürfnisse der Firma angepasst ist, die Firma und deren Prozesse kennt und nicht eingearbeitet werden muss.
Gibt es Lösungen?
Um das Problem der Berufsschulen zu lösen, sind nicht Ralf und Stefan gefragt, sondern die ausbildende Industrie selber. Es liegt an denen, den Kammern und den Schulen mit dem nötigen Druck davon zu überzeugen, die schulische Ausbildung ihrer “Zöglinge” zu verbessern und praxisnah zu gestalten. Selbstverständlich versucht das jeder Industriezweig, worauf die Schulen doch wieder die Fachgebiete priorisieren müssen. Da beißt sich die Schlange in den Schwanz…
CCD sollte, aus meiner Sicht, direkt in den Firmen selber bekannt gemacht werden und dafür ist die Initiative so wie sie ist eigentlich schon bestens geeignet :-) Allerdings lässt sich das nicht in einer Hauruckaktion erledigen, sondern ist ein langwieriger Prozess, bei dem es noch mehrere Jahre gehen wird, bis die Mehrheit der Entwickler die Prinzipien und Praktiken überhaupt mal durchgelesen haben. Aber dafür sind die Instrumente und das Merchandising der Clean Code Developer Initiative genau richtig. Die Armbänder und auch die T-Shirts provozieren regelmäßig eine Unterhaltung, die jedes Mal mit der Frage “Was ist denn ein Clean Code Developer?” beginnt.
Ich bin der Meinung, dass die Initiative an sich schon bewirkt, dass die Mehrheit der Entwickler auf lange Sicht umdenken. Aber auf die Schnelle ist das sicher nicht zu bewerkstelligen.
Schlusssatz
Dieser Beitrag ist keine Kritik an der CCD-Initiative und auch keine Kritik an der Mehrheit der Entwickler, sondern ist einfach nur eine Niederschrift meiner Gedanken über meine Erfahrung mit der Initiative und den Berufsschulen in Deutschland. Ich hoffe nicht, dass sich damit jemand auf irgend einer Weise angegriffen fühlt.