Nachteile der Code-Kata


41

Code-Kata ist ein Konzept, mit dem die Fähigkeiten des Programmierers verbessert werden sollen, indem häufig kleine Probleme gelöst werden, um den Code bei jeder Iteration zu verbessern. Der Name stammt von einer Analogie zur Kampfkunst-Kata, bei der Formen (auch bekannt als Kata) Praktiken sind, die immer wieder zu Verbesserungen führen.

Nach der Reaktion auf meine letzte Frage zum Thema möchte ich wissen, was die Nachteile dieses Ansatzes sind.


+1 gegen die unproduktive -1 angewendet. Scheint eine berechtigte Frage zu sein, ebenso wie meine Zweifel an Code kata, kann aber nicht genau sagen, warum.
Mattnz

9
Bis heute hatte ich keine Ahnung, worum es bei dieser Kata-Sache geht. Jetzt habe ich es nur überprüft und imho, es ist nur ein ausgefallener Name für etwas, das jeder vernünftige Programmierer während der Entwicklung automatisch tut und lernt: Üben. Der Nachteil für mich wäre also: Es braucht nur zusätzliche Zeit, die sonst verwendet werden könnte.
6.

11
Hmm ... anscheinend scheint ein großer Nachteil der Code-Kata zu sein, dass die Leute Code-Kata kritisieren, ohne zu verstehen, was Code-Kata sind :-)
Jörg W Mittag

19
@ JörgWMittag - Das liegt daran, dass der Begriff "Kata" eine schlechte Analogie ist, da er die Praxis der starren Form mit geringer praktischer Bedeutung in Situationen der realen Welt impliziert. Das Anwenden von Kampfkunstwörtern wie "Black Belt" oder "Kata" auf Programmier- oder Geschäftssituationen ärgert mich.
Jfrankcarr

Antworten:


22

Im Prinzip sehe ich keine Nachteile in Code-Kata. Sie versuchen mehrmals, dieselbe Aufgabe mit unterschiedlichen Ansätzen und Sprachen zu lösen. Aber

  1. es ist ziemlich schwierig, es an einem Arbeitsplatz einzuführen. Von Ihnen wird normalerweise erwartet, dass Sie kompetent oder einigermaßen produktiv sind. Ich sage nicht, dass es nicht nützlich wäre (es ist besser, etwas Zeit zu investieren, um die Fähigkeiten eines neuen Mitarbeiters zu verbessern, als für den nicht so guten Code zu bezahlen, den er in der kommenden Zeit schreiben wird), aber es ist trotzdem ziemlich schwierig.
  2. Sie müssen tatsächlich versuchen , sich in gewissem Sinne zu verbessern. Wenn Sie den gleichen Code tausend Mal auf die gleiche Weise schreiben, werden Sie sich nicht verbessern (stattdessen werden Sie langweilig). Sie müssen Ihre bisherigen Fehler verstehen, was schief gelaufen ist oder nicht wie erwartet geklappt hat. Dies ist der wichtigste Teil. Es ist eine Form von Selbststudium, so Sie müssen studieren.

1
Ich habe diese Antwort akzeptiert, weil sie die Frage direkt anspricht (anstelle der "Kata" -Terminologie) und sich auf die potenziellen Probleme der Code-Kata-Praxis konzentriert. Das soll nicht heißen, dass andere Antworten nicht gut sind - in der Tat würde ich gerne mehr als eine annehmen!
Sardathrion

43

Ich denke, beim Programmieren von Kata geht es wie bei Kampfsport-Kata hauptsächlich um Form über Funktion. Es lehrt Sie vielleicht, eleganten Code zu schreiben, aber es lehrt Sie nicht, die Probleme zu lösen, für die Sie den Code schreiben. Ich denke, ein besserer Weg, sich als Programmierer zu verbessern, besteht darin, Rätsel zu lösen, die eine tatsächliche Problemlösung erfordern, und an größeren Projekten zu arbeiten, die Ihnen den Wert von gut faktorisiertem Code auf eine Weise beibringen, die Code-Kata Ihnen niemals beibringen kann.

Abgesehen davon denke ich, dass Begriffe wie "Code-Kata" und "Software-Handwerkskunst" eher die Romantisierung unseres Berufs als die Beschreibung von Neuem oder Nützlichem bedeuten.


4
Machen Sie das +2 für diesen Satz.
Erik Dietrich

6
Obwohl ich der Meinung bin, dass das Lösen von Problemen eine gute Möglichkeit ist, sich als Programmierer zu verbessern, kann es sich auch lohnen, das Schreiben von elegantem Code zu erlernen. Ich wünschte, einige der ursprünglichen Entwickler von Code, die ich derzeit betreue, hätten einige Zeit und Mühe darauf verwendet, eleganten Code zu schreiben, anstatt ihn zu kopieren und einzufügen, um die Dinge zum Laufen zu bringen.
Mike Partridge

1
+3 für Mikes Kommentar. Im Allgemeinen wird viel mehr Zeit für die Pflege des Codes aufgewendet, als für das anfängliche Schreiben. Sie würden erwarten, dass Handwerkskunst angewendet wird, wenn jemand Ihr Haus baut, da Sie noch lange darin leben werden. Das Gleiche sollte angewendet werden, wenn jemand Software erstellt - dies ist jedoch häufig nicht der Fall.
Kaleb Brasee

@KaptajnKold: Sprichst du aus deiner Erfahrung? Ich würde gerne einige Kommentare von jemandem hören, der wirklich versucht hat, seine Fähigkeiten durch CodeKata zu verbessern und gescheitert ist.
Dzieciou

2
@dzieciou: Ich habe Erfahrung in Kampfsport-Kata, nachdem ich mehrere Jahre Karate geübt habe. Und obwohl ich glaube, dass es einige nützliche Aspekte des Kampfes gibt, die aus Kata gelernt werden können, glaube ich auch, dass dies letztendlich keine sehr effiziente Art des Trainings ist. Du solltest trainieren, während du kämpfst, wie sie sagen. Das ist, wenn Ihr Ziel ist, ein besserer Kämpfer zu werden. Manche Menschen empfinden das Üben von Kata als eine freudige Beschäftigung für sich. Daran ist nichts auszusetzen. Irgendwann werden einige von ihnen sehr gut. Bei Kata.
KaptajnKold

20

Code-Kata braucht nur Zeit.

Als Vollzeitentwickler und Vater möchte ich das Rechnen nicht zum Hobby machen.

Und ich kann mir nicht vorstellen, dass mein Chef mich dafür bezahlt, Anwendungen zu entwickeln, die nichts mit meinem aktuellen Projekt zu tun haben.


10
Gibt es irgendeine Art von Lernen, die keine Zeit braucht? Es sei denn, Sie haben das Glück, jedes Mal auf der grünen Wiese zu arbeiten.
Den

38
Wenn Sie nicht mindestens einen kleinen Teil Ihrer Freizeit darauf verwenden, Ihre Programmierkenntnisse regelmäßig zu verbessern, ist Ihre berufliche Laufbahn in großer Gefahr.
Ladislav Mrnka

7
+1 dazu. Während ich das Programmieren absolut liebe und in der Lage bin, Geld für etwas zu verdienen, das ich gerne mache, sehe ich keinen Sinn darin, MEHR Programmieren außerhalb der Arbeit zu machen. Ich habe so viele andere Hobbys (DJing, Musik machen, Gewichtheben, Zeichnen und Streetdance zum Beispiel), dass ich es nicht für sinnvoll halte, mehr Stunden mit etwas zu verbringen, das ich bereits 40 Stunden pro Woche mache.
Andreas Johansson

7
@mouviciel: Und genau das ist das Problem: Ihr Chef ist bereit, für Ihre berufliche Entwicklung zu bezahlen, wenn dies für das Projekt erforderlich ist, aber Sie sollten bereit sein, Ihre Fähigkeiten zu verbessern, die nicht mit Ihrem aktuellen Projekt zusammenhängen - möglicherweise nicht mit Ihrem aktuellen Plattform überhaupt. Das ist es, was Ihre Karriere / soziale Sicherheit fördert.
Ladislav Mrnka

6
@LadislavMrnka - ich stimme dir zu. Trotzdem ist Code kata nicht die Antwort auf dieses Problem.
mouviciel

13

Als Boxer müsste ich dem Prinzip der Kata nicht zustimmen. Es ist zu starr, um wirklich nützlich zu sein. Im Ring muss man verstehen, wie man die Prinzipien, die man gelernt hat, in einer frei fließenden Umgebung anwendet.

Dies bedeutet nicht, dass das Erlernen und Verbessern der Technik nicht erfolgen sollte. Wenn Sie an den Taschen üben, können Sie einen Schlag ausführen und fühlen, wie Sie ihn werfen, genau wie bei einer Kata. Aber es ist nicht so starr. Sie üben viele Dinge gleichzeitig, bewegen sich in der Tasche, werfen von einer stabilen Plattform aus, zielen, atmen, die Liste geht weiter.

Am wichtigsten ist, dass alles so gelernt wird, wie es tatsächlich verwendet wird. Wenn Sie die schönste for-Schleife aller Zeiten schreiben können, aber nicht verstehen, wie sie in ein Programm passt, was bringt es dann?

Ich würde sagen, dass eine bessere Sache, wenn Sie üben möchten, darin besteht, sich Werkzeuge selbst zu bauen oder an Werkzeugen zu arbeiten, die Sie verwenden. Es erfordert die Ausübung all Ihrer Fähigkeiten und am Ende können Sie etwas Nützliches haben.


genau richtig. fwiw, ich bin auch ein Boxer / Programmierer :).
Paul Sanwald

1
Bei Code-Katas geht es nicht um starre Wiederholungen. Es geht eher darum, ein Problem zu lösen, als Ihre Lösung zu verbessern, bis Sie zufrieden sind. Aus Kata One: "Das Ziel dieser Kata ist es, einen lockereren Stil des experimentellen Modellierens zu üben. Suchen Sie nach möglichst vielen verschiedenen Möglichkeiten, um mit den Problemen umzugehen. Berücksichtigen Sie die verschiedenen Kompromisse. Welche Techniken eignen sich am besten zum Erkunden dieser Modelle? Für Wie können Sie überprüfen, ob ein Modell angemessen ist? "
Mike Partridge

4
Ich bin damit einverstanden, dass der Begriff "Kata" unvollkommen ist, habe aber wegen des Namens nicht den Sinn verloren. Auch sind sie nicht alle Wortprobleme; aus Kata Two: "Implementieren Sie eine binäre Suchroutine (unter Verwendung der folgenden Spezifikation) in der Sprache und Technik Ihrer Wahl. Implementieren Sie sie morgen erneut mit einer völlig anderen Technik. Tun Sie dasselbe am nächsten Tag, bis Sie fünf völlig einzigartige haben Implementierungen eines binären Chops. (Eine Lösung könnte zum Beispiel der traditionelle iterative Ansatz sein, eine könnte rekursiv sein, eine könnte einen funktionalen Stil verwenden, bei dem Array-Slices herumgereicht werden, und so weiter.)
Mike Partridge

3
@ MikePartridge Das veranschaulicht meinen Standpunkt. Eine Kata würde eine Methode der binären Suche beinhalten, die jeden Tag verbessert wird, zum Beispiel mit weniger Zeilen oder weniger Zeit, um sie von Grund auf neu zu schreiben. Wie ein Konzept beschrieben wird, ist wichtig, um es zu definieren. Er hätte es einfach als Programmierpraxis bezeichnen können, worum es in den Artikeln geht, ohne falsches Gepäck mitzubringen. Es liegt in der Verantwortung des Autors, Wörter und Konzepte auszuwählen, die seine Idee korrekt definieren, und sich nicht darüber zu beklagen, dass sein Publikum aufgrund seiner Wahl der Metapher falsche Assoziationen zieht.
Spencer Rathbun

