Code Kata Bunkai: Prime Factors

January 7, 2010 at 7:46 am 12 comments


Bernd Schiffer has published a screencast of the Prime Factors Code Kata that we prepared.
When a programmer new to TDD watches such a code kata he has the same problem that an unexperiences karate student has when he watches a karate kata. He can see what’s happening but he has no idea why.
In karate there is a second kata flavour: Bunkai:

Bunkai literally meaning “analysis” or “disassembly”, is a term used in Japanese martial arts referring to the application of fighting techniques extracted from the moves of a “form” (kata) (see Wikipedia).

When watching a kata bunkai it becomes pretty obvious why the moves of the kata are done.
The same should be possible with code katas. Therefore we tried to transfer the bunkai concept to code katas. For now that simply means that the non obvious parts of the code kata are explained. I published the result for the prime factors code kata on YouTube.

I have to confess that I simply cut Bernds video. I think the real code kata bunkai should include the explanation in the kata – like it is in karate. We will work on that.

Entry filed under: #. Tags: , , .

Festpreise und schneller durch Scrum Lernen im 4. Quartal 2009

12 Comments Add your own

  • 1. Heiko Stapf  |  January 7, 2010 at 1:11 pm

    Sehr schönes Beispiel. Die Kata Idee begeistert mich von Tag zu Tag mehr. In einem ersten Selbstversuch konnten wir zwar nicht soforf alle Geheimnisse von TDD erkunden, dafür hatte die Kata aber eine sehr motivierende Wirkung. Kann ich jedem sehr empfehlen!

    Aber ein nettes Datum habt Ihr Euch da ausgesucht – schon interessant was manche Leute so am 24.12. alles treiben ;)

    Grüße Heiko

  • [...] This post was mentioned on Twitter by Sebastian, Stefan Roock. Stefan Roock said: Prime Factor Code Kata Bunkai: http://stefanroock.wordpress.com/2010/01/07/code-kata-bunkai-prime-factors/ #withexplanations [...]

  • 3. Markus Andrezak  |  January 7, 2010 at 7:39 pm

    Sehr schöne Erklärungen. Ich fände es aber als voice-over viel schöner :-). Das hätte sicher eine tolle Atmosphäre.

  • 4. Sebastian Sanitz  |  January 7, 2010 at 10:00 pm

    Gefällt mir auch viel besser!

    Onkel Bob macht das jetzt auch so:

    http://katas.softwarecraftsmanship.org/?p=139

  • 5. Markus Andrezak  |  January 9, 2010 at 11:02 am

    HI Sebastian, danke für den Link zu Bob’s annotated version. Seine Erklärung von Kata an sich gefällt mir sehr gut, denn er trennt die Kata ab vom Programmieren.

    Das war mir bisher nicht so klar. Er erklärt das ja eher wie das Üben bei Musik 8das auch immer ein bisschen Musik ist, aber eben nicht das selbe wie Musik machen). Er sieht also, glaube ich, eher eine Analogie zum Üben von Arpeggios, Scalen, Turn-Arounds usw. um die muscle memorization zu verbessern und damit irgendwann zu einer neuen Intuition zu bekommen.

    So sagt mir das noch viel mehr als vorher!

    Und ja, das Beispiel zeigt mir wie schön so ein voice-over ist. :-)

    LG

    Markus

  • 6. Bernd Schiffer  |  January 9, 2010 at 12:53 pm

    @Markus: Code Katas sind durchaus unterschiedlich interpretierbar: einerseits als Problemlösung, andererseits als reine Übung.

    “Over time, the concept of katas grew from a problem to solve to a solution to practice.” siehe http://katas.softwarecraftsmanship.org/?page_id=2

    Wenn Du eine Kata startest, dann typischer- und empfehlenswerterweise ohne (!) vorher die Lösung zu kennen. Je öfter Du die Kata dann wiederholst, desto mehr kommst Du vom Problemlösen zum Üben.

    Aus meiner Erfahrung wirst Du aber beim reinen Üben nie ganz ankommen: Katas sind per Definition nie zu Ende oder abgeschlossen, nie perfekt. Das bedeutet, dass man immer noch wieder Verbesserungen findet, auch nach der dutzendsten Wiederholung.

    Was Du ständig wiederholst, sind bestimmte Tastenanschläge, vergleichbar Akkorden üben auf einer Gitarre. Hier sehe ich durchaus ein reines Üben, kein Problemlösen.

    Von daher würde ich nicht zustimmen, dass Katas sich weiterentwickelt haben vom Problemlösen zum Üben. Beides ist auf zwei unterschiedlichen Ebenen ständig vorhanden. Und von daher sehe ich auch nicht, dass Katas vom Programmieren abgetrennt sind.

  • 7. uberVU - social comments  |  January 9, 2010 at 1:01 pm

    Social comments and analytics for this post…

    This post was mentioned on Twitter by StefanRoock: Prime Factor Code Kata Bunkai: http://stefanroock.wordpress.com/2010/01/07/code-kata-bunkai-prime-factors/ #withexplanations…

  • 8. Markus Andrezak  |  January 9, 2010 at 7:30 pm

    Wie schon getwittert fand ich besonders schön, die Kata selbst als “Aufführung” von dem Weg dorthin abzutrennen.

    Denn das ist ja das schöne, der Weg dort hin, das Problemlösen, das Üben, die muscle memorization ist Notwendig um die Illusion zu kreieren, alles sei ein leichtes Spiel.

    Tatsächlich kann bei der Aufführung noch einiges schief gehen. (Mehr Üben). Im Laufe der zeit fallen einem Verbesserungsmöglichkeiten ein -> noch mehr Üben.

    Aber, die eigentliche Kata als kleines aufgeführtes Kunstwerk von der eigentlichen Arbeit abzugrenzen und gerade dadurch darüber zu erheben finde ich eine sehr schöne Idee!

    @Bernd ich denke wir meinen sogar das gleiche :-)

  • 9. Bernd Schiffer  |  January 9, 2010 at 9:25 pm

    @Markus: Ja, das Gefühl habe ich jetzt auch :)

  • 10. marko  |  January 10, 2010 at 12:18 pm

    Danke für die Erläuterung der Kata, das hilft wirklich zum Verständnis.

    Noch besser hätte es mir auch gefallen, wenn die Erläuterung gesprochen wäre, wenn sie ausführlicher gewesen wäre und wenn das Autoradio dabei erhalten geblieben wäre.

  • 11. Marko Schulz  |  January 10, 2010 at 12:34 pm

    Der Link zu Uncle Bobs Kata ist ebenfalls klasse (Danke, Sebastian) und lehrreich.

    Was mir auffällt: In Katas kommen die Ausführenden öfter an Punkte, an denen sie sowas sagen wie “Das sieht jetzt seltsam aus, aber ich weiß schon, dass ich das später so gut brauchen kann”. Durch die Wiederholung einer Katas weiß man ja wirklich “wo man hinwill”, aber ist das nicht genau falsch? Sind das nicht trügerische Optimierungen?

    Wenn man mit Katas seinen Fingern gute Bewegungen beibringen (und vielleicht auch anderen einen guten Weg zeigen) will, dann sind Abkürzungen, weil man ja schon weiß, wo man hinwill, genau verkehrt.

    Höchstens wenn man (sich) beibringen will, dass man bei diesem konkreten Problem größere Schritte gehen kann und soll, dann scheinen mir solche Abkürzungen hilfreich. Ansonsten sind sie das genaue Gegenteil: schädlich.

  • 12. 2010 in review « Stefan Roock  |  January 2, 2011 at 12:50 pm

    [...] Code Kata Bunkai: Prime Factors January 2010 11 comments 4 [...]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed



Follow

Get every new post delivered to your Inbox.

Join 188 other followers

%d bloggers like this: