Neulich wurde ich gefragt, welchen Rat ich jemandem mitgeben würde, der das Ziel hat, ein guter Softwareentwickler zu werden. Lange grübeln musste ich nicht. Ich empfehle jedem wärmstens, sich auf dem Weg zu gutem, sauberen Code an Kent Becks berühmten Satz zu orientieren:
„Any fool can write code that a computer can understand. Good programmers write code that humans can understand.“
Gleichzeitig sollte sich jeder Softwareentwickler die vier "Rules of Simple Design", ebenfalls von Kent Beck, zu Herzen nehmen:
A simple code...
- passes all tests
- expresses every idea that we need to express
- says everything once and only once
- has no superfluous parts
Diese goldenen Regeln sollte ein Softwareentwickler verinnerlichen – und vor allem sein Leben lang perfektionieren. Nur wenn er das Ziel hat, Code nach diesen vier Regeln zu entwickeln, macht er einen bedeutenden Schritt auf dem Weg zum guten Softwareentwickler.
Alles, was wir brauchen, sind 500 Jahre Zeit
Aber was heißt perfektionieren eigentlich? Verdeutlichen wir das an einer kleinen Geschichte:
A tourist visiting England’s Eton College asked the gardener how he got the lawns so perfect. „That’s easy“, he replied. „You just brush off the dew every morning, mow them every other day, and roll them once a week.“
„Is that all?“, asked the tourist.
„Absolutely“, replied the gardener. „Do that for 500 years and you’ll have a nice lawn, too.“
[Andrew Hunts und David Thomas, The Pragmatic Programmer (2000)]
Uns stehen natürlich keine 500 Jahre zur Verfügung, aber was die Geschichte zeigen soll, wird klar: Das kontinuierliche Wiederholen der gleichen Abläufe perfektioniert die Ausführung.
Genau deswegen haben wir die Coding Dojos an fast all unseren Standorten ins Leben gerufen. Leidenschaftliche Softwareentwickler – Kollegen, Freunde, Studenten – nehmen z.B. an unserem Frankfurter Standort jeden zweiten Dienstag im Monat daran teil und üben sich zum Beispiel im Umgang mit testgetriebener Softwareentwicklung (TDD) und ihrer integrierten Entwicklungsumgebung (IDE). Aufgaben waren zum Beispiel:
Umrechnung der römischen Zahlen in Dezimalzahlen und umgekehrt
Beim Umrechnen von römischen Zahlen in arabische Dezimalzahlen haben wir uns mit dem Thema Äquivalenzklassen befasst. Da erschöpfendes Testen aufgrund enormer Komplexität in der Softwareentwicklung unmöglich ist, ist es sinnvoll, entlang von Äquivalenzklassen und ihren Grenzbedingungen zu testen. Ziel dabei ist, die wichtigsten Tests (z.B. Grenzfälle) zu finden, um den Algorithmus zu vervollständigen.
Primfaktorzerlegung
Beim Lösen der Aufgabe haben wir uns mit der Triangulationstechnik der testgetriebenen Softwareentwicklung beschäftigt. Die Triangulationsmethode stammt aus der Radartechnik und ermöglicht, ein Ziel – üblicherweise Flugzeuge – durch das Einsetzen von zwei oder mehreren Radars möglichst genau zu lokalisieren. In der Softwareentwicklung wird die Triangulationsmethode angewendet, um sich die noch anfangs unbekannte Lösung für ein bestimmtes Problem in kleinsten Schritten zu erarbeiten.
Aber was sind jetzt eigentlich Coding Dojos?
Der Begriff "Dojo" bezeichnet in Kampfsportarten wie z.B. beim Karate, den Trainingsraum, in dem die sogenannten "Katas" – vorgegebene Bewegungsabläufe – wiederholt und trainiert.
Eine weiterentwickelte Variante eines Coding Dojos ist übrigens das Coding-Kumite, über das du im Artikel "Die Coding-Dojo-Alternative: Entdecke unser Coding Kumite!" mehr erfahren kannst.
Beim Coding Dojo geht es genau um diese regelmäßige Wiederholung von Abläufen – die Katas sind in diesem Fall kleine Übungsaufgaben.
Die Teilnehmer arbeiten dabei an der gleichen Codebasis und erweitern diese abwechselnd. Und genau das ist ein wichtiger Aspekt, denn in der Softwareentwicklung startet man nicht immer auf der grünen Wiese. Meist übernehmen Softwareentwickler Code, der bereits von anderen entwickelt wurde, und müssen auf diesem aufbauen – oder den Mut haben, ihn zu löschen und doch neu anzufangen.
Mit unseren Coding Dojos wollen wir leidenschaftliche Softwareentwickler dabei unterstützen, die Grenzen und Möglichkeiten ihrer – oder auch einer für sie neuen – Programmiersprache zu testen. Sie stehen dabei immer wieder vor neuen Herausforderungen und experimentieren im Team an verschiedenen Lösungen.
Dabei entwickeln sie transparent und kommunizieren ihre Ideen und Lösungsansätze offen, wodurch die Teilnehmer andere Denkweisen und Entwicklungsmöglichkeiten kennenlernen. Die Coding Dojos schlagen also zwei Fliegen mit einer Klappe: Die Teilnehmer lernen nicht nur konkrete, fachliche Abläufe zu perfektionieren, sondern stärken (hoffentlich) auch ihre Teamfähigkeit.
Ich persönlich würde in Projekten bevorzugt mit Kollegen zusammen arbeiten wollen, die sich die vier goldenen Regeln von Kent Beck zu Herzen nehmen – und diese z.B. mit Hilfe von Coding Dojos zu perfektionieren lernen. Die Zusammenarbeit macht so nicht nur mehr Spaß, die Erfolgswahrscheinlichkeit eines solchen Projektes ist auch höher. Dafür lege ich meine Hand ins Feuer ;)
Nachdem du nun bescheid weißt, was Coding-Dojos sind und wie sie dir bei der Verbesserung deiner Coding-Skills helfen, wirf doch auch mal einen Blick auf unser Coding-Kumite-Format, das wir dir im nächsten Blogartikel vorstellen.
Kommentare