Mehr von Jürgen Gutsch

Mehr von Jürgen Gutsch

Empfehlungen von Jürgen Gutsch

Blog-Empfehlungen von Jürgen Gutsch

Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe

Jürgen Gutsch

ASP.NET und mehr...

News

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.

DotNetKicks-DE Image
Posted: Donnerstag, 11. Februar 2010 10:34 von Jürgen Gutsch

Kommentare

klaus_b sagte:

Ein wirklicher Klasse-Beitrag.

Ich bin kein CCD-Jünger und sehe denoch die Notwendigkeit des Umdenkens ein. In manchen Punkten sehe ich das nicht so extrem wie die CCD Initiative, aber zumindest im Gesamtkonzept stimme ich dem Grundgedanken doch zu.

Gerade mit der Schulthematik hast du den Nagel auf dem Kopf getroffen. Die Politik beruft sich doch so gerne auf den "Fachkräftemangel", dabei ist die ganze Problematik doch hausgemacht.

Im Gesamtbild hast du einen großartigen Artikel zu dem Thema gebracht. Toll und weiter so.

Servus,

Klaus

# Februar 11, 2010 11:33

BFreakout sagte:

Hallo Jürgen,

ich selbst habe bereits lange Zeit vor der CCD initiative mit OOP-Prinzipien gearbeitet und habe peinlichst genau auf sauberen Source-Code wert gelegt. Von daher hätte ich es nicht nötig mich dieser initiative anzuschließen. Ich könnte es auch für zu esoterisch halten oder als Marketing Möglichkeit für Ralf und Stefan.

Aber warum bin ich trotzdem intensiv dabei und mache viel Werbung für CCD? Ganze einfach...

Als Berater für Softwarearchitektur komme ich immer und immer wieder zu Firmen, die überhaupt kein OOP-Prinzip verwenden. Weil Sie es einfach nicht kennen. Das ist auch nicht das Problem, sonst wäre ich nicht gerufen worden. Das Problem daran ist, das es schwer ist, den Firmen klar zu machen wie wichtig diese Prinzipien sind. Weil bisher hatte ja ihre Entwicklung auch funktioniert.

Als Beispiel hatte ich folgendes Scenario in der Praxis erlebt. Spätestens beim refactorisieren vom Source-Code, entstehen zu den meisten Fällen "Extended Methods". Nun kommt der Kunde uns sagt: "Um Gottes willen, aus einer Methode zehn machen.. das geht ja mal gar nicht!".

Trotz mühevoller Erklärungen, wollte sich der Architekt nicht darauf einlassen.

Das selbe erlebe ich auch beim verwenden von Design-by-Contract, worauf ich sehr viel Wert lege.

Genau aus diesen Gründen halte ich sehr viel von dieser Initiative. Damit das arbeiten endlich mehr Spaß macht. Ein weiterer Aspekt spricht für die allgemeine Weiterentwicklung der Prinzipien und der Softwarearchitektur. Denn durch die stetig wachsenden Technologien, verändern sich Aspekte zur Softwarearchitektur. Zum Vergleich von anderen Architekturen (Gebäude-Architektur etc.), sind wir leider noch sehr weit zurück geblieben. Wenn mehr Menschen bewusst wird, wie wichtig CCD ist, und somit erst mal die Grundladen für eine saubere OOP vorhanden ist, kann sich auch endlich die Architektur besser entwickeln.

Das ist meine persönliche Meinung zum ganzen :) Ich habe auch mal aus der Psychologischen Sicht einen Blog-Eintrag zum Thema geschrieben: Clean Code Developer – Bewusstsein ist Veränderung (http://www.dotnet-blog.net/post/2009/02/10/Clean-Code-Developer-e28093-Bewusstsein-ist-Veranderung.aspx)

Dir viele Grüße aus München,

Gregor

# Februar 11, 2010 12:09

Jürgen Gutsch sagte:

@Klaus, vielen Dank :-)

@Gregor, somit unterstützt du den Effekt den die Initiative hervorruft, ohne aktiv der Initiative beigetreten zu sein. Finde ich super :-) So soll es sein. Schließlich geht es nicht um die Initiative selber, sondern um die Inhalte die vermittelt werden sollen. Die Initiative ist nur das Mittel zum Zweck.