3
@MikePartridge In meinem Fall glaube ich, dass alle Programmierer die ganze Zeit lernen / verbessern oder sollten. Die Code-Kata ist also eine Technik, die zur Erreichung dieses Ziels beiträgt, und meine Antwort war, dass sich die Technik, wie ich sie sah, nicht gelohnt hat. Ich stimme dem Ziel voll und ganz zu, aber das war nicht die Frage.
Spencer Rathbun

11

Aus meiner Sicht ist der Hauptnachteil, dass es entsetzlich langweilig wäre. Auch Programmierer scheinen davon zu leben, Software zu entwickeln, die etwas Nützliches oder Cooles leistet. Der Code-Kata-Ansatz scheint das Gegenteil davon zu sein.


2
Katas bringt dir neue Sachen bei. Wie kann das das Gegenteil von dem sein, was Programmierer vorhaben? Es löst auch ein Rätsel, was die meisten guten Programmierer nicht als "langweilig" empfinden. In der Tat ist dies das Herzstück des Hackens.
Konrad Rudolph

4
@KonradRudolph Ich dachte, Wiederholung sei das Herz der Katas? Sie würden also ein Problem einmal lösen (vielleicht neu und aufregend), aber dann würden Sie das gleiche Problem immer wieder lösen . Ich habe Katas kaum angesehen, also könnte ich mich irren.
Kevin D

@ Kevin Ich bin damit einverstanden, dass dies dumm klingt (es sei denn, Sie versuchen ausdrücklich, verschiedene Möglichkeiten zur Lösung des Problems zu finden). Ich habe noch nie "Katas" als solche gemacht, nur generische Programmier-Rätsel.
Konrad Rudolph

Wie macht man dasselbe immer und immer wieder, um dir neue Sachen beizubringen?

In Ihrer Antwort wird deutlich, dass Sie den in der Frage angegebenen Link nicht gelesen haben.
Mike Partridge

8

Kata bedeutet das genaue Gegenteil von dem, wonach Sie streben sollten.

Eine Übung, die aus einer Abfolge der spezifischen Bewegungen einer Kampfkunst besteht, die im Training verwendet wird und Technikkenntnisse zeigt

Der Begriff Kata (Ursprung: 1950–55; <Japanisch: Form, Muster), wie er in den Kampfkünsten verwendet wird, und Ihre Frage beziehen sich auf das Auswendiglernen des Muskelgedächtnisses wie das Tippen von Berührungen .

Im ursprünglichen Karate Kid waren das Wachsen der Autos, Schleifen der Böden, Bemalen des Zauns alles Katas, die unterrichtet wurden, völlig aus dem Zusammenhang gerissen und in diesem Fall ohne Erklärung, nur um Muskelgedächtnis zu schaffen. Erst als ein Sensei hereinkam und diesen hohlen Aktivitäten Kontext gab , bedeuteten sie etwas.

Ich denke, das Gleiche gilt hier, ohne einen Mentor, der die Dinge in einen Zusammenhang bringt, ist es nicht besser , die Fehlerbehebung in mehreren Sprachen zu wiederholen als in einer einzigen. Ohne den Mentor, der Ihnen sagt, wo Sie sich verbessern können, sind sie Zeitverschwendung.

Es ist das genaue Gegenteil von kreativem Lösen von Problemen durch Erlernen neuer Variationen von Redewendungen und Semantik einer Sprache oder Plattform.

Wenn Sie in der Lage sein möchten, System.out.println()so mühelos wie möglich zu tippen , dann wäre das Üben eine Kata.

Wenn Sie eine Lösung für ein Problem in einer anderen Implementierung verbessern , den Zeit- und / oder Platzbedarf verringern oder idiomatischere Prinzipien anwenden möchten, hilft Ihnen Kata nicht weiter .

