【保存版】「新人エンジニアに読んでほしい名著は何ですか?」ファストドクターのエンジニアたちに聞いてみた

新人エンジニアに読んでほしいおすすめの書籍
新人エンジニアに読んでほしいおすすめの書籍

入社して間もない新人エンジニアにとって大切なのは、「仕事との向き合い方」や「技術の基礎」を着実に身につけることです。若手のうちにそれらの要素を習得することで、各種のプロジェクトで適切に判断・行動し、良いシステムを設計・開発できるようになります。

先人たちのノウハウが詰まった「名著」を読むことは、スキルやマインドを磨くうえで効果的な手段です。そこでファストドクターでは、社内のエンジニア複数名に「新人エンジニアに読んでほしい名著は?」というテーマでアンケートを実施。なかには、複数の書籍を挙げてくれたメンバーもいました。

この記事では、そのアンケート結果をご紹介します。入社したばかりで「もっと成長したい」と感じている新人エンジニアの方、そして若手の育成を担当しているリーダーやマネージャーの方。どちらにとっても有益な書籍ばかりですので、ぜひご覧ください。

*…氏名の五十音順に掲載しています。

医師DA Squadのテックリード石田真也がおすすめ『カイゼン・ジャーニー』『チーム・ジャーニー』

アジャイル開発をしていく上での、開発プロセスを洗練させていくための物語形式で読み進められる本。「カイゼンジャーニー」は初級者向けかつ個人の活動・プロセスに関する話であり、「チームジャーニー」はさまざまなロールの人がいるチームをどううまく機能させていていくか、の話です。

社会人として働くための土台となるような考え方や開発プロセスについて、わかりやすく平易な日本語で記述されているので、新人の方が最初に読むにはピッタリです。課題だらけの職場環境からスタートする、という物語形式の本なので、そこも読みやすさを助けてくれます。

前職の時、私もチームジャーニーを読んでそのアウトプット施策をチーム内で実践したら(チームビルディングの文脈で)、大きく評価されたので、書かれている内容も芯をついてるものと思われます。

医師DA Squadのテックリード石田真也がおすすめ『現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法』

DDDの基礎となる、ドメインを意識した開発の知識が詰まっています。Javaでの実装例も随所に記載されており、具体的なイメージを膨らましながら、DDDを学ぶことができます。

Web開発は基本的にオブジェクト指向をベースに開発しますが、オブジェクト指向ではどの単位でファイルやクラスを管理していくか、ということが基礎知識として非常に大事です。運用・保守を考慮した実装を行えることが、プロダクトの成功に直結します。

この本を読んだことにより、どのロジックをどこに置くべきかの細かい意思決定に役立ちました!

インターン上野壮平がおすすめ『マスタリングTCP/IP―入門編―』

TCP/IPシリーズの入門編。どんどん進化するコンピュータですが、ネットワークに接続しなければ最大限の力は発揮できません。システムにおけるネットワークの重要性は高いのです。

本書ではネットワークに関連する技術の基礎の基礎である、現在のネットワークで最も用いられているプロトコルのTCP/IPやOSI参照モデルについて詳しく説明されています。普段何気なく使っているブラウザとサーバーがインターネットを通してどんなことをしているのか、それはどのような技術で成り立っているのか、ネットワークの基礎を学ぶならこれ一択でしょう。

ネットワークに関連する業務に就くなら、もちろん必修の内容です。そうでないとしても、今の時代はさまざまなアプリケーションがインターネット経由で提供されているので、エンジニアが「ネットワークを学ばなくていい」ということはないはずです! かなりのボリュームがありますので、少しずつ読んでみてください。同期のメンバーたちと勉強会で読み合わせなどをするのもおすすめです。

自分自身の実体験として、AWSやGCP、Azure、Herokuなどで自分の作ったアプリケーションが動くかをテストしたいとき、この本で学んだことがあるかないかによって、得られる成果に天と地ほどの差があると感じました。

PlatformSquad TechLead荻野秀晃がおすすめ『アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技』

概要をまえがきより抜粋します。

アジャイル開発は、めまぐるしく変化する仕様要求にさらされながらも、迅速にソフトウェアを開発する能力を与えてくれる。こうしたアジャイル性(俊敏性)を達成するためには、規律とフィードバックを与えてくれるプラクティス(実践法)が必要だ。また、柔軟性と保守性を兼ね備えた設計を実現するための基本原則や、そうした原則をバランスよく利用するためのデザインパターンを理解している必要がある。本書は、この3 つのコンセプト(原則・デザインパターン・プラクティス)をすべて縫い合わせ、1 つにまとめようという試みである。

本書では、原則、デザインパターン、プラクティスを示し、それらが実際にどのように利用されるのかをたくさんのケーススタディを通して説明する。もっと重要なことは、これらのケーススタディの解答を天下り的に示さず、むしろ設計過程を進行形で示したことである。したがって、あなたは設計者がミスを犯す様子を目撃することになる。設計者がそのミスをどのように特定し、また実際にどのように修正するのかを観察して欲しい。そこでは、設計者がどのように難問に挑み、仕様書の曖昧さや現実とのトレードオフとどのように格闘するのかを見ることになるだろう。つまり、設計という行為そのものを見ることになるのだ。

15年くらい前に開発を始めた頃、ハードウェアとソフトウェアの開発を行っていた際に、開発したコードが可読性などの品質が悪くて困っていたときに助けてもらった書籍です。開発のノウハウやデザインパターンなどをコードベースで解説しているので、新人の方が困りそうなポイントをはじめに学ぶ書籍としては、ありだと思っています。

当時一緒に読んでいた『Clean Code アジャイルソフトウェア達人の技』と合わせて、自分自身のスキルアップに貢献してくれた書籍です。ノウハウ自体は、今もある程度使えるものだと思います。ただ、現代のソフトウェア開発が「フレームワークを使うことが当たり前になった」という事情を考えると、全員が読むという書籍ではないと思います。

ソフトウェアエンジニア大畠健がおすすめ『UNIXという考え方―その設計思想と哲学』

UNIXというオペレーティングシステムが、どういう設計思想により作られているかということと、その思想がどのように優れていて、そこから何を学ぶべきか、ということが説明されています。 たとえば標準出力などは「大学のC言語の課題でしか意識しないよ〜」と思ってしまいがちですが、実はシェルをパイプでつないでいくとかなり高度なことができます。このことが「ひとつのことをうまくやる」というUNIXの思想に通じていきます。

この本を読むことで、コンピューター(のある面)についてある程度の大局観が得られます。 UNIX(とかLinux)は、技術として古臭く感じられて、なかなか学ぶモチベーションが上がらない方もいるかもしれません。けれど、そうした技術が淘汰されずに生き残った理由があるのだと思うと、業務でちょっとしたシェルスクリプトを書くときでさえ、ワクワクできるようになれると思います。

WebエンジニアがIOを直接扱うことはあまりないですが、しかしたまに必要になることは確実です。そんなときにいちいち検索して学び直すのではなく、ある程度の基礎知識を持ったうえで技術と向き合い、知識を吸収していけるようになります。

Core UX Squadのテックリード片渕真太郎がおすすめ『岩田さん 岩田聡はこんなことを話していた。』

以下は、Amazonにある書籍紹介からの引用です。

任天堂の元社長、岩田聡さんの言葉をまとめた本です。

天才プログラマーとして多くの名作ゲームを生み出し、任天堂の社長としてニンテンドーDSやWiiなど革新的なゲーム機をプロデュースした岩田聡さんの、クリエイティブに対する思いや経営理念、価値観、ポリシー、哲学などが凝縮された本です。

こちらのリンクから一部無料で読む事ができます。https://www.1101.com/books/iwatasan/free/

