見出し画像

CTOが選ぶ、エンジニアのみなさんに個人的に読んでほしい本

メリークリスマス!heyでCTOをやっている藤村です。ということで、これからエンジニアになる・いまエンジニアをしているみなさんに個人的に読んでほしい本をご紹介します。これを読んでおけばソフトウェア・エンジニアとして網羅的な基礎が身につく、とかいうセレクトではなく、あくまで個人的に読んでもらえると嬉しいな!というものを選びました。

ソフトウェア開発基礎編

リー・コープランド『はじめて学ぶソフトウェアのテスト技法 』

テストの本です。昨今RSpec、XUnit系など自動テストのツールはすっかり普及し、ソフトウェアにテストコードをつけるのは当たり前の世の中になりました。しかし!テストケースをどう設計するか、何をテストすべきか、について体系的に学んだことがない、という方も実はいらっしゃるのでは。

この本はそういったソフトウェア・テスト一般についての教科書です。ここの知識はソフトウェア・エンジニアとして長く使える地力になります。類書はいくつかありますが、この本はコンパクトかつ網羅性が高く実践的であるという点で優れていると思います。テスト設計に自信がない方、あるけど体系的には学んだことがない方、その他すべてのソフトウェア・エンジニアにぜひ読んでほしい本です。読み物としても結構面白い。

ダニエル・ヒリス『思考する機械コンピュータ 』

そもそもコンピューター、計算機ってなんやねん、どういう原理で動いてるねん、を論理回路から丁寧にわかりやすく説明してくれる本。チューリングマシンなどの定番の話しから機械学習にまで話しは及びます。やや古い本ですが、こういった基礎はずっと変わらないので古くても大丈夫。非エンジニアの方にもおすすめです。科学読み物としても優秀。

ジョー・セルコ『プログラマのためのSQL 第4版 すべてを知り尽くしたいあなたに』

SQLの本。SQLに関するおおよそ全てのトピックが網羅されています。たぶんこの本を読めば他のSQLの本はいらないんじゃないでしょうか。長いですが、これも地力めちゃつく本です。網羅的な知識が脳内の引き出しに入ってると自信をもってコードを書けるようになります。テクニックもたくさん紹介されていて、すぐに役に立つ内容も多い。

井上直也『マスタリングTCP/IP 入門編(第6版)』

本格的にプログラミングをはじめた社会人3年目の頃に一生懸命読みました。教科書然とした体裁のわりに辛い読書ではなかった記憶があります。ネットワークはソフトウェア・エンジニアをやってると必ず関わることになる領域なので、早めにしっかりした本で原理や仕組みを理解しておくとよいです。

結城浩『暗号技術入門 第3版 秘密の国のアリス』

暗号もソフトウェア書いていると必ず関わるやつ。暗号もそうですが、基礎技術の本は現世利益がなさそうな気がして後回しになりがちですが、耐用年数がほぼ永久です。また、なにか問題が起きたときの問題解決の引き出しになります。ということで僕は実用的な本よりも基礎技術の積み上げを推奨しております。この本も知的に面白いので楽しく読めます。

仕事の基礎編

戸田山和久『新版 論文の教室 レポートから卒論まで』

我々エンジニア、に限らずあらゆる知識労働者は、さまざまな主張―組織はこうしたほうがいい、フロントエンドのビルドはこっちに変えたほうがいい、CMへの資本投下を増やしたほうがいい―の応酬で意思決定をし仕事を進めます。仕事の大きな部分を、何らかの主張を裏付けとともに文章化して(もしくは口頭で)行うわけです。こういうの、学生の頃にやってましたよね。そう、学術論文です。

この本は主に人文系をメインとした学術論文の作法をまとめた本です。著者は分析哲学というメチャクチャ明晰に議論する風習のあるジャンルの哲学者。文章術、論証の組み立て方も含んだ「知的主張の作法」を学ぶことは、実は直接に仕事で役に立つと思います。超オススメ。

伊勢田哲治『哲学思考トレーニング (ちくま新書) 』

