参考書籍 必読書

IT業界は技術進歩がとても早く、それを解説する技術書もまたあっという間に陳腐化していきます。

ここで列挙した著作群はそうした陳腐化とは無縁の、今読み返しても素晴らしい必読の名著を集めました。

こうしたランキングでは常に取り上げられるものばかりです。

C#言語を学ぶ方やオブジェクト指向系言語を学んでいる方、職業技術者が今でも読むに値するものばかりです。

技術的な内容に限らず、組織論や人生論まで及ぶ先達の教えは我々のモチベーションにもなりますよ。

年代順に新しいものから並べました。

エンジニアの必読書

達人プログラマー(第2版): 熟達に向けたあなたの旅 2020/11/21

初版の原書は1999年に発売され、世界各国で読み継がれてきました。
。2019年9月に待望の第二版が出版され、翌年日本語版がリリースされました。
特定の言語やフレームワーク等とは関係なく、ソフトウエア開発の本質とそれに携わるエンジニアの責任とをなぜそうするのかという視点で考えさせられます。
本棚の一番前に置いて、何度も読み直すべき名著中の名著です。

リファクタリング(第2版): 既存のコードを安全に改善する 2019/12/1

原書の初版発売が1999年で、その日本語訳が2000年に発売。
新装版が2014年に発売され、待望の第二版が2019年末にリリースされました。
著者のマーチン・ファウラーは業界では知らないとモグリと思われるぐらいの有名人です。
名著ながら難解なものが多い彼の著作のなかでは比較的読みやすいです。
リファクタリングという言葉自体が既に一般名詞化しているぐらい重要なもの。
オブジェクト指向系言語をやってるならぜひ読んでおきたい。

エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング 2018/2/22

著者の広木さんは元ミクシィのアーキテクトだそうです。どこの現場にもある不協和音を「不確実性」と定義し、その正体を解明し解消の方法論を具体的に論じていく組織論の実践書。
どのプロジェクトでも付きまとういつものモヤモヤとした問題を顕在化させてくれるちょっと面白い本です。

小さなチーム、大きな仕事――働き方の新スタンダード

プログラミングというより仕事観についての指南書。
組織が大きければよいというのは幻想であり、現代はそうしたスケーラビリティに引きずられることなくビジネスを始める環境が既に整っていると説く。
今でこそ浸透してきた考え方ですが、2016年当時から既にそういう考え方が普及してきていたのですね。納得できる点が非常に多い。

SOFT SKILLS ソフトウェア開発者の人生マニュアル 2016/5/20

開発者向けに「よりよき人生」をおくるためのノウハウを伝授する自己啓発本的内容。エンジニアは会社に帰属する以外の方法が大きい業種でもあります。
将来的にフリーランスを目指す方には特におすすめですが、そうではなくてもエンジニアとしての技術をどう学習し続けるか、キャリアをどう築くか、財産をどう築くかといった人生にかかわるより良き具体策が示されます。

プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則 2016/3/23

このページに列挙されるようなものを含め、プログラミングに関する良書のエッセンスを体系的に説明されています。三年目までに身に付けたいですが、現場での複数人による業務アプリ開発経験がないと初学者が読んでもとっつきにくいかもしれません。逆に、職業プログラマーとして3年目に至るぐらいには目を通しておくと刮目さらるでしょう。

誰のためのデザイン? 増補・改訂版 2015/4/23

原著は2013年発売の「The Design of Everyday Things:Revised and Expanded Edition」であり、この初版本は2002年に刊行されています。その元となる「The Psychology of Everyday Things」が1990年リリース。
デザイン系のランキングでは常にトップにランキングされている名著であり、最近読んだ本では断トツに面白かった。デザインの本の割には活字ばかりで分厚い本ですが、面白くて直ぐに読み切れました。UIとはあまりかかわりのないエンジニアやプログラマでも読む価値がありますよ。

実践ドメイン駆動設計 2015/3/16

