プログラミングへの情熱。 第15章練習、練習、練習

翻訳について



これは、 「情熱的なプログラマー:ソフトウェア開発における顕著なキャリアの作成」の第15章の翻訳です。 著者のChad Fowlerは、才能のあるRuby開発者であり、RubyおよびIT全般に関するカンファレンスで有名な講演者です。 元サックス奏者、現在はCTO 6Wunderkinder。



内容
内容:

はじめに

謝辞

はじめに

第1章リードまたはダイ

第2章需要と供給

第3章コーディングがすべてではない

第4章最悪になる

第5章知性への投資

第6章両親の言うことを聞かない

300,000ドルを拒否した方法-第6章の終わりの物語

第7章ワゴンになる(ドラフト)

第8章スペシャリストになる

第9章卵をすべて他の人のバスケットに入れないでください

第10章それを愛するか、ドロップする

第11章釣りを学ぶ。

第12章ビジネスの実際の仕組みを学ぶ

第13章メンターを見つける

第15章練習、練習、練習

第31章パニックに陥らない


本のクラウドソーシング翻訳はgithubで実行されます、参加します。



第15章練習、練習、練習



私が音楽大学の学生だったとき、その壁で長い夜を過ごしました。 部屋の薄い壁を通して、私が想像できる最も恐ろしい音楽の音に没頭しました。 大学のミュージシャンがそれほど悪くなかったわけではありません。 それどころか。 しかし、彼らは練習しました。



練習するときは良い音ではありません 。 実際のエクササイズ中にすべてがうまくいった場合、それはあなたがすべての強みを動員していないことを意味します。 このためには、練習が必要です。 スポーツでも同じことが言えます。 アスリートは、トレーニングで疲れきって競技会で勝ちます。 彼らは間違いを犯しますが、職場ではなく、密室で行います。



ITでは、多くの場合、彼らの能力を最大限に活用する開発者を探しています。 残念ながら、通常、この開発者は、彼が雇われている仕事を遂行するのに十分な資格がありません。 私たちの業界は仕事をしながら練習する傾向があります。 ステージに上がり、私の音楽大学のクラスで聞いたことを繰り返すプロのミュージシャンを想像できますか? 彼は理解されないでしょう。 ミュージシャンはコンサートではなく、練習のために支払わます。 ファイター、ボクサー、彼らは決闘中の疲労から転落すると、スポーツでこのように発展することはできません。



業界として、練習する時間が必要です。 欧米では、地元のプログラマーが外国企業よりも高品質のコードを作成することがよくあります。 品質を競おうとすると、練習のために労働時間を使うのをやめなければなりません。 プロジェクトに時間投資する必要があります。



数年前、音楽の授業の後、プログラミングタスクの実験を始めました。 最初のルールは、私が開発していたソフトウェアは、私自身が使いたいものではないということでした。 私は仕事を終えたくありませんでした。 だから役に立たないソフトウェアを書きました。



私は試みませんでしたが、私のアイデアの多くがうまくいかなかったことに気付いて失望しました。 できる限り仕事をしようとしましたが、デザインとコードは思ったほど美しくありませんでした。



振り返ってみると、経験した奇妙な感覚は、得られた経験が良い兆候だったことを示唆していることがわかります。 私のコードは、優雅な瞬間を完全に欠いていませんでした。 しかし、脳回に負担をかけ、コードセクションを作成しました。 サックスを演奏するときと同じように、実際に良い音しかなかった場合、私は十分に努力していなかったことを知っていました。 また、コードを書くとき、同時に美しいコードだけが判明した場合は、良い練習の場所であるエッジではなく、思考能力の中心にいたのでしょう。



それでは、どこで練習すればいいのでしょうか? あなたの限界はどこですか? ソフトウェア開発の実践に関しては、これは別の本のトピックです。 手始めに、私は再びジャズミュージシャンとしての経験を借ります。 私は練習を以下のカテゴリーに分けます(私たちの中で音楽家以外の人のために簡略化されています):



-物理学/調整

-シートからの読み取り

-即興



これは、ソフトウェア開発としての実践を一方的に考えるためのフレームワークとして役立ちます。



物理学/調整:



ミュージシャンは、楽器の技術的な側面を練習する必要があります:音の抽出、身体の調整(たとえば、指を簡単に動かす)、速度と正確さ-これらはすべて練習において重要です。 これらの音楽の基礎を比較するソフトウェア開発者と同等のものは何ですか? あまり注意を払っていないプログラミング言語のほこりっぽいコーナーには何がありますか? たとえば、選択したプログラミング言語は正規表現をサポートしていますか? 正規表現は、多くの開発環境で非常に強力で、残念ながら十分に活用されていないツールです。 正規表現を効果的に使用するための知識レベルが不十分であるため、そのような機会がある場合、開発者は非常に頻繁にそれらを使用しません。 その結果、文字列の構造分析に不要なコード(不要な文字列解析コード)が多数作成されますが、これは今後に従う必要があります。