分析哲学者による知的主張の作法シリーズ、その2です。日本における分析哲学の権威のひとりによる、哲学を通したクリティカル・シンキング入門(あるいはその逆)です。何を疑い、何を確かなものとして信じるか、価値についての答えの出ない問いにどうやってより確かな解を出すか、といった手法が、極めて洗練された濃縮度の高いやり方で展開されます。よりよく考えるために、これはぜひ読んで欲しい本。

ここからは余談。この本の思考スタイルが好きだな、と思ったらぜひ分析哲学の本を手にとってほしいです。最近の本だと『メタ倫理学入門』がわかりやすいのにちゃんと難しさがわかる名作でオススメです。厳密な議論で明らかになっていない前提を解きほぐしていく分析哲学の思考スタイルは知的筋トレとしても良いと思います。

沼上幹『組織デザイン (日経文庫)』

組織についての本はこれが間違いなし。弊社CEO、弊社人事、弊社EM、みんなこの本を決定版と言います。組織化の本質は分業であるというところから機能別組織と事業部制組織、マトリックス組織の良し悪しまで、およそ組織について語る上で必要なことが全部書いてあります。エッセンスがギッチギチに詰まった濃度の高い本なので、ゆっくり読みましょう。難しいと思ったら同じ著者の『組織戦略の考え方―企業経営の健全性のために (ちくま新書)』を読むといいかも。こっちは事例中心のコラム形式で読みやすいです。

岩本繁『経営分析の知識 (日経文庫) 』

エンジニアなら誰もが気になる生産性、みなさんは定義を知っていますか?答えは財務諸表分析にあったりします。この本は財務諸表から生産性とか収益性といった経営指標を読みとる手法を学べます。このジャンルは類書は山ほどあって、たぶんもっといい本はあると思うんですが、僕はこの本で学びました。定義だけでなく事例があるので読みやすい。

完全に趣味だけど価値があると思う本

Daniel P. Friedman, The Little Schemer, fourth edition

Schemeというプログラミング言語を対話形式でゼロから解説していって、計算可能性、不動点コンビネータといった計算理論の重要トピックを学ぶことができて、再帰でプログラムを書く基本スタイルが学べる名作。関数プログラミングの地力がつくという良さもさることながら、ゼロから不動点コンビネータまでたどり着けるってのが本としてかっこよすぎる。英語は平易なのでぜひ原著で。同シリーズの The Reasoned Schemer は同じくSchemeで論理プログラミング言語(言語内DSLで)を作るって本でこれもくっそ面白い。

野矢茂樹『論理学』

数理論理学はやっておくと良いんじゃないでしょうか。有名な入門書はいくつかありますが、この本は読みやすさに定評があります。

伊藤公一朗『データ分析の力 因果関係に迫る思考法 』

データ分析だけでなく、ファクトベース、実証分析、定量評価みたいなもののアカデミックな作法を因果分析からシュッと身につけられる本。基礎知識としてこの辺知っておくとなにかと役に立つと思います。あとシンプルに読書として面白いです。

最後に一番重要なやつ

GitHubにあるOSSのコード
そういえばプログラミングについての本がないですね!で、プログラミングってどうやって学んだっけな…?と思うと、僕は本ではなく実際のソフトウェアのソースコードを読んで学ぶことが多かったです。

実際に動いているコードを読むことで、よく使われる設計のパターン、そこには収まらないそれぞれ設計思想、テストの方針などたくさんのことが学べます。大物を読み解くのも楽しいですが、小さめのものをたくさん読んでスタイルの違いを見るのも学びが深い。

基本的にライブラリを書く人はその言語のエキスパートが多いので、読むのは結構難しかったりします。しかし、そこで諦めずに調べながらコードをたどっていくことで、言語自体への理解も深まります。

さいごに

ということで、これ読んでくれてると嬉しいなあ、という本をまとめました。長期的な有用性、生涯で出来る仕事のデカさへのインパクトなど考えると、耐用年数が長い基礎的な知識をじっくり急がば回ってつけていくのがいいと思ってます。

とは言いつつも、僕個人の読書のスタイルはもっと適当で面白いと思ったものを片っ端からつまみ食いするスタイルです。この辺の本の読み方・選び方はいつか記事にしてみたいな〜。

では、みなさん良いお年を。

いいなと思ったら応援しよう!