コード型は、各反復でコードを改善しようと何度も小さな問題を行うことにより、プログラマーのスキルを磨くことを提案する概念です。名前は、フォーム(別名カタ)が何度も繰り返し改善されていく練習である、武道カタの類推に由来しています。
トピックに関する最後の質問に対する反応から、このアプローチの欠点は何か知りたいですか?
コード型は、各反復でコードを改善しようと何度も小さな問題を行うことにより、プログラマーのスキルを磨くことを提案する概念です。名前は、フォーム(別名カタ)が何度も繰り返し改善されていく練習である、武道カタの類推に由来しています。
トピックに関する最後の質問に対する反応から、このアプローチの欠点は何か知りたいですか?
回答:
原則として、コード型には欠点はありません。異なるアプローチと異なる言語で、同じタスクを何度も達成しようとします。しかし
格闘技のカタのように、プログラミングのカタは、主に機能よりも形に関するものだと思います。エレガントなコードを書くことを教えてくれるかもしれませんが、コードを書いている問題を解決することは教えません。プログラマーとして改善するためのより良い方法は、実際の問題解決を必要とするパズルを解決し、コードカタでは決して教えられない方法で適切にファクタリングされたコードの価値を教えてくれる大規模なプロジェクトに取り組むことだと思います。
余談ですが、「コードカタ」や「ソフトウェアクラフツマンシップ」などの用語は、新しいものや有用なものを記述することよりも、私たちの職業をロマンチックにすることの方が多いと思います。
コード型は時間がかかります。
フルタイムの開発者であり父親である私は、コンピューティングを趣味にしたくありません。
そして、上司が私の現在のプロジェクトとは無関係のアプリケーションを開発するために私にお金を払うとは思いません。
ボクサーとして、私はカタの背後にある原則に反対する必要があります。硬すぎて実際には役立ちません。リングでは、自由に流れる環境で学んだ原則を適用する方法を理解する必要があります。
これは、技術の学習と改善を行うべきではないということではありません。バッグで練習すると、パンチを使用して、カタと同じように投げる方法を感じることができます。しかし、それほど厳格ではありません。あなたは同時に多くのことを練習し、バッグを動き回り、安定したプラットフォームから投げ、照準を合わせ、呼吸し、リストが続きます。
最も重要なことは、すべてが実際に使用される方法で一緒に学習されることです。これまでで最も美しいforループを記述できても、それをプログラムに組み込む方法を理解できない場合、それは何が良いでしょうか?
あなたが練習をしたいなら、より良いことは自分でツールを構築するか、使用するツールに取り組むことだと思います。それはあなたのすべてのスキルを行使する必要があり、最終的には何か有用なものがあるかもしれません。
私の観点からの主な欠点は、それが恐ろしく退屈であることです。また、プログラマーは、何か役に立つことやクールなことをするソフトウェアの開発に成功しているようです。コードカタアプローチは、その反対のように思われます。
カタは、あなたが努力するべきものの正反対を意味します。
トレーニングで使用され、技術のスキルを示すために設計された、武道の特定の動きのシーケンスで構成されるエクササイズ
カタ(起源:1950–55; <日本語:形状、パターン)という用語は、武道で使用されており、あなたの質問は、タッチタイピングのような筋肉記憶の暗記についてです。
オリジナルの空手キッドでは、車のワックスを掛け、床をサンディングし、フェンスをペイントしましたが、これらはすべて文脈から外れており、この場合は筋肉の記憶を提供するだけの説明なしで教えられたカタスでした。彼らが何を意味するのかは、先生がやってきてこれらの虚ろな活動のコンテキストを教えてからだ。
私は、同じことがで物事を置くためにメンターなしに、ここでは適用されないと思うコンテキストを再実行し、問題解決の間違った複数の言語では良い単一のものよりもです。メンターがいなければ、どこを改善すればいいのかは時間の無駄です。
言語やプラットフォームのイディオムやセマンティクスの新しいバリエーションを学ぶことで問題を創造的に解決することとは正反対です。
System.out.println()
できるだけ楽に入力できるようにしたい場合は、カタを練習します。
あなたは問題の解決策を改善したい場合は違う、実装時および/またはスペースの要件を軽減するために以上の慣用的な原則を適用、そのISN ないカタはであなたを助けることを何か。
同じことを何度も何度も実装し直したという業界用語は、少しずつ改善され、完全性の疑わしい利点を求めてすでに採用されています。これはゴールドメッキと呼ばれます。
同じ言語/ランタイム/プラットフォームに適用される場合、使用すべき用語はリファクタリングです。そして、動作中のプログラムを別の言語/ランタイム/プラットフォームに移動する際の移植。カタは、セマンティクスを完全に理解することなく、ヒップでクールで神秘的に聞こえるので、おそらく誤って選択されたでしょう。
ほとんどの開発者、特にジュニア開発者が毎日しなければならないことは、計画、経験、またはガイダンスをほとんど必要とせずに、さまざまな困難な問題を解決することです。
特定の解決策に磨きをかけるためだけに、同じ練習を繰り返し行うのは学者だけです。開発者としてのキャリアを成功させるスキルは、反復ではなく適応にあります。
仕事の後に勉強する必要のない頭の良い人はいないと言い、仕事で8時間で知る必要のあることすべてを学ぶことができますか?
比phor「カタ」は最高ではないかもしれないことに同意します。空手のカタは、完全に、鮮明に、そして自動的に実行できるようになるまで、特定の個別の動きを練習する目的で実行されます。これは、批判的思考と創造性が必要な活動にうまく変換されません。(たとえば、タイピングに変換するとよいでしょう)。
つまり、名前の失敗はアクティビティの失敗ではありません。誰かが良くなりたいと思っていることを実践することにはどんな潜在的な欠点があるのでしょうか?機会費用の観点からすると、それを行うのにかかる時間が欠点であると言えるかもしれませんが、実際には投資です。したがって、ソフトウェア開発の技術を実践するのに費やした時間は、株式や債券に費やされたお金が長期の貯蓄者/投資家に支払われるため、ソフトウェア開発者に費やされます。それは「欠点」ではなく、テーブルステークスです。
あなたは困難で、あなたの能力の範囲を超えたものを試すことで良くなります。自分に挑戦。武道のように、同じ「コード型」を何度も実行しても、それは行われません。スキルを向上させるのではなく、能力を停滞させると思います。
初めて練習の方法として使用できますが、制限されています。代わりにオイラープロジェクトを使用するように人々に伝えます。より多くの問題とより挑戦的な。
私にとって、このテクニックの主な欠点は、あなたの時間を最適に使用していないことです。
この演習の学習価値にも疑問があります。それを上手くやり直すために何度もやり直すときは、専門家のフィードバックが不可欠です。質の高いフィードバックがなければ、何かを学ぶこともできますが、間違ったことを非常によく学ぶ可能性があります。
誤解しないでください、プログラミングはプログラミングが上手になるための唯一の方法であり、カタは間違いなく練習の一形態です。しかし、コーディングの競合問題の解決、独自の「楽しいプロジェクト」の作成、新しいプログラミング言語の学習なども同様です。最終的には、最も快適な手法を選択し、その過程で明確なガイダンスがあることを確認する必要があります。
何らかの形のカタがなければ、あなたは素晴らしいコーダーになることは決してないと信じています。カタは練習です、それは文字通りそれが意味することです。これを例に挙げてみましょう。アスリートは、「100メートルのダッシュを見せて走らせるだけです、ねじ練習」と言います。それは勝利戦略のように聞こえますか?それはこの方法で行われたことがありますか?
ボブおじさんの「The Clean Coder」を読むことをお勧めします。彼は、プログラミングの分野におけるプロフェッショナリズムのこの(および他の)トピックについて深く掘り下げています。
ああ、あなたはカタをして家族を育てることができないという主張は、単に言い訳です。経験から言えば、子供はある時点で眠りにつく...
武道の文脈でカタだけを行うのは無意味です。前に述べたように、カタは、あなたに形を教える動きの振り付けです。あなたは動きを知っていますが、それらを適用する方法を知りません。どのような状況で役立つかわかりません。本当に便利なことをしたい場合は、アプリケーションが必要です。これがBunkaiです。
ソフトウェアのコンテキストでは、コードカタは、アルゴリズム、ツール、デザインパターン、またはその他のテクノロジになります。それを知ることは良いことですが、それを理解するには適用する必要があります。実際にマスターするには、さまざまなコンテキストで使用する必要があります。文海は、そのカタまたはカタの一部が役立つ具体的な状況です。
私はその方法論に何の問題もないと思います。これは何かを習得する方法です。何かを学び、それを練習し、詳細を追加し、練習し、別の詳細を追加し、練習します。
プログラミングは、絵画や音楽のような芸術です。誰かがあなたが言うことができるお金のためにミュージシャンやアーティストになったとき、インスピレーションはありません、パフォーマンスはあなたの時間の価値が本当にありません。あなたが芸術に興味があるなら、何もあなたがそれを実践し、絶えず洗練することを止めることはできません。
バーミュージシャンや家の画家であることを幸せにする人々の余地は常にありますが、彼らは全く異なるクラスの才能です。ほとんどの家の画家は練習のアイデアを笑うと思いますが、私は研究と技術を実践した画家に違いありません-芸術としての仕事を本質的に認識することは、あなたの家を描くような平凡なものでさえ、著しく良い仕事をするでしょう。
一部の人々は、一部の習慣の練習の価値を認識するでしょう。評価する立場にあり、単なるソリューションではなく、アート(リーン、シンプル、理解可能なコード)を作成できる人を探している場合、それだけで価値があります。
追伸 私は自分自身を驚くほど芸術的であるとか何かとは呼んでいません。抽象的な問題についてはカタをしませんが、その価値を認識しており、生産コードをかなりリファクタリングしようとしています。