2012-09

Datum: 06.09.2012

Ort: Vereinsheim SG Stuttgart-West

Thema: „Coding Dojo“ und „Wegen Überfüllung geschlossen“

Teilnehmer: Thomas Möller, Thomas Funk, Dagmar Lutz, Ernst Glockzin, Karl Heinz Januel, Michael Feyerabend, Björn Schober, Bernd Dutschmann, Emilia Maxim, Thorsten Wichmann, Dirk Eberhardt, Christian Zais, Tilo Schinke, Sylvia Häusler, Armin Hess, Jürgen Neher, Ulrich Klein, Bernd Birkicht, Roman Schütz

Bericht: Thomas Möller

Das erste Mal an diesem Abend habe ich mich kurz vor 18 Uhr entspannen können. Da rief nämlich Olli an, um mir auszurichten, dass Tilo sich verspäten wird. Nicht dass ich irgendwelche Zweifel an der Zuverlässigkeit von Tilo hätte – aber zu wissen, dass der „Referent“, der extra aus der Schweiz anreist, auf dem Weg ist und auf der Autobahn im Stau steht, beruhigt schon irgendwie. 😉

Obwohl ich bereits ca. 18:30 in unserem Stammlokal eintraf, war ich nicht der erste. Karl-Heinz war schon da und berichtete über seine neueste Errungenschaft. Wir blieben nicht lange allein. Der Raum füllte sich schnell. Das Interesse an eine Coding Dojo scheint groß zu sein. Was ist das? Wie funktioniert das? Und vor allem: Was bringt das?
Am Ende waren wir insgesamt 19 Teilnehmer. Mehr hätten es auch wirklich nicht sein dürfen. Der Raum war bis auf den letzten Stuhl ausgefüllt. Diese große Teilnehmerzahl gibt schon Anlass zur Freude. 🙂

Nachdem Tilo eingetroffen war, gab er uns gleich eine kurze Einführung in das, was uns heute Abend erwarten würde. Wir werden eine Aufgabe erhalten, die es dann gemeinsam zu lösen gilt. Dabei liegt der Schwerpunkt auf „gemeinsam“. Die Gruppe erarbeitet das Ergebnis. Dazu werden wir im ersten Schritt die Aufgabenstellung klären und dann besprechen, wie die Aufgabe zu lösen ist. Erst nach diesen Vorgedanken kommt Access zum Einsatz. Dort werden wir Pair-Programming betreiben: Einer kodiert (Master) und ein anderer (Slave) berät den Master. Die restliche Gruppe beobachtet oder diskutiert mit den beiden am Rechner.

Nach dem Essen ging es los. Die Aufgabe war schnell erklärt: Eine Zahl soll als römische Zahl ausgegeben werden. Um zu verdeutlichen, was das heißt, hatte Thilo eine kurze Aufgabenbeschreibung mitgebracht, in der auch die Regeln für römische Zahlen nachzulesen sind.

Als erstes habe wir gemeinsam diskutiert, wie wir diese Aufgabe angehen wollten. Wir waren uns schnell einig, die Zahl Ziffer für Ziffer zu zerlegen und umzuwandeln. Die Frage war nur, ob wir von vorn nach hinten oder doch lieber von hinten nach vorn vorgehen. Am Ende haben wir uns entschieden, die Zahl Ziffer für Ziffer von rechts nach links umzuwandeln.

Dann ging es auch schon am Rechner los. Schnell war das erste Paar gefunden. Dirk und Christian machten den Anfang. Dank eines Handys mit Timer wurde ziemlich konsequent alle fünf Minuten gewechselt. So kam jeder mal dran. Erst als Beisitzer und dann als der, der am Rechner den Code schreibt. Die Zeit verging wie im Flug. Nach ca. 1 Std. legten wir eine kleine Pause (auch für die Raucher unter uns) ein. In der Pause diskutierten viele weiter über die bisherige Lösung und das weitere Vorgehen.

Nach der Pause ging es munter weiter. So nach und nach nahm der Code Gestalt an und es war zu erkennen, dass die gemeinsam erarbeitete Lösung funktionieren wird. Während des Arbeit hatte kaum jemand auch nur den Hauch einer Chance einen Tippfehler zu machen. 😉 Noch bevor der Cursor eine Stelle weiter wanderte kam schon jemand mit dem Hinweis auf einen falsch geschriebenen Variablennamen oder Befehl. Ein paar mal kam es auch dazu, dass mehr die Gruppe den Code diktierte als dass die beiden Programmierer aktiv arbeiteten. Ich denke, für unser erstes Mal ist das akzeptabel.