同じことがプログラミング言語のAPIまたは関数ライブラリにも当てはまります。 (ミュージシャンが言うように)あなたの指の下に開発環境のツールがあまりない場合、本当に必要なときにそれらを使用し始めることはまずありません。 選択した開発環境でマルチスレッドプログラミングがどのように機能するかなど、実際のドリルを試してください。 または、ストリーミングライブラリ、ネットワークソフトウェアAPI、またはリストやコレクションを操作するために利用できるユーティリティセットについてはどうでしょうか。 ほとんどの最新のプログラミング言語は、これらすべての分野で豊富で強力なライブラリを提供しますが、ソフトウェア開発者は、使用可能なすべてのツールを所有して、書くことができる同じコードをあまり効率的に書くことができない小さな部分を勉強することを好みます。



シートからの読み取り:



ミュージシャンに関して言えば、音楽を読んで演奏する能力は、プロと最初の試みをほぼ完全に区別します。 私はかつてBlockbuster(ビデオレンタル会社)のサックスを演奏しました。 リードとセカンドゲームの両方を速いペースでプレイしました。 テープが回転し始めるとすぐに、文字通り初めてメモを目にしました。 リーディングゲームとセカンドゲームを交互にプレイしました。 間違い、そしてグループ全体が最初からやり直さなければなりませんでした-そして、この代償はスタジオの時間です。



ソフトウェア開発者に関しては、コードに関するシートから読むことは彼らにとって何を意味しますか? または仕様または設計要件? 練習する新しいコードを見つけるのに最適な場所は、オープンソースコミュニティです。 お気に入りのオープンソースソフトウェアの例はありますか? 何かを追加してみませんか? オープンソースソフトウェアのTo Doリストを参照し、新しいプロパティを追加するために限られた時間を与えます(または、少なくとも追加する必要があるものを決定します)。



選択後、ソフトウェアのソースコードをダウンロードして、調査を開始します。 どこを見るべきかを知るには? 多くのコードで自分の道を見つけるためにどのようなトリックを使用しますか? 出発点はどこですか?



これは、短時間で頻繁に練習できる練習です。 実際に何かを開発する必要はありません 。 これを出発点として使用してください。 実際の目標は、探しているものをできるだけ早く理解することです。 さまざまなソフトウェアを使用していることを確認してください。 さまざまなスタイルのさまざまなプログラミング言語で、さまざまな種類のソフトウェアを使用してみてください。 自分が何をしやすくし、何が困難なのかを自分で確認してください。 どのパターンがコードの操作に役立ちますか? 比cru的に言えば、パンくずの痕跡は、複雑なセクションまたは機能の呼び出しスタックを上下に移動するのに役立ちますか?



即興:



即興とは、何らかの構造または障害を取り、その構造の上に新しいものをその場で作成することを意味します。 プログラマーとして、私はほとんどの場合、ストレスの多い状況で即興で演奏することに気付きました。 やばい! ワイヤレスネットワークアプリケーションサーバーが存在し、注文を失います! そのとき、プログラミングで最も創造的な即興演奏が行われます。 失われたデータを回復したり、バイナリファイルからワイヤレスパケットを手動で置き換えたりするなど、おかしなことをすると 特にそのような瞬間に、誰もあなたのためにあなたを準備していませんでした。 シャープで高速なプログラミングのこのスキルは、時間通りに適用されると魔法の力に似ています。



コードを記述するときに即興スキルを向上させるための優れた方法は、独自の設定制限に対処することです。 単純なプログラムを選択し、これらの制限を付けて作成してみてください。 私のお気に入りの練習は、古い曲「99 Beer Bottles on the Wall」のテキストを表示するプログラムを書くことです//注。 perev。:youtubeへのリンク- ビールはありませんが、 あります;) 。 変数を割り当てずにこのプログラムをどのように記述できますか? または、正しいテキストを表示するプログラムをどれだけ小さく書くことができますか? 制限を追加します-そのようなプログラムをどれくらい速く書くことができますか? 小さくて複雑なタイマータスクを解決してみませんか?



これは、練習方法に関する限られた視点の1つにすぎません。 芸術から修道僧の修行まで、あらゆる分野の例を見つけることができます。 練習の必要性を見つけ作業中はトレーニングを行わないようにすることが重要です。 練習する時間を確保する必要があります。 これはあなたの責任です。



行動する!



1.トップコーダー-topcoder.comは、プログラミング競技のサイトです。 アカウントを作成して賞品を競うことができます。 他の人との競争に興味がない場合でも、TopCoderは、実践的な演習として完全に使用できる問題の大規模なコレクションを備えた練習室を提供します。 登録して、お試しください!



2. Code Kata-Pragmatic Programmers(私たちのお気に入りの出版社)の1人であるDave Thomasは、コードを書くというアイデアを取り入れて、実際に何かをしました。 彼は、プログラマーが選択したプログラミング言語で解決する小さな挑発的なエクササイズである、コードカタと呼ばれるシリーズを作成しました。 各カタは、脳を動かす特別な技術または思考プロセスです。 この本を書いている時点で、デイブはそのようなカタを21個作成し、ウェブサイトに自由に投稿しました( http://codecata.pragprog.com/ //何らかの理由で翻訳リンクがタンブラーにつながることに注意してください )。 このサイトには、メーリングリストへのリンクと、問題の解決方法に関する議論中の他のユーザーのソリューションがあります。 あなたの仕事:21の演習すべてを実行する。 あなたの猫の経験の日記(またはブログ?)を保管してください。 完了したら、独自の型を書き、他の人と共有します。



All Articles