入社3〜10年目くらいのエンジニアが読むといい本

これまでいろいろとIT関連本を読んできたのですが、そろそろ題記の観点でまとめというか整理したいと思います。

エンジニアがタイトル買い、著者買いすべき本 - Fight the Futureとかぶっているものもありますが、まあ参考になれば。

僕もそうなのですが学生時代にプログラミングをあまりやったことがなくても入社3〜10年目くらいになれば役職はともかく役割としてはサブリーダ、リーダ、PMになっていることがおおいものです。

そういった人たちが読むといいんじゃないかとおもわれる本を挙げてみます。特定の言語に関するものやネットワーク、DBといったインフラ関連は除いています。

エッセイ、読み物系

Joel on Software

Joel on Software

More Joel on Software

More Joel on Software

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

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

闘うプログラマー[新装版]

闘うプログラマー[新装版]

レボリューション・イン・ザ・バレー ―開発者が語るMacintosh誕生の舞台裏

レボリューション・イン・ザ・バレー ―開発者が語るMacintosh誕生の舞台裏

Joelはやはり外せない。とくに「More Joel on Software」はすばらしい。
『はじめてのBillGレビューのこと』を読んでプログラムマネージャになりたいと思った人は多いだろう。僕もそうだ。
Javaスクールの危険』もいい。このなかで「ハッカーと画家」の『普通のやつらの上を行け』が紹介されている。
監訳者あとがきにあるようにこれを読んでLisp処理系を起動してみたプログラマは多いだろう。僕もそうだ。
「闘うプログラマー」はとにかく熱い本だ。モチベーションが上がる。「レボリューション・イン・ザ・バレー」もいい。ジョブズの現実歪曲空間に巻き込まれたら大変だろうけど(笑)。

開発系

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 下 完全なプログラミングを目指して

CODE COMPLETE 第2版 下 完全なプログラミングを目指して

アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング (THEORY/IN/PRACTICE)

アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング (THEORY/IN/PRACTICE)

レガシーコード改善ガイド (Object Oriented SELECTION)

レガシーコード改善ガイド (Object Oriented SELECTION)

「Code Complete」は長いし正直にいって途中退屈な箇所もある。それでも開発に関わるなら読むべきだろう。

Martin Fowlerも薦めている。

もっと具体的なアドバイスをすると ――プログラミング スタイルに関する良書を読むといいだろう。まず『Code Complete』は読んどくべきだ。

http://capsctrl.que.jp/kdmsnr/wiki/bliki/?CodeAsDocumentation

「アート・オブ・アジャイル デベロップメント 」はアジャイル開発について述べられた良書。これも読むといい。もっとさらっと読みたいならアジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣がいいだろう。達人プログラマー―システム開発の職人から名匠への道もいいがこの本のほうが現代的な気がする。

「レガシーコード改善ガイド」はレガシーコードに対してどう取り組むかが書かれている。技術書というのはたいてい賞味期限が短いものだが、今後レガシーコードに取り組むことはますます増えるだろうことを考えると、この本の賞味期限はかなり長くなるだろう。
ただこの本を読むためにはリファクタリングデザインパターンの知識が必要になってくる。言語はJavaに特化してしまうが、リファクタリングといえばリファクタリング―プログラムの体質改善テクニック (Object Technology Series)だろう。新しいものが良ければJava言語で学ぶリファクタリング入門になるだろう。

デザインパターン増補改訂版Java言語で学ぶデザインパターン入門でいいだろう。がんばって原典であるオブジェクト指向における再利用のためのデザインパターンに挑戦してもいいが。
蛇足だが、増補改訂版Java言語で学ぶデザインパターン入門の姉妹本ともいうべき増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編Javaのスレッドを学ぶのに本当にいい本だと思う。Swingのイベントディスパッチスレッドにも触れられているし。この本が理解できたら入手困難だがJava並行処理プログラミング ―その「基盤」と「最新API」を究める―に挑戦だろう。良いプログラマを目指すなら「Java並行処理プログラミング」は今すぐ読むべき - higepon blogでも薦められている。

アーキテクチャ

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)

難しいけど読む価値はあると思う。ドメインモデルとトランザクションスクリプトの違いの説明はわかりやすい。

ただ若干残念なのはXPエクストリーム・プログラミング入門―変化を受け入れるもそうなんだが、僕はこの本の訳者とあまり相性が良くない気がする。なんかスムーズに文章が頭に入ってこない。

プロジェクトマネジメント系

アート・オブ・プロジェクトマネジメント ―マイクロソフトで培われた実践手法 (THEORY/IN/PRACTICE)

アート・オブ・プロジェクトマネジメント ―マイクロソフトで培われた実践手法 (THEORY/IN/PRACTICE)

Joelも薦めていた本。Manage It! 現場開発者のための達人式プロジェクトマネジメントと違って具体的なTipsがあるわけじゃない。それよりも人間系の問題にどう取り組むかということに重点が置かれている。まあそれが一番大事ですよね。よくも悪くもコンピュータから離れるほど単価が高くなるという現実もあるし。

見積もり、計画系

ソフトウェア見積り

ソフトウェア見積り

アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~

アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~

この2冊で決まり! 異論は、、、たぶん無いでしょw

運用、保守

Release It! 本番用ソフトウェア製品の設計とデプロイのために

Release It! 本番用ソフトウェア製品の設計とデプロイのために

一言で言うと味がある。これを読むと不特定多数を相手にした商用サイトの構築がいかにタフなのかがわかる。