Es gibt bereits einen anerkannten Industriebegriff für die immer wieder erneute Implementierung derselben Sache. Nachdem bereits kleine inkrementelle Verbesserungen und fragwürdige Vorteile der Perfektion angestrebt wurden, wird dies als Vergoldung bezeichnet .

Die Begriffe, die sie hätten verwenden sollen, lauten Refactoring, wenn sie auf dieselbe Sprache / Laufzeit / Plattform angewendet wurden. Und Portierung beim Verschieben eines Arbeitsprogramms auf eine andere Sprache / Laufzeit / Plattform. Kata wurde wahrscheinlich fälschlicherweise ausgewählt, weil es hipster, cool und mystisch klingt, ohne die Semantik vollständig zu verstehen.

Verschiedene schwierige Probleme mit wenig Planung, Erfahrung oder Anleitung zu lösen, ist das, was die meisten Entwickler, insbesondere Junior-Entwickler, jeden Tag tun müssen.

Nur Akademiker dürfen die gleiche Übung immer wieder machen, nur um eine bestimmte Lösung zu finden. Die Fähigkeit, eine erfolgreiche Karriere als Entwickler zu haben, liegt in der Anpassung , nicht in der Wiederholung.

Wer sagt, dass es keine klugen Leute gibt, die nicht nach der Arbeit lernen müssen und in ihren 8 Stunden bei der Arbeit alles lernen können, was sie wissen müssen und manchmal auch mehr?


Was ist, wenn das, was Sie üben, Neugestaltung und Verbesserung des Designs ist - Wiederholung des Designprozesses, könnte der Begriff nicht zutreffen? Können Sie sich ein besseres einfallen lassen?
Bill K

Der Begriff für die Neugestaltung und Verbesserung eines vorhandenen Systems lautet " Refactoring" (Code-Refactoring ist eine disziplinierte Technik zur Umstrukturierung eines vorhandenen Codebestandes, bei der die interne Struktur ohne Änderung des externen Verhaltens geändert wird.). Sie haben Kata ausgewählt, weil es cool und mystisch klingt, ohne die Semantik zu verstehen.

Der Begriff Refactoring ist ein ganz anderer Begriff als Refacotoring. Jeder kann Code umgestalten, was in keiner Weise bedeutet, dass er es gut macht, oder dass er darin geübt ist, gute Umgestaltungsmöglichkeiten zu erkennen. Obwohl "Refactoring üben" ein absteigender Begriff dafür ist, vermittelt es nicht die Entschlossenheit, die Kata zeigt. Ich denke, dass Kata eine etwas bessere Wahl ist, obwohl ich offen bin für die Theorie, dass es noch eine bessere Formulierung gibt.
Bill K

1
Eigentlich bezieht sich Gold Platting auf "... zusätzliche oder mehr polierte Merkmale". Was Sie beschreiben, scheint eher der vorzeitigen Optimierung zu ähneln, wenn auch nachträglich.
Joshua Drake

5

Ich bin damit einverstanden, dass die Metapher "Kata" möglicherweise nicht die beste ist. Eine Kata im Karate wird ausgeführt, um eine bestimmte, diskrete Bewegung zu üben, bis sie fehlerfrei, scharf und automatisch ausgeführt werden kann. Dies lässt sich nicht gut auf eine Aktivität übertragen, bei der kritisches Denken und Kreativität erforderlich sind. (Es wäre besser zu übersetzen, sagen wir, tippen).

Das heißt, das Versagen des Namens ist kein Versagen der Aktivität. Welchen möglichen Nachteil könnte es haben, etwas zu üben, bei dem jemand besser werden möchte? Ich nehme an, man könnte sagen, dass die dafür aufgewendete Zeit aus Sicht der Opportunitätskosten ein Nachteil ist, aber es ist wirklich eine Investition. Die Zeit, die für die Ausübung des Handwerks der Softwareentwicklung aufgewendet wird, ist für Softwareentwickler, da das Geld, das für Aktien oder Anleihen ausgegeben wird, für einen langfristigen Sparer / Investor bestimmt ist. Es ist kein "Nachteil" - es geht um Tischeinsätze.


