Coder-Katas



  • Hallo,

    ich habe hier diese unglaublich aktuelle Fachzeitschrift, in der ich gerade über einen amüsanten Artikel gestolpert bin. Die Rede ist hier von einem sogenannten Code-Dojo, in dem der Lehrling regelmäßig Katas (wer damit nichts anfangen kann: Das sind Übungseinheiten aus dem Kampfsport, kenne mich da aber auch nur peripher aus) abhält, um sein Programmierkönnen stetig zu verbessern.

    Ich hab' mir das mal durchgelesen und ein wenig recherchiert. Es scheint die Idee ja schon länger zu geben, nur ist das letztlich erst zu mir durchgedrungen. Was haltet Ihr davon? Bin ich der einzige, der das intuitiv gleich in die Feng-Shuiblade stecken möchte? Andererseits ist ja was dran, dass ständiges Wiederholen tatsächlich was bringt. Hmm ja, vielleicht ist ja jemand unter Euch, der wirklich Code-Katas praktiziert und mal einen Erfahrungsbericht abgeben möchte?

    Gruß, Markus



  • Nie davon gehört.
    Aber es täte wirklich gut, wenn junge Programmierer sich ein wenig von Karate Kid abschauen würden.



  • Schau mal, dieser nette Herr hier hat das wohl erfunden:

    http://codekata.pragprog.com/



  • TdZ schrieb:

    Schau mal, dieser nette Herr hier hat das wohl erfunden:
    http://codekata.pragprog.com/

    Sehr gute Idee! 👍

    Leider sind seine Katas nicht ganz mein Geschmack.

    Sicherlich werden jetzt explosiv weitere Dojos entstehen, mal die Augen offen halten. Das ist kein Feng-Shui-Quatsch. Später kann man ja einen noch besseren Dojo finden.



  • TdZ schrieb:

    Andererseits ist ja was dran, dass ständiges Wiederholen tatsächlich was bringt.

    Der macht eher das Gegenteil. Während man im Beruf eher ständig das gleiche macht oder in seinem angefangenen MMORPG, tut der einen in jeder Lektion auf ein neues Thema lenken, man lernt ständig was neues, das Regelmäßige daran ist, daß man pausenlos am Lernen bleibt.



  • Also zuerst mal fühle ich mich als Karateka sehr geehrt, dass dieser doch schwierigen Disziplin beim Kampfsport der Name gewidmet wird.
    Dennoch bin ich der Meinung, dass solche Code-Katas nicht unbedingt das Programmierverhalten verbessern. Klar kann man versuchen so ein Programm zu schreiben und dann immerwieder weiter zu optimieren - aber immer neu schreiben wird langweilig. Aber gerade die Abwechslung und immerneue Probleme beim Programmieren üben machen den Sinn: immer wieder was neues lernen. Und seis nur ein Member einer STL-Klasse, den man noch nie bemerkt hat, dennoch hat man was neues gelernt. Dagegen würd ich beim Kata immer versuchen das gleich zu implementieren und dementsprechend Member-X nicht oder erst viel später kennenlernen.
    Wem diese Katas aber Spaß machen, der soll sie gerne fortsetzen. Denn interessant klingts allemal.



  • Jonas OSDever schrieb:

    Also zuerst mal fühle ich mich als Karateka sehr geehrt, dass dieser doch schwierigen Disziplin beim Kampfsport der Name gewidmet wird.

    Fühle Dich geehrt.

    Jonas OSDever schrieb:

    Dennoch bin ich der Meinung, dass solche Code-Katas nicht unbedingt das Programmierverhalten verbessern. Klar kann man versuchen so ein Programm zu schreiben und dann immerwieder weiter zu optimieren - aber immer neu schreiben wird langweilig.

    Also ich halte mich für einen recht guten Programmierer, weil ich oft bessere Lösungen präsentiere als Arbeitskollegen, Konkurrenten oder Diskussionspartner im Forum. Ich muß dafür nicht überlegen, sondern sie fallen mir einfach ein. Weil ich schon immer ungefähr genauso lange, wie ich zum Programmieren gebraucht hatte, überlege, wie es besser ginge. Ich mache meine Denk-Katas aus Begeisterung. Es ist gar nicht zu vermeiden. Was soll ich sonst auf dem Heimweg reflektieren? Das ist auch kein Schaden für den Auftraggeber, selbst wenn es wie normalerweise innerhalb der Arbeitszeit passiert. Keine Bange. Eigentlich sollte das jeder machen.
    Was halt nicht geht, ist fünf fundamental anderer Arten der binären Suche zu finden. Rekursiv oder iterativ? Das ist für mich kein Unterschied. Fundamental anders ist nur, ob der Vergleicher dreiwertig oder zweiwertig ist.

    Jonas OSDever schrieb:

    Aber gerade die Abwechslung und immerneue Probleme beim Programmieren üben machen den Sinn: immer wieder was neues lernen. Und seis nur ein Member einer STL-Klasse, den man noch nie bemerkt hat, dennoch hat man was neues gelernt. Dagegen würd ich beim Kata immer versuchen das gleich zu implementieren und dementsprechend Member-X nicht oder erst viel später kennenlernen.

    Ok, wir haben das Wort von Euch geklaut, aber es paßt nicht ganz. Na, eigentlich paßt es gar nicht. Es ist schon beschämend unpassend. Falls ich Euch Karateka recht verstehe. Ihr perfektioniert doch einen Bewegungsablauf, wenn ich mich recht erinnere. Einen genauen Ablauf. Den zu wiederholen und ganau exakt gleich zu wiederholen ist optimal. Davon lernt man Dinge wie "allgemeine Körperbeherrschung" und so und ist am Ende spürbar gut (haha, Wortspiel). Klar, der Programmierer lernt nicht "allgemeine Programmierung", wenn er das selbe Programm täglich eintippt.



  • volkard schrieb:

    Jonas OSDever schrieb:

    Aber gerade die Abwechslung und immerneue Probleme beim Programmieren üben machen den Sinn: immer wieder was neues lernen. Und seis nur ein Member einer STL-Klasse, den man noch nie bemerkt hat, dennoch hat man was neues gelernt. Dagegen würd ich beim Kata immer versuchen das gleich zu implementieren und dementsprechend Member-X nicht oder erst viel später kennenlernen.

    Ok, wir haben das Wort von Euch geklaut, aber es paßt nicht ganz. Na, eigentlich paßt es gar nicht. Es ist schon beschämend unpassend. Falls ich Euch Karateka recht verstehe. Ihr perfektioniert doch einen Bewegungsablauf, wenn ich mich recht erinnere. Einen genauen Ablauf. Den zu wiederholen und ganau exakt gleich zu wiederholen ist optimal. Davon lernt man Dinge wie "allgemeine Körperbeherrschung" und so und ist am Ende spürbar gut (haha, Wortspiel). Klar, der Programmierer lernt nicht "allgemeine Programmierung", wenn er das selbe Programm täglich eintippt.

    Hmm, genau das behaupten die aber in dem besagten Zeitunsartikel. Die meinen wirklich, dass man das immer und immer wieder abtippen soll.



  • volkard schrieb:

    Jonas OSDever schrieb:

    Dennoch bin ich der Meinung, dass solche Code-Katas nicht unbedingt das Programmierverhalten verbessern. Klar kann man versuchen so ein Programm zu schreiben und dann immerwieder weiter zu optimieren - aber immer neu schreiben wird langweilig.

    Also ich halte mich für einen recht guten Programmierer, weil ich oft bessere Lösungen präsentiere als Arbeitskollegen, Konkurrenten oder Diskussionspartner im Forum. Ich muß dafür nicht überlegen, sondern sie fallen mir einfach ein. Weil ich schon immer ungefähr genauso lange, wie ich zum Programmieren gebraucht hatte, überlege, wie es besser ginge. Ich mache meine Denk-Katas aus Begeisterung. Es ist gar nicht zu vermeiden. Was soll ich sonst auf dem Heimweg reflektieren? Das ist auch kein Schaden für den Auftraggeber, selbst wenn es wie normalerweise innerhalb der Arbeitszeit passiert. Keine Bange. Eigentlich sollte das jeder machen.

    Diese "Spontan-Katas" (wenn man das überhaupt so nennen sollte, weils spontan kein Kata ist) sind ja auch was ganz normales, was das Programmierer-Hrin trainiert. Und dagegen ist nichts einzuwenden. Aber die mein ich nicht.
    Mir gehts darum: Warum diese vorgegebenen "Katas" (z.B. die von dem Link) immer und immer wieder schreiben? Wenn ich 5x die gleiche Implementierung hab, wo sich vielleicht mal ein Variablenname ändert oder zwei Anweisungen vertauscht werden, bringt das nix. Nur darauf war dass in meinem Letzten Beitrag bezogen. Und du sagst ja selbst: 5 fundamental Unterschiedliche Lösungen(-sansätze) ist bei den meisten Aufgaben schon schwer.
    Neue Aufgabe - Neue Probleme - Neue Lösubgen - Neues Wissen. So kommt letzendlich auch was bei raus.

    Und genau deswegen hast du recht: Die richtigen Katas sind da um sie durch ständiges wiederholen zu festigen. Köperbeherrschung lernst du dabei nur bedingt, aber darum geht es beim Kata primär auch nicht. Letzendlich geht es darum diesen einen Kata perfekt zu laufen, d.h. saubere Techniken, locker und dynamisch aber trotzdem Kraft ausdrücken, gleichmäßiger Lauf, wieder am Startpunkt rauskommen usw.
    Beim Programmieren geht es aber nicht darum einen >200-Zeilenquelltext immer exakt gleich abzuschreiben, sondern neue Lösungen für neue Probleme zu finden.



  • TdZ schrieb:

    Hmm, genau das behaupten die aber in dem besagten Zeitunsartikel. Die meinen wirklich, dass man das immer und immer wieder abtippen soll.

    Achso, das sind dann nur Zeitungsidioten. Massenmedien eben.

    @Jonas OSDever: Da hast Du voll recht.

    Aber er wechselt im Laufe der Zeit und die 5-mal-das-Gleiche-Pr0ggern ist vielleicht nur ein sehr dummer Aussetzer von ihm. Die anderen Aufgaben sind ja besser.


Anmelden zum Antworten