この本を読んでもソフトウェアエンジニアリングを学ぶことはできませんが、偉大なプログラマーであり同時に偉大な経営者であった岩田さんの哲学と情熱に触れることができます。

クリエイターとしての矜持や人から慕われるリーダーシップの在り方、ボトルネックを改善する意識など、エンジニアリングに限定されない視野の広さを提示してくれる書籍であり、私も定期的に読み返しています。珠玉の名言が詰まっていますので、ぜひご一読を。

初めてエンジニアリングマネージャーになるとき、エンジニアとしてのキャリアが終わってしまうのではないかという不安がありましたが、本書の「好きか嫌いかではなく『自分でやるのがいちばん合理的だ』と思えば覚悟がすぐに決まります」という言葉に背中を押されました。

VP of Product西岡悠平がおすすめ『Genius Makers』

ここ十年のAI開発の裏側が、ヒントン教授からDeepMind・OpenAIに至るまで、生々しく書かれています。2012年ぐらいから急速に発展したAIが実際にはどんなことが起きていたのか、すごく理解できます。2020年ぐらいまでの話しかカバーできていませんが、今世間を騒がしている ChatGPT が生まれた背景などもすごく分かります。

新人の方にこの本を読んで欲しい理由は2つあります

(1) 英語の本に慣れて欲しい エンジニアにとって英語は必須です。なので、早いうちから慣れていくことをおすすめします。ただ、この本に書かれているようにAIがさらに発展すると、翻訳はさらに賢くなり、英語の重要性の価値は下がります。日本語版もあるようなので https://amzn.asia/d/ezwvTnx そちらでも良いかも w

(2) AI is eating Software 「Software is eating the World」から「AI is eating Software」になりつつある世の中で、すべてのエンジニアはAIを理解しないといけません。AI を理解する技術書は色々とあるので、そちらを勉強すれば良いです。それとは別に、実際にどういう流れで発展したかの歴史を勉強すると、今後の流れもある程度、予測しやすくなります。あなたのキャリアを考えるのに有効だと思います。

この本に限らず、その技術の背景とか歴史を理解すると、本質的なところまで見えてきます。

テクニカルプロダクトマネージャー星雄介がおすすめ『詳解 Linuxカーネル 第3版』

LINUXのシステムカーネルについての基礎的なソースコード解説が載っている本。プロセス管理やメモリ管理、ファイルシステムなどについて関数単位の説明が記載されています。かなり古い内容ですが、逆にOSの基本的な知識を学ぶには良いと思います。人生で一度読めば良くて、覚えていなくてもなんとなくOSの仕組みが頭に入っていると勘が良くなると思います。

「新人」というのを「プログラミングでお金を貰い始めたばかりの人」と捉えて、この本を選びました。最近は画面をポチポチすると簡単にそれっぽくインフラを構築できてしまうので、低レイヤー領域のコンピューターの動作などについて基礎的な体力がない職業プログラマーの方が増えてきているように感じます。

決して内容を暗記する必要はないし、一人で読むのは辛いので輪読会に参加するなどでも良いし、この本でなくてもいいので、人生で一度くらい低レイヤー領域の詳説本に触れてみる機会があっても良いように思います。(実装機会があるといいと思いますが、今日では組込み系でも現場を選ぶようには思います)

この本を読むことで、メモリー周りでトラブルが発生している場合などにログを追いかける力や、パフォーマンスダンプから想像できる問題の範囲についての想像力が向上します。ファイルシステムやプロセス管理などに置いても同じ効果があると思います。私はエンジニアを退いて6年ほどになりますが、最近になってもヒープを食い尽くしてしまうようなアプリケーションのトラブルなどで、議論を、現役の方と一緒にできる地力になっています。

医師DA SquadのPM / toB Squadの開発リーダー三田将司がおすすめ『チャートで考えればうまくいく 一生役立つ「構造化思考」養成講座』