3

Sie werden besser, wenn Sie Dinge ausprobieren, die schwierig und für Ihre Fähigkeiten unerreichbar sind. fordere dich selbst heraus. Dieselbe "Code-Kata" immer und immer wieder zu machen, wie bei einer Kampfkunstform, tut das nicht. Ich denke, es stagniert Ihre Fähigkeiten, anstatt zu helfen, Ihre Fähigkeiten voranzutreiben.

Es kann zum ersten Mal als Übungsmethode verwendet werden, ist aber begrenzt. Ich fordere die Leute auf, stattdessen das Projekt Euler zu verwenden. Mehr Probleme und mehr Herausforderungen.


Es kann nützlich und interessant sein, immer wieder dasselbe Programm zu schreiben, z. B. wenn Sie jedes Mal einen anderen Algorithmus und / oder eine andere Sprache verwenden. Aber wahrscheinlich ist es keine Kata.
9000,

2
Lesen Sie den in der Frage angegebenen Link. Die Idee ist keine sinnlose Wiederholung, wie Sie aus dem Namen zu schließen scheinen.
Mike Partridge

@ 9000 Genau so verstehe ich eigentlich Code Katas. Wird häufig beim Erlernen einer neuen Sprache oder beim Ausprobieren eines neuen Ansatzes für ein bereits gelöstes Problem verwendet.
Joshua Drake

3

Für mich ist der Hauptnachteil der Technik, wie ich sie sehe, die suboptimale Nutzung Ihrer Zeit.

Der Lernwert dieser Übung ist ebenfalls fraglich: Wenn Sie etwas über sich ergehen lassen, um sie zu verbessern, ist Expertenfeedback von entscheidender Bedeutung. Ohne qualitativ hochwertiges Feedback werden Sie auch etwas lernen, aber es besteht die Möglichkeit, dass Sie sehr gut etwas Falsches lernen.

Versteht mich nicht falsch, das Üben bleibt der einzige Weg, um im Programmieren gut zu werden, und Kata ist definitiv eine Form von Übung. Aber das Gleiche gilt für das Lösen von Wettbewerbsproblemen beim Programmieren, das Schreiben eigener "Spaßprojekte", das Erlernen neuer Programmiersprachen und so weiter. Letztendlich müssen Sie die Technik auswählen, mit der Sie sich am wohlsten fühlen, und sicherstellen, dass Sie klare Anweisungen auf dem Weg haben.


Wie haben Sie die Anleitung gefunden? Ich habe mit dem gleichen Problem zu kämpfen.
CodeYogi

1

Ich glaube, ohne irgendeine Form von Kata wirst du niemals ein großartiger Kodierer sein. Kata ist Übung, das bedeutet es wörtlich. Nehmen Sie das als Beispiel: Ein Athlet sagt: "Ich werde nur auftauchen und das 100-Meter-Armaturenbrett laufen lassen, schrauben üben". Klingt das nach einer Gewinnstrategie? Wird es jemals so gemacht?

Ich schlage vor, dass die Leute Onkel Bobs " The Clean Coder " lesen , der sich eingehend mit diesem (und anderen) Thema der Professionalität im Bereich der Programmierung befasst.

Oh, und die Argumente, dass man kein Kata machen und keine Familie gründen kann, sind einfach Ausreden. Apropos aus Erfahrung: Kinder schlafen irgendwann ein ...


3
Codierung! = 100-Meter-Strich laufen, es sei denn, die 100-Meter-Strecke führt an einem Tag durch ein stark bewaldetes Minenfeld und am nächsten Tag durch ein mit Landminen gefülltes Reisfeld ... Kata ist semantisch der falsche Begriff .

