
【保存版】「新人エンジニアに読んでほしい名著は何ですか?」ファストドクターのエンジニアたちに聞いてみた
※この記事は2023年7月21日に執筆した記事です。
入社して間もない新人エンジニアにとって大切なのは、「仕事との向き合い方」や「技術の基礎」を着実に身につけることです。若手のうちにそれらの要素を習得することで、各種のプロジェクトで適切に判断・行動し、良いシステムを設計・開発できるようになります。
先人たちのノウハウが詰まった「名著」を読むことは、スキルやマインドを磨くうえで効果的な手段です。そこでファストドクターでは、社内のエンジニア複数名に「新人エンジニアに読んでほしい名著は?」というテーマでアンケートを実施。なかには、複数の書籍を挙げてくれたメンバーもいました。
この記事では、そのアンケート結果をご紹介します。入社したばかりで「もっと成長したい」と感じている新人エンジニアの方、そして若手の育成を担当しているリーダーやマネージャーの方。どちらにとっても有益な書籍ばかりですので、ぜひご覧ください。
*…氏名の五十音順に掲載しています。
PlatformSquad TechLead荻野秀晃がおすすめ『アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技』
概要をまえがきより抜粋します。
アジャイル開発は、めまぐるしく変化する仕様要求にさらされながらも、迅速にソフトウェアを開発する能力を与えてくれる。こうしたアジャイル性(俊敏性)を達成するためには、規律とフィードバックを与えてくれるプラクティス(実践法)が必要だ。また、柔軟性と保守性を兼ね備えた設計を実現するための基本原則や、そうした原則をバランスよく利用するためのデザインパターンを理解している必要がある。本書は、この3 つのコンセプト(原則・デザインパターン・プラクティス)をすべて縫い合わせ、1 つにまとめようという試みである。
本書では、原則、デザインパターン、プラクティスを示し、それらが実際にどのように利用されるのかをたくさんのケーススタディを通して説明する。もっと重要なことは、これらのケーススタディの解答を天下り的に示さず、むしろ設計過程を進行形で示したことである。したがって、あなたは設計者がミスを犯す様子を目撃することになる。設計者がそのミスをどのように特定し、また実際にどのように修正するのかを観察して欲しい。そこでは、設計者がどのように難問に挑み、仕様書の曖昧さや現実とのトレードオフとどのように格闘するのかを見ることになるだろう。つまり、設計という行為そのものを見ることになるのだ。
15年くらい前に開発を始めた頃、ハードウェアとソフトウェアの開発を行っていた際に、開発したコードが可読性などの品質が悪くて困っていたときに助けてもらった書籍です。開発のノウハウやデザインパターンなどをコードベースで解説しているので、新人の方が困りそうなポイントをはじめに学ぶ書籍としては、ありだと思っています。
当時一緒に読んでいた『Clean Code アジャイルソフトウェア達人の技』と合わせて、自分自身のスキルアップに貢献してくれた書籍です。ノウハウ自体は、今もある程度使えるものだと思います。ただ、現代のソフトウェア開発が「フレームワークを使うことが当たり前になった」という事情を考えると、全員が読むという書籍ではないと思います。
ソフトウェアエンジニア大畠健がおすすめ『UNIXという考え方―その設計思想と哲学』
UNIXというオペレーティングシステムが、どういう設計思想により作られているかということと、その思想がどのように優れていて、そこから何を学ぶべきか、ということが説明されています。 たとえば標準出力などは「大学のC言語の課題でしか意識しないよ〜」と思ってしまいがちですが、実はシェルをパイプでつないでいくとかなり高度なことができます。このことが「ひとつのことをうまくやる」というUNIXの思想に通じていきます。
この本を読むことで、コンピューター(のある面)についてある程度の大局観が得られます。 UNIX(とかLinux)は、技術として古臭く感じられて、なかなか学ぶモチベーションが上がらない方もいるかもしれません。けれど、そうした技術が淘汰されずに生き残った理由があるのだと思うと、業務でちょっとしたシェルスクリプトを書くときでさえ、ワクワクできるようになれると思います。
WebエンジニアがIOを直接扱うことはあまりないですが、しかしたまに必要になることは確実です。そんなときにいちいち検索して学び直すのではなく、ある程度の基礎知識を持ったうえで技術と向き合い、知識を吸収していけるようになります。
西岡悠平がおすすめ『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 を理解する技術書は色々とあるので、そちらを勉強すれば良いです。それとは別に、実際にどういう流れで発展したかの歴史を勉強すると、今後の流れもある程度、予測しやすくなります。あなたのキャリアを考えるのに有効だと思います。
この本に限らず、その技術の背景とか歴史を理解すると、本質的なところまで見えてきます。
宮田芳郎がおすすめ『達人プログラマー』
プログラマーの仕事の「考え方」について、多くの知見を得られる書籍です。
新人エンジニアの方々は、開発項目をこなすためにコードの書き方やデバッグの仕方、テストの書き方を学んでいると思います。仕事をさらに上に高めていくためには、難しいものを設計出来る、複雑なものを設計出来るなどの力が必要です。そんなときに、本書で得られる「考え方」の知識が役に立ちます。開発メンバーとしてワークしてきたくらいのフェーズで読むと、リードエンジニアへと成長していくための足がかりが得られると思います。
自分自身は本書を読んだことで、プロトタイプをうまく使えるようになりました。要するに、プロトタイプを書く前に「何のためにプロトタイピングをするのか」「書いたコードはマージしていくのか、使い捨てなのか」などを適切に選べるようになりました。
宮田芳郎がおすすめ『リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック』
特定の言語に縛られない「コーディングの原則」を学べる大定番の書籍です。これまで新人の教育では何度も勉強会に使ってきました。学生インターンや新人の方々に基礎知識を身につけてもらううえで、とても良い本だと思います。
プロとしてコードを書くのに必要な最低限の知識がコンパクトにまとまっています。プロとしてのコードは、自分や他人に読まれるものです。個人として書くコードとプロとして書くコードは、ここが一番の違いです。本書を読むことで、変数名やメソッド名の付け方、メソッド分割の粒度などについて、基礎的なルールや背景にある考え方を学ぶ事ができます。
おわりに
選書から、そのメンバーの価値観やキャリアが見えてくるような、興味深いアンケート結果になっていました。読者のみなさんも紹介された本をぜひ読んでいただき、業務に役立ててください。