Wer ist ein Clean Code Developer (CCD)?
TracNav
Clean Code Developer streben ganz bewusst danach, ihr Wissen ständig zu erweitern. Sie reflektieren ihre Arbeit und diskutieren sie mit anderen. Und Clean Code Developer fühlen sich einem Wertesystem verpflichtet - das sie auch gegen Projektdruck verteidigen. Clean Code Developer haben einen Qualitätsanspruch, der sich nicht nach der letzten Mode richtet und nicht Fähnchen im Wind ist, der vom Kunden weht.
Professionalität
Das bedeutet nicht, dass Clean Code Developer starr in ihrem Denken wären. Im Gegenteil! Da sie reflektieren, sind sie offen für gute Argumente und können auch Kompromisse eingehen. Wo sie jedoch Kompromisse eingehen, da tun sie es ganz bewusst und machen ihre eigentliche Position deutlich.
Der "Schutzheilige" der Clean Code Developer, Robert C. Martin, macht diese Haltung in einem Podcast-Interview mit einer Analogie anschaulich:
Ein professioneller Arzt wird sich vor einer Behandlung immer die Hände waschen. Das gehört zu seinen Prinzipien, zu seinem Wertesystem, in dem "nicht schaden" (da heilen oft schwer fällt) ganz oben steht. Wenn nun ein Patient, d.h. der Kunde eines Arztes verlangte, er solle auf das Händewaschen verzichten, dann würde der Arzt das ablehnen. Abhängig von der konkreten Behandlung (äußerliche Untersuchung oder Herztransplantation) wäre er sicher kompromissbereit - ganz grundsätzlich würde er jedoch einen Verzicht auf Sauberkeit ablehnen.
Ärzte haben Prinzipien, die ihre Profession durch jahrhundertelange Reflektion herausgearbeitet hat.
Genauso meinen wir als CcdTeam, dass Softwareentwickler unverbrüchlichen Prinzipien folgen sollten, wenn wir als professionell gelten wollen. Diese Prinzipien sollen nicht unveränderlich sein, sondern im stetigen Dialog weiterentwickelt werden. Dennoch sollen sie auf dem jeweiligen Stand unverbrüchlich gelten - bei Gefahr der Unprofessionalität oder gar des Kunstfehlers bei Nichtbeachtung.
Grundlegende Prinzipien
Was könnten grundlegende Prinzipien sein, die die Professionalität eines Softwareentwicklers ausmachen? Definieren nicht schon die Curricula von Universitäten, Berufsakademien oder gar Microsofts MOC Kurse genügend Wissenswertes?
Ja und nein. Natürlich enthalten die Curricula der diversen Ausbildungsinstitutionen Wissenswertes. Aus unserer Sicht ist das aber gerade ein Problem. Soviel Wissenswertes kann kaum jeder wissen, der professionell Software entwickeln will.
Auf der anderen Seite fehlt den Curricula aber auch Essenzielles. Wichtiges - wie die praktische oder pragmatische Programmierung erkannt hat - ist abwesend oder kommt zu kurz oder hat die falsche Priorität.
Das Ergebnis ist eine Uneinheitlichkeit der Ausbildung zum Softwareentwickler, die zwischen akademisch-universal und herstellerspezifisch schwankt. Das Bild des Softwareentwicklers ist deshalb unklar. Es gibt keinen Konsens darüber, was man von einem professionellen Softwareentwickler minimal erwarten kann.
Also schlagen wir als CcdTeam eine Reihe von Prinzipien, Grundsätzen, Maximen, Vorgehen vor, von denen wir aus unserer Praxis kommend und nach Sichtung der Literatur meinen, dass sie als kleinster gemeinsamer Nenner von allen professionellen Programmierern geteilt werden können und sollten.
Dieser Vorschlag für ein Wertesystem unserer Profession ist herstellerunabhängig. Uns geht es nicht um Werkzeuge eines bestimmten Anbieters, wenn auch zum einen oder anderen Prinzip oder Vorgehen Werkzeuge gehören mögen.
Genauso ist das Wertesystem abseits vom Hype. "Tried and true" sollen seine Inhalte sein und maximal unabhängig von der neuesten Mode. Das heißt allerdins nicht, dass sich das Wertesystem nicht verändern soll. Im Gegenteil! Es ist als lebendiges System gedacht, dass sich durch kontinuierlichen Dialog weiterbildet. Neue, taugliche Prinzipien können darin Eingang finden, Veraltetes kann verschwinden.
Clean Code Developer sind Softwareentwickler, die sich diesem Wertesystem verpflichtet fühlen - und daran mitgestalten wollen. Sie leben es anderen Entwicklern vor. Sie vertreten es gegenüber Kunden und Vorgesetzten als Grundlage ihrer Profession.
Entwicklungsschritte
Sich so ein Wertesystem anzueignen ist natürlich keine Sache, die man nebenbei erledigt. Es kostet Zeit, sich darauf einzulassen, die Prinzipien einzuüben und ihre Umsetzung zu Reflektieren. Wir denken daher, dass es günstig ist, das Wertesystem in eine Stufenfolge zu gliedern. Die beginnt mit dem Grundlegenden und Einfachen und steigt dann schrittweise im Schwierigkeitsgrad.
Das mag wieder altmodisch klingen, ist aber der lernpsychologischen Realität geschuldet: Lernen braucht Zeit und Lernen findet in kleinen Schritten statt. Wenn der eine dabei schneller und der andere langsamer fortschreitet, ist das ja nicht schlimm. Sprünge halten wir jedoch für unrealistisch. Alle Clean Code Developer beginnen daher auf der ersten Stufe des CCD Grade-Systems.
Das Zeichen der Clean Code Developer
Da Lernen Kraft kostet und in Gemeinschaft besser funktioniert, glauben wir, dass ein äußeres Zeichen des Committments hilft, Clean Code Developer zu werden und zu bleiben. Wir bieten daher jedem der mag an, von uns zum Selbstkostenpreis ein Silikonarmband zu beziehen. Das ist als Symbol des Willens zur Professionalität recht dezent und eignet sich sogar als Werkzeug bei der Vertiefung des Lernens.
Auch diese Idee ist zu einem gewissen Grad Robert C. Martin geschuldet. Er hat ein ähnliches Armband getragen und angeboten es auch anderen zu schicken - leider reagiert er aber nicht mehr auf diesbezügliche Zuschriften. Solch ein Armband fanden wir nun so cool, dass wir uns entschieden haben, es zu übernehmen und sogar noch etwas auszubauen.
Das CcdArmband gibt es in verschiedenen Farben, die jeweils einem der CcdGrade entsprechen. Wenn sich zwei Clean Code Developer treffen, können sie also leicht erkennen, wo sie auf ihrem Entwicklungsweg stehen.
Klingt wieder altmodisch? Nein, wir finden das total zeitgemäß. In diesen Armbandfarben bzw. im Gradesystem dahinter steckt moderne Psychologie und auch Spaß am freundschaftlichen Wettbewerb. Sie drücken moderne Bewusstheit aus sowie Anerkenntnis dessen, dass alte Systeme mit ihren Graden (z.B. Budo-Sportarten) auch zeitlose Weisheiten vermitteln können.
Aber natürlich sind die Armbänder keine Pflicht. Wir finden sie nur einfach hip und nützlich.
Auch sonst gibt es keine Pflichten für Clean Code Developer. Ein Clean Code Developer zu werden, kostet nichts. Jeder kann sich auf den Weg machen. Jetzt! Einzig der Wille zur Professionalität im Sinne von Reflektion + Wertesystem ist nötig.
Hier gehts los...
PS: CCD und Objektorientierung?
Wir gehen davon aus, dass Clean Code Developer vor allem objektorientierte Sprachen einsetzen. Das CCD-Wertesystem ist aber nicht per se auf Objektorientierung ausgerichtet. Es enthält Aspekte, die sich konkret darauf beziehen (z.B. Liskov Substitution Principle), anderes gilt hingegen für jede Art von Programm (z.B. automatische Tests).
Die Elemente des Wertesystems sind daher so in den Graden angeordnet, dass sie vom Allgemeinen zum Spezifizischen fortschreiten. Am Anfang stehen universelle Prinzipien, die auch für die prozedurale Programmierung in C gelten; später folgen dann auch spezifisch objektorientierte Prinzipien.
Hier setzen wir also nur voraus, dass jemand überhaupt "irgendwie" programmieren kann. Ist das der Fall, dann bieten wir mit den CCD-Werten ein System, dass zur Verbesserung dieser Fähigkeit beiträgt.