「複雑な要件をどうやってシンプルにして設計に落とし込めばいいんだろう」 「なぜあんなにあの人は整理する力に長けているんだろう」

そんな悩みや疑問を抱えているエンジニアの方には必見の、論理を構造化する「フレームワーク」を学べる本です。

設計をする上で、複雑な仕様を構造化してシンプルに捉えて実装する力はとても宝になると思います。その思考習慣が身に付く本として適切です。この本で学んだことは、複雑な分岐を伴う実装を抜け漏れなく、可読性よく実装したいときに役立っていると感じます

医師DA SquadのPM / toB Squadの開発リーダー三田将司がおすすめ『質問力』

チャットツールや対面で要件確認をする際に、認識合わせに時間がかかったり齟齬が発生したりする。または、実装中のコードについて誰かに相談する際に、相手から一発で良い回答を引き出せない。そんなときに役立つ、「世界一受けたい授業」でも有名な齋藤孝さんによる「質問力」を高められる本です。

要件や仕様が不明なまま実装してしまう。質問しようにも、いそがしい相手から的確な回答を得るためのコミュニケーションで戸惑ってしまう。そんな方に、おすすめしたい本です。クライアントワークの基礎となるコミュニケーションを、自信を持って改善できるようになると思います。

私自身、この本で学んだ考えを下地に質問をしたところ、忙しい上司や他部門の依頼者の時間を奪わずに、良質な回答を得ることができました。

医師DA SquadのPM / toB Squadの開発リーダー三田将司がおすすめ『1行思考 目的をたった30文字書くだけですべての問題は解決する!』

「ユーザーやクライアントへの価値創造に対して、ピントの合った開発・提案をしていきたい」 「どんな開発やエラー対応なども、どうせやるなら主体的に行えると良いなぁ」 そう思われている方におすすめの、目的設定のトレーニングができる本です。

依頼された要件や仕様を取り違えてしまい、要件にそぐわない設計や実装をしてしまうといったことは、業務理解が進んでいない時期にはありがちなことだと思います。「なぜやるのか?」という目線を依頼者と合わせることで、設計の精度も、開発したときの喜びも変わってきます。相手と目線合わせしてチーム開発をしたい人におすすめです!

CTO宮田芳郎がおすすめ『達人プログラマー』

プログラマーの仕事の「考え方」について、多くの知見を得られる書籍です。

新人エンジニアの方々は、開発項目をこなすためにコードの書き方やデバッグの仕方、テストの書き方を学んでいると思います。仕事をさらに上に高めていくためには、難しいものを設計出来る、複雑なものを設計出来るなどの力が必要です。そんなときに、本書で得られる「考え方」の知識が役に立ちます。開発メンバーとしてワークしてきたくらいのフェーズで読むと、リードエンジニアへと成長していくための足がかりが得られると思います。

自分自身は本書を読んだことで、プロトタイプをうまく使えるようになりました。要するに、プロトタイプを書く前に「何のためにプロトタイピングをするのか」「書いたコードはマージしていくのか、使い捨てなのか」などを適切に選べるようになりました。

CTO宮田芳郎がおすすめ『リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック』

特定の言語に縛られない「コーディングの原則」を学べる大定番の書籍です。これまで新人の教育では何度も勉強会に使ってきました。学生インターンや新人の方々に基礎知識を身につけてもらううえで、とても良い本だと思います。

プロとしてコードを書くのに必要な最低限の知識がコンパクトにまとまっています。プロとしてのコードは、自分や他人に読まれるものです。個人として書くコードとプロとして書くコードは、ここが一番の違いです。本書を読むことで、変数名やメソッド名の付け方、メソッド分割の粒度などについて、基礎的なルールや背景にある考え方を学ぶ事ができます。

おわりに

選書から、そのメンバーの価値観やキャリアが見えてくるような、興味深いアンケート結果になっていました。読者のみなさんも紹介された本をぜひ読んでいただき、業務に役立ててください。