あなたがより速くソフトウェアを提供できるように、よ 確かに、誰がしないのですか? インターネットは、開発者のためのヒントがいっぱいです—数百、数千、おそらく何百万ものもの。 問題は、誰もが読む時間があるよりもはるかに多くのものがあるので、私はあなたのためにそれらを煮詰めました。
ここに私がそこに見つけた非常に最高のアドバイスを表す53のヒントがあります。 しかし、私が見つけたものを言う前に、私は私が”より速くプログラミングすることによって”意味するものを説明する必要があり、”先端。”
“より高速”の問題
より高速なコードを作成するには、効率的でなければなりません。 これは、入力からツール、思考まですべてを意味することができます。 しかし、プログラマとしての私たちの仕事のほとんどは、入力やコンパイルではありません。 より速く考えるためには、より多くのパターンおよび関係を学ばなければならない。 これは経験が造る知恵および知識である。 あなたがより速く行くために必要なものは、時間の経過とともに変化します。
“ヒント”の問題
私が読んだヒントのほとんどは、私の旅に沿った特定の時点でのみ適用され、必ずしもすべての人に適用されるわけではありません。 これらの多くは、”個人的な旅”または”私のために働いたもの”カテゴリに分類されます。 しかし、私の道はおそらくあなたの道ではありません。 私のために働く機械的なもののいくつかはおそらくあなたのために働くでしょうが、私が行ったドメインとパターンの選択肢の多くは役に立たな
機械的なものは非常に簡単に最適化できます。 しかし、学習のものには制限はありません。 誰もそれをすべて知ることはありません。 戦略的、戦術的な選択をしなければならないし、起こるとき機会を利用するために準備されなければならない。
ヒントの有用性は特異性の関数として落ちる。 より具体的なヒントは誰にも適用されませんが、一般的なヒントはあまりにも、よく、一般的です。 彼らは行動に変わるのがはるかに難しいです。 だから、あなたが”もっと速く行きたい”と言うとき、あなたは本当に何をしたいのですか?「言ってやる。
あなたが望むのはフローです
すべてのプログラマが望んでいるのは、特にDevOpsの時代には、フローです。 流れの状態は効率を最大にし、挑戦のちょうど右のレベルを組み込むことによって楽しみを高める;1つは時と仕事で十分に従事しているとどまる(これはBallmerのピークと混同されるべきではない)。 流れの状態を維持するには、適切な環境と摩擦のないプロセスが必要です。
ペアリング時の流れの状態は、あなたのそれぞれが余分な脳を持っているようなものです。 残念なことに、オープンオフィスなどの多くの開発環境は、フローには非友好的です。
あなたのオプションが制限されることがあります
あなたのプロセス、またはあなた自身について最適ではないものを見つけると、そのような制:
- それを無視します。 多分それはそれ自身で良くなるでしょう。
- それは本当に必要ですか?
- マシンにそれをさせる。
- まれに可能、これは木びき台を渡している。 しかし、利用可能な場合は合法的なオプションです。
- 私たちは皆、時々(毎日)これをしなければなりません。 いくつかのジョブは他のジョブよりも大きいです。
あなたのタイピングがあなたが望むよりも遅い場合は、少し時間をかけてレベルアップしてください。 統合開発環境が混乱して役に立たない(またはあまりにも有用である)場合は、別のものや単純なものを試してみてください。 あなたは別の方法を見つけるか、少なくとも限界を学ぶかもしれません。
学ぶ方法はたくさんあります。 Googleは、書籍、ビデオ、ブログ投稿、Stack Overflowの質問、そしてもちろん他の人と同じように、あなたの友人です。 あなたが学びたいと思うある事は隠されるかもしれない;他は現われるより大きいかもしれない。 努力の利点のバランスをとり、あなた自身と忍耐強くありなさい。 すべての成果を祝い、動き続けます。
より高速なプログラミングのためのトップのヒント
以下のヒントをグループ化して見る一つの方法は、コレクションから興味深い一般化を描画す:
- 反省しろ あなたは何をしたいですか、あなたが実際に何をしますか。
- 用具、プロセス、環境、または知識からの摩擦無し;絶え間ない挑戦をしかしあまり追求しないで下さい。
- ファンダメンタルズ: 言語、ツール、パターン、プラクティスなど、皆(特に教えることを喜んでそれら)から;学ぶ方法を学び、絶えず学びなさい。
- 他の人を教える。 物事を説明しなければならないことは単純化を強制し、思考から口頭または視覚的な表現への変換は洞察を生み出す。
- あなたの正常な義務の外を見なさい;引き、書き、blogは、大会に行き、出席し、提示を与え、ウィルソンにバレーボールを必要とすれば話す。
以下のヒントは、単にデータポイント、熟考することです—人生のためのチートシートやプログラマとしてのキャリアのためのto-doリストではありません。 私は183の先端のリストから始まり、部門にそれらを分け、繰返しおよび個人的なバイアスに基づいて優先順位を割り当て、そしてそれぞれからの上の
そうだ、バイアス。 私は開発者が良いか速いプログラマーを作るものを知っているので、私が読んだすべてのものは私の偏見をフィルタリングしました。 具体的には、私はに偏っています:
- アジャイルメソッド。
- ドメイン駆動型設計。
- 継続的な改善。
- 可能な限りフロー状態で作業します。
そして、私はRobert C.”Uncle Bob”Martinの”激しい平凡さ”に関する声明に強く同意します”:
“速く行く唯一の方法はうまく行くことです。 あなたがスピードのために品質を交換する誘惑に屈するたびに、あなたは遅くなります。 毎回。”
塩の粒で、次のヒント(とあなたがインターネット上で読んだ他のすべて)を取ります。 働くものを保ち、合わせなさい;無用であるものを捨てなさい。
そして、ここでより高速なプログラミングのための私のヒントです:品質に焦点を当て、速度が続きます。
反射は鍵です
反射は自己改善の鍵です:
- 絶えずあなたの意思決定プロセスを改善しなさい;非難なしであなたの間違いから学びなさい。
- アプリケーションとその実行環境の全範囲を理解する上での盲点を排除します。
- あなたの尾を追いかけないでください。
客観的に測定
あなたの最大の制約が何であるかを知っていることがあり、時にはそれを測定しなければならないことがあります。
- 数日間働いているときに、自分自身の詳細な監査を行うことを検討してください。
- それはちょうどコードの任意の部分を最適化するようなものです。 すべてを記録し、ホットスポットを特定し、それらを改善します。
- あなたの時間はどこに行くのですか? 多くのプログラマは、コードを書くよりもはるかに多くの時間をコードを読むことに費やしています。
練習、練習、練習
様々な課題について、いくつかのレベルの練習を回避することはありません。
- たくさんのソフトウェアを書いてください。
- 大きなプログラムを書く。
- get-goからレビュー対応コードを書きます。
- 練習する場所はたくさんあります。topcoder.com、プロジェクト-オイラー、hackerrank.com。一つを選択し、軌道に乗る。
成功のためのデザイン
デザイン技術を学ぶことは、あなたの思考ツールの習得の一部であるべきです。 加えて、:
- ユーザーの理解; 彼らの問題、本当の問題を理解し、それを解決してください。 ドメインの知識は非常に役立ちます。
- 問題、解決策、および設計について、同僚やドメインの専門家に相談してください。
- 思考やコードを書きながら描くことで認知負荷を軽減します。
- 寿命とメンテナンスのために設計する場合、データはコードよりも長生きすることに注意してください。
- 車輪をいつ再発明するか、いつ(通常はそうではない)かを知っています。
- 意図的に物事に名前を付ける;これはコードからドメインに戻る唯一のリンクです。
プロセスを釘付け
私たちは自分たちの建設のプロセスに多くの時間を費やしています。
- 設計によりバグを不可能にします。 Fail fast、nullチェックの代わりに例外を使用し、型システムを使用してデータエラーを防止し、自動テストを使用します。
- どこから始めればいいのか迷っているなら、自分が一番よく理解している部分から始めてください。
- その製品がどんなに愚かであっても、実際に最初に製品を作るコードを記述します。
- エラーを無視しないでください。
- 開発に対するアジャイルアプローチに従ってください。
- 抽象化は、意味があり、実際に再利用される場合にのみ引き出します。
- 巨人の肩の上に立って、オープンソースのライブラリ、サードパーティのソリューションなどを使用してください。
- 簡単にするために最適化します。
- テストを自動化し、テスト駆動開発(TDD)を練習
- Ide、コード生成ユーティリティなどのスマートツールを使用します。 しかし、彼らはあなたの方法で取得している場合は、ダウンシフトすることを恐れてはいけません。
- あなたの言語と標準ライブラリに非常に精通していてください。 ドキュメント内でクロールに費やす時間が短いほど、より良いものになります。
- ソース管理を使用してください—あなた自身でも。
- プロファイラーを使用します。 必要なものだけを最適化する
- タッチタイプを学ぶ。 これにより、入力の認知的負荷がゼロになり、速度と精度が向上します
適切な作業環境を作成します
一定の中断、不快な状況、無限の会議は、フローを落胆させます。
- 気を散らさない環境にいることを確認し、気を散らすことができないようにしてください。
- 自分を知り、ピーク時に仕事をする—他の誰かのものではない.
仕事の外を探る
あなたが知りたいと思うかもしれないすべてがあなたのオフィスやインターネット上にあるわけではありません。
- 新しいツールやテクニックに身をゆだねてください。 動作するものを維持します。
- サイドプロジェクトとオープンソースプロジェクトに取り組んでいます。
それを健康に保つ
死んだ人はコードを書いていません。 病気の人は悪いコードを書く。 自分の世話をしてください。
- あなたのコードから離れてステップの値を知っています。
- より多くの睡眠を得、よりよく食べ、そしてより少ない時間を働かせなさい。
良い学習習慣を開発
学習はプログラマにとって生涯にわたるプロセスですが、私たちは警告しました:インターネットは光沢のあるものでいっぱいです。
- 基礎をマスターする: OOPのためのDRY(don’t repeat yourself)やSOLID(single responsibility、open-closed、Liskov substitution、interface segregation and dependency inversion)、パターンとアンチパターン、アルゴリズム、データ理論、グラフ理論などのプログラミングパラダイムとプラクティス。
- やって学ぶ。 学習中は常にコードで遊んでください。
- メンターを見つける。
- あなたのために働くものを見るために学習のさまざまな方法を探ります。
品質は一定ではない
品質は、コードの可読性からモジュール構造や複雑さ、ドメインの意図をどれだけうまく表現するかまで、多くの地面をカバーしています。
- 速度ではなく、品質に焦点を当てます。
- コード”品質”はいつでも”あなたが持っているものと知っているものでできる最高のもの”であることを受け入れます。”
- いつも頑張ってください。
- 極端な場合のみ(つまり プロトタイピング/探索/捨てるコード)と一時的な状況は、あなたのコードの品質が”あなたができる最善の”レベルを下回るようにする必要があります(そし)
Soft skills matter
私は人々のスキルについてのヒントをたくさん見つけられませんでしたが、人々はかなり避けられませんでした。
- 人との関わり方を知ることで、周りの人から学び、摩擦を少なくし、より多くの喜びを教えられるようになります。
- 明確に書いて話すことを学ぶことは、あなたのアイデアをより速く理解するのに役立ちます。
出て行ってコード
それはそれです、より速くプログラミングするための最高のアドバイスの私の要約です。 これらのヒントに従ってください、あなたはあなたのプログラミングスキルを向上させるためにあなたの方法にもなるでしょう—とより速くコーディング。