最も影響力のあるプログラマーの本 12 冊 (パート 1)
多くの人、特にソフトウェア エンジニアリングのキャリアを始めたばかりの同僚や友人が私にこの質問をします。より良い開発者になるためにはどのような本を読むべきですか?本当に勉強する必要があるのでしょうか?これは検討する価値のある質問であり、私がソフトウェア エンジニアになったときに多くのメンターに尋ねた質問です。しかし問題は、多くの人がさまざまなテーマについてさまざまな本を勧めることです。彼らが勧めた本は彼らの意見としては素晴らしいものでしたが、優れたエンジニアになるために何を読むべきか、読まなければならない重要な本は何なのかを誰も教えてくれませんでした。
私はメンターから多くのことを学び、まだまだ学ぶべきことがたくさんあるし、読むべき本がたくさんあることに気づきました。私は自分の専門分野 (ソフトウェアエンジニアリング) の本を毎月読むことにしました。時間をかけて、トップの開発者になりたいなら読むべきだと思う本のリストをまとめました。
免責事項 - これらの本を読むだけでは、優れた開発者になれるわけではありません。また、長年の実務経験を積み、これらの本の原則を現実世界の実践に適用し、現実世界での問題解決スキルを磨く必要もあります。
これらの本を読むと、一部の開発者が初期に経験し犯した、よくある落とし穴や間違いを回避するのに役立ちます。私がソフトウェア分野に初めて参入したときに、誰かがこれらの本を私に勧めてくれたらよかったのにと思います。これらの本を見つけて何度も読むことができて、今でもとてもうれしく思っています。おそらく、大学でコンピューター サイエンスやエンジニアリングのコースを受講しているときに、これらの本の何冊かを読んだことがあるのではないでしょうか。もしかしたら、当時はあなたにとってそれらは重要ではないと思われたかもしれませんが、私はこれらの本の原則の多くを使用し、適用した私自身の経験から話すことができます。
この書籍リストがすべてを網羅しているわけではないことも指摘しておきたいと思います。毎年多くの素晴らしい本が出版されています。これらは私と私のキャリアに最も大きな影響を与えた本です。さらに、これらの書籍は言語に依存しないため、あらゆるソフトウェア言語に適用できます。さて、それでは本の紹介を始めましょう! (これらはすべて必須であり、私への影響に応じて後から順に紹介します。)
12. 「レガシー コードを効果的に使用する」 私がこの本を気に入っている理由は、ほとんどすべてのソフトウェア開発担当者が、ある部分ではそう思っているからです。キャリアの中で、多くの場合、レガシー システムをサポートし、使用する必要があります。この本では、Michael Feathers が、テストされていないレガシー コード ベースをより効果的に操作するための最初から最後までの戦略を提供します。この本は、マイケルが有名なオブジェクト メンター ワークショップ用に作成した資料、つまり開発者、技術マネージャー、およびテスターがレガシー システムを制御できるようにするためにマイケルがメンターとして使用するテクニックを利用しています。
11. 『神話の人月』 この本は古典ですが、最近改訂され、修正されました。この本が今でもソフトウェア製品開発にどれほど関連しているかは驚くべきことです。ソフトウェアに携わるなら、この本は必読です。この本の最も価値のある部分は、プロトタイプの「廃棄計画」の章だと私は考えています。私たちの目標は通常、何かをより大きく、より良く、より速く作ることですが、それが何であれ、私たちが構築する何かは常に破棄され、やり直さなければなりません。私自身、この状況を何度も経験してきました。したがって、次に起こることに適応できるように、捨てる計画を立てることが重要です。製品の改良や開発は避けられないため、最初の製品がうまくいくと夢見ていると、その製品を放棄してしまう危険があります。計画的な放棄は、合理的なマイルストーンを設定することでスケジュールの目標を達成するのにも役立ちます。
10. 「デザインパターン」 アーキテクトまたはシステムデザイナーになることを計画している場合は、おそらくこの本を読む必要があります。ソフトウェア開発に関して書かれた史上最高の本として称賛されるこの本は、ソフトウェア エンジニアが長年にわたって業界が直面する一般的な問題を回避し、対処するのに役立ってきたさまざまな設計パターンについて詳しく説明しています。本書の戦略に従うことは、より高品質で柔軟性があり、保守しやすいソフトウェアを構築するのに役立ちます。伝説の「ギャング・オブ・フォー」がこの本であるのは、4 人の有名な作家によって書かれたからです。
9. 「Programming Pearls Second Edition」という本は、このリストにある他の本とは少し異なります。この本は「プログラマーのように考える」のに役立つと思います。 「Programming Pearls」は、「Communications of the ACM」で以前に公開された 15 のコラムの概要です。これらのコラムでは、要件の収集からパフォーマンスの最適化まで、幅広いプログラミング関連のトピックを取り上げています。コーディング技術とアルゴリズムに焦点を当てます。
各コラムは章にまとめられています。通常、各章は実際的な問題のシナリオの提示から始まります。次に、さまざまな解決策とそれに対応する教訓が提案されます。文体は明快で明快です。
「Programming Pearls」は、新しいプログラミングの概念を教える普通の本ではありません。優れた、時には非常に斬新なアイデアが含まれていますが、この本の目的は新しいことを教えることではなく、より優れた問題解決者になるのを助けることです。
8. 『CODE: コンピュータのハードウェアとソフトウェアの隠された言語』 この本は、複雑なシステムの作成と開発に関する多くの「魔法」を解き明かします。現在、抽象化が非常に多くなっているため、低レベルの詳細の一部が開発者から隠されています。実際にこの本を常に使用することはおそらくないかもしれませんが、何を構築しているのか、そしてオーケストレーション全体がどのように機能するのかを知ることは常に良い考えだと思います。これは、厄介なバグを修正するために「ブラック ボックス」を開いてソフトウェアまたはハードウェアを詳しく調べる必要がある場合に便利です。 Charles Petzold 著の『CODE: The Hidden Language of Computer Hardware and Software』では、10 進数、8 進数、2 進数体系から高級言語に至るまで、多くのプログラミング概念が整理されています。この本では、パケットベースの通信プロトコルと TCP について紹介します。多くの章でハードウェアの概念が取り上げられ、5 つの章でソフトウェアが取り上げられ、オペレーティング システム、浮動小数点演算、グラフィカル ユーザー インターフェイスについて説明されています。
7. 「コンピュータープログラミングの芸術」 これも古典です。有名なコンピューター科学者のドナルド・クヌース教授によって編集され、業界の多くのトッププログラマーから高く評価されています。ビル・ゲイツもこの本を賞賛しました:
「自分が本当に優れたプログラマーだと思うなら…[Knuth の]『The Art of Computer Programming』を読んでください…読むことができるなら、この本全体を理解できるなら、お願いします」必ず履歴書を送ってください。」
この本は、基本的なプログラミングの概念とテクニックから始まり、次に、コンピューター内の情報の表現、データ要素間の構造、関係、およびその処理方法など、より具体的な情報構造に焦点を当てます。それらを効果的に実行します。さらに、シミュレーション、数値手法、記号計算、ソフトウェアおよびシステム設計のための基本的なアプリケーションが提供されます。
以下に役立つテクニックと戦略を継続的に探求します。
複雑さを最小限に抑え、創造性を最大限に高めて設計する
共同開発のメリットを得る
防御的なプログラミング手法を適用してエラーを削減し、排除する
コードを安全にリファクタリングまたは改善する機会を活用する
使用するプロジェクトに固有の構造的アプローチ
問題を迅速かつ効率的にデバッグする
重要な構造的問題を正しく早期に解決する
最初から最後まで高品質のプロジェクトを構築する
これらの本を読んだことがある場合、または他のソフトウェア開発者が読まなければならない場合は、メッセージを残してください読んだ本についてコメントしてください!
高羅峰兄弟は弟子を無料で募集しています: http://www.hdb.com/party/lzcw-comm.html
LAMP兄弟のオリジナルPHPビデオチュートリアルCD/「PHPを詳しく説明する」を無料で受け取ります。お問い合わせください。詳細は公式ウェブサイトのカスタマーサービス:
http://www.lampbrother.net
上記では、プログラマーにとって最も影響力のある 12 冊の書籍 (パート 1) を、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人の参考になれば幸いです。