besser programmieren lernen durch Coding Dojos

in #deutsch6 years ago

Was versteht man unter einem Coding Dojo?

Der Begriff Dojo kommt aus dem Kampfsport und bezeichnet die Übungshalle in den japanischen Kampfkünsten. Es ist also ein geschützter Raum, in dem risikolos geübt werden kann und in dem es eben nicht ernst wird.

Was hat nun eine Kampfsporthalle mit dem Programmieren zu tun?
In der beruflichen Softwareentwicklung ist es oft so, dass man am Anfang (sei es in der Ausbildung, im Studium oder zu Hause) die Syntax einer Programmiersprache lernt und dann relativ schnell produktiv werden muss.
Oft sind die Projekte, die man unterstützen soll, schon längst überfällig und es geht darum, ein fertiges Produkt möglichst schnell zum Kunden zu bekommen. Und sobald dieses Programm verkauft ist, muss möglichst schnell eine neue Version entstehen, die man dem Kunden verkaufen kann. Oder man muss schnell zu einem anderen Projekt wechseln, das natürlich auch wieder superdringend ist...

Natürlich lernt man auch während dieser Zeit, aber durch den Zeitdruck bleibt während des Alltags in der Regel keine Zeit, um

  • etwas über effizientere Techniken zu lernen ("dafür ist jetzt keine Zeit" - und später meist auch nicht)
  • ein provisorische Methode noch einmal sauber zu programmieren ("Der Kunde wartet. Wozu jetzt noch was ändern, es funktioniert doch?")
  • einmal etwas (z. B. eine neue Technik) auszuprobieren, ohne vorher zu wissen, ob es funktioniert oder wirklich besser ist

Genau hier setzt das Konzept des Coding Dojos an:
Gehe (für in der Regel 90 Minuten) in Deinen Übungsraum (entweder gedanklich oder wirklich an einen anderen Arbeitsplatz) und probiere einmal etwas Neues aus.
Das Ziel des Coding Dojos ist es, etwas zu üben und danach über mehr Fähigkeiten zu verfügen.
Das Ziel des Coding Dojos ist es nicht, am Schluss ein funktionierendes Programm mitnehmen zu können!
Um dieses Ziel absolut sicherzustellen, wird jeglicher Code, der während des Coding Dojos entstanden ist, am Ende des Coding Dojos gelöscht!

Wie läuft so ein Coding Dojo ab?

  • Als erstes wird eine kleine Aufgabe ("Kata" genannt) präsentiert, die man zu lösen versucht.
  • Gleichzeitig wird geklärt, welche Techniken bei der Lösung geübt werden sollen.
    Denn es geht - ich wiederhole mich - nicht darum, möglichst schnell die Aufgabe irgendwie "hinzurotzen", sondern etwas zu lernen.
  • Dann wird versucht, die Aufgabe zu lösen. Bei mehreren Teilnehmern bietet es sich an, die Tastatur relativ schnell "wandern" zu lassen.
  • Die letzten 15 Minuten Ende dienen der Reflektion über das Coding Dojo
    • was lief gut?
    • was lief weniger gut?
    • was habe ich bzw. haben wir gelernt?
    • was sollten wir in Zukunft ändern?
    • was wollen wir in (einer) der nächsten Coding Dojos ausprobieren?

Die Aufgabe selbst kann sehr einfach sein, z. B. das Programm "Fizz Buzz":

  • ersetze jede durch 5 teilbare Zahl durch "fizz"
  • ersetze jede durch 7 teilbare Zahl durch "buzz"
  • ersetze jede durch 5 und 7 teilbare Zahl durch "fizzbuzz"
  • gebe alle anderen Zahlen normal aus

Klingt nach einer einfachen Aufgabe. Und spätestens, wenn man eine Lösung kennt, kann man sie binnen wenigen Minuten herunterschreiben. Wo soll da die Herausforderung sein?!?
Die Herausforderung kann in folgenden Einschränkungen (auch "Constraints" genannt) bestehen:

  • schreibe das Programm mit einer bestimmten Entwicklungsumgebung, die Du noch nicht kennst
    Ziel des Coding Dojos ist es, diese Dir neue Entwicklungsumgebung kennenzulernen
  • schreibe das Programm in einer bestimmten Programmiersprache, die Du noch nicht kennst
    Ziel des Coding Dojos ist es, diese Dir neue Programmiersprache kennenzulernen
  • schreibe das Programm ohne Verwendung von "if"
  • jede Methode darf (ohne Zeilen, die nur Klammern enthalten) maximal 5 Zeilen lang sein
  • das Programm muss mit der Methode TDD entwickelt werden
  • es ist eine Versionsverwaltung zu verwenden. Das Programm darf nur eingecheckt werden, wenn es lauffähig ist und alle Test müssen "grün" sind. Zwischen den Check-ins dürfen maximal 120 Sekunden liegen. Ist das Programm 120 Sekunden nach dem letzten Check-In nicht lauffähig bzw. schlagen ein oder mehrere Tests fehl, so ist auf den letzten Check-In zurückzusetzen.

In der Regel wird während des Coding Dojos nach den Regeln des TDD (test driven development) entwickelt. Dies ist meiner Meinung nach sehr sinnvoll (ich bin ein großer Fan von TDD), aber keine unbedingte Voraussetzung! Der Sinn des Coding Dojos ist das Üben und Verbessern der eigenen Programmier-Fertigkeiten.
Um den Artikel nicht noch länger werden zu lassen und da TDD auch im produktiven Einsatz und damit außerhalb des Coding Dojos verwendet werden sollte, werde ich TDD einem separaten Artikel beschreiben.

Wenn man sich einen ganzen Tag mit Coding Dojos beschäftigt, dann nennt man das einen "Code Retreat". Auch darüber werde ich in den nächsten Tagen einen Artikel schreiben - stay tuned. :-)

Sort:  

Hello! Your post has been resteemed and upvoted by @ilovecoding because we love coding! Keep up good work! Consider upvoting this comment to support the @ilovecoding and increase your future rewards! ^_^ Steem On!

Reply !stop to disable the comment. Thanks!

Du hast ein kleines Upvote von unserem Curation – Support – Reblog Account erhalten. Dieser wurde per Hand erteilt und nicht von einem Bot. Wir, die Mitglieder des German Steem Bootcamps möchten die Deutsche Community stärken. Bei einer Mitgliedschaft im German Steem Bootcamp könnt ihr sicher sein, dass eure Beiträge auch gelesen werden.
Aktuell als Kurator tätig ist @cultus-forex
Du findest uns im Discord unter https://discord.gg/vTsTSrZ


Hg8He5R.png

Congratulations @rolandnbg! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Support SteemitBoard's project! Vote for its witness and get one more award!

Coin Marketplace

STEEM 0.21
TRX 0.20
JST 0.034
BTC 99081.84
ETH 3312.23
USDT 1.00
SBD 3.03