いわゆるエンタープライズ向けソフトウェア開発技術者向けにお勧めする本をまとめてみた、というか10年くらい前に書いた記事を見直したもの。後輩から「後輩に勧めたい本を教えてください」という相談を受けることがあって(白目)記事が古くなっていたことに気づいたのだった。10年前の記事と同様にSIer勤務でお固めのドメインの受託開発に従事しているエンジニア向けになっていると思う。なお学生、新人、初心者向けにはなっていないのであしからず。
10年以上前に書いた記事はこちら
agnozingdays.hatenablog.com
ソフトウェア開発ライフサイクル全般
IPA 応用情報処理技術者試験
いきなり資格試験のテキストを紹介するのは心苦しいのだけれども、以下の理由で応用情報処理技術者試験をまずは推しておく。
- ネットでは珍妙な設問などでバカにされることも多いが、それだけ利用している人も多いということでもある。まだある、ということに意味はあるだろう
- 事実として、「情報処理の促進に関する法律」に基づき経済産業省が、情報処理技術者としての「知識・技能」が一定以上の水準であることを認定している国家試験であり、要は税金によって投資されているカリキュラムである。アップデートされており、トータルバランスにも優れている
- 「資格を取っても仕事ができるようになるわけじゃない」という指摘がよくあるしその通りではあるのだが、一方である分野の知識がモロ抜けしている(または誤った理解である)ということもあるので、ベースの知識習得として学んでおいてほしいところである
- ちなみに資格を取れる程度の知識が習得されていれば、資格を取るかどうかは別にどうでもいい(とはいえ合格しておくのが良いとは思うけど)
プロジェクト管理
デッドライン
プロジェクト管理の基礎的なことを学習するなら、情報処理技術者試験のPMや、PMIのPMPをやれば良いと思っている(私の評価はPM>>PMP)。ここで紹介するのは、もう少し深くプロジェクト管理について考えるための本である。
この本はまず小説形式になっているので大変に読みやすく、あまり仕事で読書をする経験が無い人にもお勧め。物語のなかで、様々なプロジェクトマネジメントの鉄則が出てくる。例えば有名なのはこれ。正しい管理の四つの本質
- 適切な人材を雇用する
- その人材を適所にあてはめる
- 人びとの士気を保つ
- チームの結束を強め、維持する
(それ以外のことは全部管理ごっこ)
人月の神話
こちらは古典中の古典なのだけれども、ソフトウェア開発に従事するなら一度は読んでおきたい。ソフトウェア開発について書かれた本、本ブログでもたびたび登場する有名な「銀の弾丸」の概念の原典でもある。どんな本なのかはWikipediaにとても詳しく書かれているので参考までにチェックしてみると良いと思う。
アート・オブ・プロジェクトマネジメント
プロジェクト管理の最後は鉄板の名著としてこれを上げておく。本書にはプロジェクト管理の技芸に関する本だ。プロジェクトマネージャが考えるべきことについて書かれている。けっこう厚いけれど、文章もかなり面白いので楽しめると思う。
このあたりも参考に巨大で危険な物体を操縦するときには、操縦桿をしっかりと握っているだけでは不十分です。あなたが操縦しようとしているものが巨大であり、多くの人が関与しているのであれば、より大きな慣性が働くのです。プロジェクトマネジメントにおいても同様ですが、巨大な機械(自動車、飛行機、航空母艦等)を操縦する場合、初心者は進路変更操作をしてから、実際に変更し始めるまでの時間を過小評価しがちです。
見積もり
ソフトウェア見積り ~人月の暗黙知を解き明かす~
ソフトウェア開発見積もりの古典的名著であるが、古びてはいない。タイトルに「人月」という文字が入っているのでアレルギーの出る人もいるかもしれないが、極めて合理的にソフトウェア開発作業を見積る方法について論じられており、今でも参考になることは多い。経験と雰囲気で見積もっている人は必ず読んでほしい本。
設計
システム設計の謎を解く
業務システムの設計に関するバランスのとれた本。というか割とこの分野のチョイスが難しい。コードを中心とした本や、オブジェクト指向設計のパターン本ならいろいろあるけれども、割と汎用的な設計に関して書かれた本というのは思い当たらない。
筆者は「設計とは"考えること"であり、アウトプットはその一側面である」と考えているからです。設計は単純に右から左に書き写せばよいものでもありませんし、機械的にできるものでもありません。設計には他にも重要な要素がありますうが、最も重要なのは「考えること」です。
(はじめに、より)
- 初版については本ブログでも過去に取り上げている
コミニュケーション
Team Geek
最後にコミュニケーションに関する本について取り上げてみる。ソフトウェア開発におけるコミュニケーションに関する本である。本書のかわりに「人を動かす」を読んでもいいのかもしれないけど、この本ではソフトウェア開発独特のコミュニケーションの仕方についていろいろと示唆を与えてくれる。
本書は、ソフトウェア開発の社会的危機について扱ったものだ。したがって、君が確実にコントロールできる変数を取り上げたい。君自身だ。
本書の基本的な考えは単純である。ソフトウェア開発はチームスポーツであり、技術的要因と同じだけ人的要因が影響するというものだ。何十年もかけてプログラミングの技術面を学んだとしても、人間的要因を学んでいない人がほとんどだ。成功するにはコラボレーションについて学ぶことも必要である。ソフトウェアエンジニアリングの「ソフトスキル」に投資すれば、同じだけの努力でより大きな効果が得られるだろう。
以前に書いた感想はこちら
むすび
というわけで、以上で10冊である。絶版本や、名著であっても現代ではお勧めしにくい本などは除去して新しい本に差し替えてみた。心構えや思考法に関する本も世の中ではたくさんお勧めされているようだが、これも含めていない(流行っているものを読めば良いと思う。これだけ読んでおけばいいというものはないと思う)。もう少し技術に振った本(アーキテクチャや、コードや、設計方法論や、モデリングや、DB関連や、低レイヤ技術など)もお勧めしたいが、これも結局は必要になりそうなものを自分で探して読めば良いと思うのだ。アジャイルに関しては書籍よりは体験できる研修で学ぶことをおすすめする。
なお、いくつかのジャンルについては別の切り口でおすすめをまとめたページがあるので、興味があればご参照いただきたい。
agnozingdays.hatenablog.com
agnozingdays.hatenablog.com