比較的規模の大きな開発案件で基本設計や開発標準系に携われるぐらいだと読んでおきたい内容です。
ちょっと読みずらいところはありますが、エヴァンスのドメイン駆動と合わせてほしいところ。
サンプルコードはJavaですがC#が読めれば問題ないでしょう。

人月の神話【新装版】 2014/4/22

原書の発売が、初版は1975年、改訂版が1995年です。古いですね。
当時の問題が今でもそっくりそのまま通用する訳ではないですが、基本的にはなんら変わってないことに驚かされます。
とはいえ、流石に古すぎで読みずらくはあるのですが、本書を超える本がないのもまた事実だったりします。
Wikipediaによくまとまっていますので、そちらを読んで関心もたれたのなら本書を読んでみましょう。

ピープルウエア 第3版

原書の初版本が1987年の「Peopleware: Productive Projects and Teams」であり、本書は2013年に発売された第三版の翻訳になります。内容は全く古くないです。
著者のトム・デマルコ氏は、生産管理やプロジェクト管理などに関するコンサルタント業をされています。本書もそうしたプロジェクト管理系の話ですがマネージャー層だけではなくリーダー層は勿論のことメンバーにも読んでもらいたい内容です。本書以外にも面白い本を書かれていますので、気に入ったら検索してみて下さい。

Team Geek ―Googleのギークたちはいかにしてチームを作るのか 2013/7/20

著者のBrian W. FitzpatrickはSubversionの開発者でありその後はGoogleに移籍されたエンジニアです。
通常の業務は個人ではなく複数人で行うものであり、各々が優れたコードを書いても良い製品にはならない。
そのカギはチームにあり。技術者の集団とはいえそこには人間関係がチームプレイの重要な要因となる。
チームの作り方・チーム文化の作り方・有害な人への対処法など、軽妙な語り口で読みやすい本ですが大変参考になります。
特にいくつかのプロジェクトを経験しリーダの職責を担うような方にお勧めです。

コーディングを支える技術――成り立ちから学ぶプログラミング作法 2013/4/24

プログラミング言語の成り立ちやその背景を解説するちょっと変わったプログラミング言語入門。
職業エンジニアはその案件や要件によりいくつもの言語を扱う必要があるが、このような言語の成立に関する裏事情が理解できていると新しい言語の習得コストもまた違ってくる。
文法の裏にあるなぜに正面から答える名著。

SQLアンチパターン 2013/1/26

通常の解説本が参考にすべき設計ノウハウの類型であるのに対し、本書ではやっちゃいけないものをアンチパターンとして類型化し纏めてます。
ダメなデータベースとはどういうものか、また、なぜそれがダメなのかを実例で紹介。
SQLを覚えたらすぐに学んでほしい内容。
ほとんどのシステムは大量のデータを扱うためのものですし、未だ主流はRDBMSですし、今後もその傾向は続くであろうから、一読の価値あります。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック 2012/6/23

このようなエンジニアやプログラマー向けの書籍ランキングで未だにいつも1位。
著者のDustin Boswell氏はこの本しか出版してないんですね。改訂版が望まれますが出ないんでしょうか。
他人の書いたコードが読みずらいと同じ理由で自分が書いたコードもまた他人にとっては読みずらいもの。
通常の開発は複数人で行うので、メンテナンス工程まで勘案すれば他人の書いたコードを修正したり、自分の書いたコードを他人に修正してもらうことは珍しくない。
読みやすいコードはそれだけで保守工数を削減しバグ自体の混入も減らす効果がある。
では、その読みやすいコードとは何か。スグに使える具体的な項目が揃っているのが本書。
可読性が高いコードの本質が見えてくる。我流のコードに疑問のある方やチームで開発を行っている方は必読。
一位なのも納得。

アジャイルサムライ――達人開発者への道 2011/7/16