2
-1 Training kann am Arbeitsplatz stattfinden, auch zu bezahlten Zeiten (nicht sicher, warum die Leute dies zu vergessen scheinen). Nicht alles ist reine Arbeit oder reines Lernen.
Joshin4colours

@JarrodRoberson Das Szenario, das Sie gerade dargestellt haben, ist das, was ein Soldat täglich tut. Sie haben also eine ziemlich schlechte Analogie gewählt. Ehrlich gesagt, sollte ich mich über Leute freuen, die ihre 9-5-Arbeit machen und dann nach Hause gehen und aufhören zu lernen, da dies mir einen Wettbewerbsvorteil verschafft.
ThaDon

3
Martin Fowler wurde einmal gefragt, ob er Geld für die Schulung Ihrer Mitarbeiter ausgeben soll. "Haben Sie keine Angst, wenn Sie sie ausbilden, werden sie kündigen?" , und seine Antwort war "Nein, ich habe Angst, wenn ich sie nicht trainiere, werden sie bleiben!" . Nicht jeder Arbeitgeber sieht Ausbildung als Aufwand, die Guten als Investition!

Verschiedene schwierige Probleme mit wenig Planung, Erfahrung oder Anleitung zu lösen, ist das, was die meisten Entwickler, insbesondere Junior-Entwickler, jeden Tag tun müssen. Ich denke, es ist eine ziemlich genaue Analogie. Nur Akademiker dürfen die gleiche Übung immer wieder machen, nur um eine bestimmte Lösung zu finden. Die Fähigkeit, eine erfolgreiche Karriere als Entwickler zu haben, liegt in der Anpassung , nicht in der Wiederholung. Wer sagt, dass es nicht klügere Leute gibt, die nicht nach der Arbeit lernen müssen und in ihren 8 Stunden alles lernen können, was sie brauchen und mehr.

1

Es ist sinnlos, im Kampfkunstkontext nur Katas zu machen. Wie bereits erwähnt, sind Katas Choreographien von Bewegungen, die Ihnen die Form beibringen. Sie kennen die Bewegungen, wissen aber nicht, wie Sie sie anwenden sollen. Sie wissen nicht, in welchen Situationen sie nützlich sind. Wenn Sie wirklich etwas Nützliches mit ihnen tun möchten, benötigen Sie die Anwendung (en), die der Bunkai ist .

In einem Software-Kontext wäre die Code-Kata der Algorithmus, das Werkzeug, das Entwurfsmuster oder eine andere Technologie. Es ist gut zu wissen, aber Sie müssen es anwenden, um es zu verstehen. Sie müssen es in verschiedenen Kontexten verwenden, um es wirklich zu meistern. Der Bunkai wäre eine konkrete Situation, in der diese Kata oder ein Teil von Kata nützlich ist.

Ich sehe an dieser Methodik nichts Falsches, so wird alles gemeistert: etwas lernen, üben, ein Detail hinzufügen, üben, ein weiteres Detail hinzufügen, üben usw.


-1

Programmieren ist eine Kunst wie Malen oder Musik. Wenn jemand Musiker oder Künstler wird, um Geld zu verdienen, gibt es keine Inspiration, die Aufführung ist Ihre Zeit nicht wirklich wert. Wenn Sie sich für Kunst interessieren, kann Sie nichts davon abhalten, sie zu üben und ständig weiterzuentwickeln - jeden Tag werden Sie eine einzelne Technik weiterentwickeln und dabei die Nuancen bemerken, die die meisten Menschen niemals sehen werden.

Es gibt immer Platz für Leute, die gerne Barmusiker und Anstreicher sind, aber sie sind eine ganz andere Klasse von Talenten. Ich nehme an, dass die meisten Hausmaler über die Idee des Übens lachen würden, aber ich wette, dass ein Maler, der geforscht und Techniken geübt hat - im Wesentlichen würde die Anerkennung seiner Arbeit als Kunst eine spürbar bessere Arbeit leisten, selbst auf etwas so Alltäglichem wie dem Malen Ihres Hauses .