Nachdem am Ende der Code fertig gestellt war, kam die Retrospektive. Es wurde klar, dass wir uns am Anfang zu schnell auf den Rechner gestürzt haben und die Konzeption trotz intensiver Diskussion noch unvollständig war. Vielleicht machen wir bei einem nächsten Dojo einige Notizen über den umzusetzenden Weg.
Die Lösung, die wir erarbeitet haben funktioniert. Im Vergleich mit Tilos Lösung, ist sie wenig elegant oder wie es Amin sagte: „Brute Force“. Es geht aber beim Dojo nicht darum, die beste Lösung und den elegantesten Code zu schreiben sondern es geht darum, gemeinsam den Code zu erstellen und dabei voneinander und miteinander zu lernen – und dieses Ziel haben wir erreicht.

Ganz am Ende gab noch jeder einen kurzen Kommentar zum erlebten ab. Dabei wurde klar, dass es allen Spaß gemacht hat. Jeder hat etwas gelernt. Das interessante ist, dass jeder für sich etwas anderes gelernt hat. Die Frage, ob wir künftig  weitere Coding Dojos durchführen sollten, wurde ausnahmslos bejaht. Ich denke alle drei bis vier Monate kann man das gut machen.

Nach dem Ende des Dojos verließen uns die ersten Teilnehmer. Auch Tilo war dabei. Er hatte schließlich noch den weitesten Heimweg vor sich. An dieser Stelle noch einmal vielen Dank für die Mühe und für die Moderation der Coding Dojos.

Als ich schließlich kurz nach 22:30 Uhr aufbrach, war ich noch lange nicht der letzte. Während ich bereits im Bett lag erreichte mich per E-Mail noch ein Umsetzungsvorschlag von Björn. Am Samstag schickte Thorsten eine Datenbank. Auch er hatte das Thema noch einmal für sich umgesetzt. Was so ein Dojo doch auslösen kann. 😉

Mein persönliches Fazit: Das Coding Dojo war ein voller Erfolg. Dabei kommt es überhaupt nicht darauf an, wie gut der einzelne beim Programieren ist. Es geht viel mehr darum voneinander zu lernen – und das klappt nun mal unabhängig vom Wissenstand des Einzelnen. Ich freue mich schon auf unser nächstes Coding Dojo. Vielleicht machen wir das beim Stammtisch Anfang Januar.

Die erarbeiteten Lösungen und auch die von verschiedenen Teilnehmern nachgereichten Vorschläge sind in einer Datenbank zusammengefasst. Diese können Sie hier herunterladen.

Hier das Ergebnis, so wie es die Gruppe erarbeitet hat:

Public Function CRoman(ByVal lngZahl As Long) As String Dim lngStelle As Long Dim lngZiffer As Long Dim i As Long Dim strErgebnis As String strErgebnis = "" If lngZahl < 1 Or lngZahl >= 4000 Then MsgBox "Zahl out of range", vbOKOnly Else i = 0 For lngStelle = Len(CStr(lngZahl)) To 1 Step -1 i = i + 1 lngZiffer = Mid(CStr(lngZahl), lngStelle, 1) strErgebnis = Latin2Roman(lngZiffer, i) & strErgebnis Next lngStelle End If CRoman = strErgebnis End Function Public Function Latin2Roman(lngZiffer As Long, lngStelle As Long) As String Dim strRoman As String Select Case lngStelle Case 1 strRoman = Stelle2Roman(lngZiffer, "I", "V", "X") Case 2 strRoman = Stelle2Roman(lngZiffer, "X", "L", "C") Case 3 strRoman = Stelle2Roman(lngZiffer, "C", "D", "M") Case 4 strRoman = Stelle2Roman(lngZiffer, "M", "", "") Case Else Err.Raise vbObjectError, , "Stelle out of range" End Select Latin2Roman = strRoman End Function Function Stelle2Roman(lngZiffer As Long, strRoman1 As String, _ strRoman2 As String, strRoman3 As String) As String Dim strErgebnis As String strErgebnis = "" Select Case lngZiffer Case 1 strErgebnis = strRoman1 Case 2 strErgebnis = strRoman1 & strRoman1 Case 3 strErgebnis = strRoman1 & strRoman1 & strRoman1 Case 4 strErgebnis = strRoman1 & strRoman2 Case 5 strErgebnis = strRoman2 Case 6 strErgebnis = strRoman2 & strRoman1 Case 7 strErgebnis = strRoman2 & strRoman1 & strRoman1 Case 8 strErgebnis = strRoman2 & strRoman1 & strRoman1 & strRoman1 Case 9 strErgebnis = strRoman1 & strRoman3 Case Else 'Do Nothing End Select Stelle2Roman = strErgebnis End Function

Am Ende hat Tilo uns seinen Code vorgestellt:

Function Zahl2Rom(intZahl As Integer) As String Dim varZahlen As Variant Dim varZiffern As Variant Dim i As Integer i = 0 varZiffern = Array("M", "CM", "D", "CD", "C", "XC", _ "L", "XL", "X", "IX", "V", "IV", "I") varZahlen = Array(1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1) Do While intZahl > 0 If intZahl / varZahlen(i) >= 1 Then Zahl2Rom = Zahl2Rom & varZiffern(i) intZahl = intZahl - varZahlen(i) Else i = i + 1 End If Loop End Function
Suchen
Kategorien