アジャイル開発が普及してだいぶ経ちます。そうしたアジャイル開発を自称し採用しているプロジェクトのうち、本当にアジャイルを理解し実践しているものが果たしてどのくらいあるでしょうか。アジャイル開発に関する書籍はいくつもありますが、その基本的な考え方から実践的手法までを効率よくマトモな翻訳で読める貴重な名著です。
著者のJonathan Rasmusson氏は他にも面白い本を出されていますが、邦訳があるのは本書の他に「初めての自動テスト」があります。

エリック・エヴァンスのドメイン駆動設計 2011/4/9

ドメイン駆動とは何かについて学べるものだが、これを理解するにはオブジェクト指向系言語での開発経験やデザインパターンの基礎知識、UMLに関する基本的知識などが必要であり、エンタープライズ開発の基盤系を担当するぐらいの経験がないと、ちょっと難しいかも。読んでみて難解と感じるなら一度寝かせて、いくつか案件を経験した後に再度挑戦してほしい。

Webを支える技術 -HTTP、URI、HTML、そしてREST 2010/4/8

Web系の技術革新はスピードが速くて折角覚えた知識はあっという間に陳腐化するというのに、その根幹の技術は全く何も変わってないということに逆に驚かされる。歴史的意味や設計思想も面白い。今でも通用する基本知識を学ぶのに最適の一冊。

情熱プログラマー ソフトウェア開発者の幸せな生き方 2010/2/26

エンジニアやプログラマーがコンピュータ技術だけを追っていても幸せにはなれない。どうすれば良き技術者となれるかを多方面から説いた名著です。著者のチャド・ファウラー氏はミュージシャンから技術者に転向し名だたるトップ企業で最優秀の評価を得たエンジニアです。技術的な話というよりビジネス書や自己啓発系に近い感じ。面白いです。

レガシーコード改善ガイド 2009/7/14

本書にいうレガシーコードとは、構造が難解で可読性に乏しく、テストコードもないのでリファクタすらやりずらいコードのことを言う。こうした残念なコードをどうやって改善していくか。具体的なコードを用いてわかりやすく解説されています。サンプルコードはJavaとC++が用いられていますが、内容はオブジェクト指向系言語一般に共通するものなのでC#プログラマでも充分に参考になります。

アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技 2008/7/1

表題のアジャイルはちょっとミスリードかも。内容はオブジェクト指向系の開発に関するもの。勿論、アジャイル開発についての説明だが、それを達成するための基本原則・デザインパターン・実践方法が詳説される。非常に読みやすいです。サンプルコードはJavaです。

CODE COMPLETE 第2版 完全なプログラミングを目指して 2005/3/26

実装方法について徹底的に考察を重ね全範囲を網羅した名著でり必読書である。上級者にはお馴染みであろが、独学または我流のコードを書いてきた脱初学者にはリーダブルコードと合わせて読んでもらいたい。とはいえ原書が2004年発売というこもあり、流石に古さは感じる。第三版が待ち望まれます。

ハッカーと画家 コンピュータ時代の創造者たち 2005/1/1

ハッカーとは優秀な技術者のことであり、一般的に彼らは付き合いずらい類である。IT技術の多くはそうしたハッカーにより切り開かれてきた。著者自身はLISPの天才プログラマでありベンチャー創業者でもある。IT技術が無視できない慈愛において彼らを理解し彼らのように時代の革新を担うとはどういうことなのかを様々な切り口で解いていく。絶賛される一方で異論反論が多い著作でもある。今読んでも充分に面白い。あなたは賛否どちら?

UNIXという考え方―その設計思想と哲学 2001/2/1

LinuxもMacもWindows(MSDOS)も系譜をたどればUNIX。このUNIXは今でもサーバーシェアで2位につける現役のOSである。この驚異的に長命なシステムの設計思想とは何か。直接プログラミングに関係する内容ではないかもしれないが、賢明なシステムの設計思想というものがどういうものなのかを実例として学べる。

スポンサーリンク
C#プログラミング再入門