Einige Leute werden den Wert der Praxis erkennen, andere nicht. Das allein sollte von Wert sein, wenn Sie in der Lage sind zu evaluieren und nach Menschen suchen, die Kunst machen können (schlanker, einfacher, verständlicher Code) und nicht nur eine Lösung.

ps. Ich nenne mich nicht wirklich künstlerisch oder so - ich mache keine Kata bei abstrakten Problemen, aber ich erkenne den Wert und versuche, meinen Produktionscode ein bisschen umzugestalten.


Insbesondere überausgebildete Musiker können sich negativ mit theoretischer Perfektion auseinandersetzen, was für eine Karriere in der Softwareentwicklung äußerst gefährlich ist . Musik hat ein Ausdruckselement , Programmiersoftware hat dies nicht. Man könnte argumentieren, Apple-Produkte haben diesen Ausdruck, aber das ist Design- Ausdruck, der Code wird nie direkt gesehen oder wahrgenommen . Musik und Kunst sind schlechte Analogien für die Softwareentwicklung. Und Sie zeigen ein ausgeprägtes Vorurteil gegenüber Arbeitern, indem Sie davon ausgehen, dass sie keinen Stolz auf ihre Arbeit haben oder Wert in der Qualität sehen.

Mische Training nicht mit Übung. Übermäßiges Training unterscheidet sich stark von übermäßigem Training. Wenn Sie nicht glauben, dass die Ausdrucksstärke Ihres Codes in den Lieferzeiten und der Codestabilität gesehen wird, weiß ich nicht, ob wir eine gemeinsame Diskussionsgrundlage haben.
Bill K

Egal, was ich denke, ich weiß, dass die meisten Kunden sorgfältig ausgearbeiteten Code nicht erkennen und sich nicht darum kümmern, wie elegant er ist, solange die Anwendung die meiste Zeit funktioniert. Genauso wie sich die Mehrheit der Bevölkerung noch nie mit der Ton- und Videoqualität von VHS und hochkomprimierten Internet-Video- oder -Kassetten befasst hat, und jetzt mit hochkomprimierten MP3s, die all diese Nuancen ohne Beschwerden beseitigen. Übermäßig trainiert ist schlechter als übermäßig geübt, übermäßig trainiert macht man ignoriert "gut genug" und in der Softwareindustrie miserabel.

Programmieren ist ein Handwerk, keine Kunst. Es gibt sowohl handwerkliche als auch ästhetische Ebenen, aber Kunst ist nicht beruflich in der Natur. Softwareentwicklung ist beruflich. Bei weitem mehr Menschen verdienen mit dem Schreiben von Software mehr Geld als mit Künstlern. Software ist nicht subjektiv und existiert nicht nur um ihrer eigenen Existenz willen. Bilder und Musik sind vorhanden, um dem Schöpfer häufig zu gefallen, wie Ihre obige Definition von Ausverkauf als Unterscheidung impliziert. Als jemand, der die Kunstuniversität besucht hat, kann ich Ihnen sagen, dass Programmieren ein berufliches Handwerk ist und nichts damit zu tun hat, ein Kunstwerk zu schaffen.

Wenn Sie nicht der Meinung sind, dass gut gemachte Software schneller, kostengünstiger und einfach besser als von Handwerkern hergestellte Software geliefert wird, haben Sie es nicht richtig gesehen. Es ist nicht sehr unwahrscheinlich, wie viele Leute einen Meisterkünstler, Musiker oder Mitspieler gesehen haben - sie sind einfach nicht so verbreitet und in unserer Branche VIEL schwerer zu erkennen, aber der Unterschied im Talent ist der gleiche wie ist das Ergebnis. Ein Künstler kann 5 Handwerker in Geschwindigkeit und Qualität übertreffen, aber nur wenige haben das Glück, das gesehen zu haben und glauben nicht, dass es das gibt.
Bill K
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.