# Februar 11, 2010 12:24

dbischof sagte:

Die Ausbildung zum Fachinformatiker ist sinnlos.

Es ist Sinnlos zu erwarten, dass mein Azubi mehr als Grundlagen in der Berufsschule lernen kann. Wir reden hier von 8x 45 Minuten Blöcken mehr als Grundlagen in der Programmierung oder in der Administration können wir nicht erwarten. Das macht natürlich nicht die Ausbildung Sinnlos.

Sinnlos wird es erst wenn man im Betrieb als Azubi der einzige Entwickler ist oder der Chef mal ein VB.NET Buch gelesen hat und glaubt er könne programmieren. Auch diese Betriebe dürfen Fachinformatiker für Anwendungsentwicklung ausbilden. Lächerlich?

Sie lernen es in der Schule also nicht mehr als aus einen guten Buch zu einer Sprache. Das ist in Ordnung aus meiner heutigen Sichtweise. Sie lernen aber in den Betrieben auch nicht wie es geht, weil entweder keiner da ist um es ihnen zu zeigen oder Schlichtweg keine Zeit genommen wird für Code-Reviews & Co.

Ich spreche aus Erfahrung bei mir war es in meiner zweiten Ausbildung ja nicht anders. Ich war der einzige Entwickler in der Firma und brachte mir alles selbst bei. (Sogar mein eigenes Visual Studio hab ich mitgebracht…)

Diesen Missstand können wir aber nicht beheben. Hierzu müssten wir auf langer Sicht den Meistertitel fordern wie in anderen Bereichen üblich um Ausbilden zu dürfen.

Was wir jedoch sehr einfach machen können ist als Community genügend Angebote zu bieten für Azubis. Hier spielen die User Groups eine wichtige Rolle aber auch Blogeinträge zu Problemen oder Themen, Foren und natürlich kostenlose Events. Hier leisten wir schon gute Arbeit könnten aber in den Berufsschulen besser werben für unsere Aktivitäten. Wir reden hier immerhin noch von Jugendlichen die eigentlich lieber Party machen würde als sich mit AntiPattern zu beschäftigen.

In der Berufsschule lernen sie ja auch andere Grundlagen wie BWL, Englisch usw. das ist ein Bereich, den Berufsschulen besser vermitteln können als Betriebe in unserem Bereich. Der angesprochene Nachteil, die Welt der Administratoren kennen zu lernen können wir als Chance begreifen. Grundlagen in der Administration gehören bei einem Anwendungsentwickler auf jeden Fall dazu.

Clean Code Developers ist eine Möglichkeit für alle da Draußen eine „Leitschnur“ zu bekommen an der man sich schön durch den Dschungel von Technologien, Pattern, Werkzeugen usw. leiten kann. Dafür ist CCD einfach perfekt. Wichtig ist nur, dass wir nun allen zumindest erzählen, dass es diese Hilfestellung gibt. Wer nicht weiß, dass es besser geht wird auch nicht nach CCD suchen.

Die Ausbildung zum Fachinformatiker ist also sinnlos, wenn wir erwarten dass sich unsere Azubis selbst ausbilden oder unser Ausbildungsauftrag durch die Berufsschule erfüllt werden muss.

# Februar 11, 2010 14:29

Jürgen Gutsch sagte:

Hi Dennis, vielen Dank für deinen Beitrag :-) Du hast hier einen Ausbildungsbetrieb beschrieben, von denen auch es leider nicht wenige gibt. :-( Das ist das andere Extrem. Selbsverständlich können die Schulen nicht alles übernehmen. Die eigentliche fachliche Ausbildung muss selbsverständlich von den Betrieben ausgehen, aber die Schulen sollten zumindest ihren Lehrplan aktuell halten und auf die Fachgachgebiete anpassen. Der Meistertitel wäre nicht schlecht (bezeichne ich mich doch selber gerne als "Handwerker"), zumindest sollten die Kammern dafür sorgen, das nur qualifizierte Betriebe entsprechende Ausbildungen anbieten dürfen. Allerdings hat der Ausbildungsplatzmangel der letzten Jahre die Kammern dazu gezwungen, die Anforderungen an die Betriebe zu lockern...

# Februar 11, 2010 14:50
Anonyme Kommentare sind nicht zugelassen