エンジニア人生で最も影響を受けた本 3選
「どんな本を愛読していますか?」は、採用面接で聞いては行けない質問だ。
5.思想・信条、宗教、尊敬する人物、支持政党に関する質問 あなたは、どんな本を愛読していますか。
たしかにプログラミングの設計思想も宗教といえばそうかもしれないが、エンジニアにとってこれまでに読んできた本は、その人のマインドセットを知るうえで重要な情報源だ。
なので、まずは自分から 「なぜ今のような考え、思想に至ったか」「その根底にあるはなにか」 を説明するために、過去に読んできた250冊以上の技術書やビジネス書の中から、とくに影響を受けた3冊の本を紹介する。
独習 C# 第3版
独習 C# 第3版
著:ハーバート・シルト(翔泳社)
C#の基本的な文法だけでなく、言語仕様まで深く掘り下げられた入門書だ。「初心者に最適の入門書」と謳っているものの、700ページ近くある鈍器だ。
元C#er(C# 4.0まで)を自称するだけあって、SIer時代にはC#を主に使っていた。そのなかで独習 C#でひとつのプログラミング言語を隅から隅まで理解しようとした経験は、以降のエンジニア人生において大きな影響があった。
なぜこんな機能があるのか、これを使うとどう変わるのかを知れたことで、プログラミングの解像度が上がった。また、「C#ではこうだったから」「この機能はC#にあったはずだから参考にしよう」と、ものごとをC#基準で考えるようになった。
SIerを離れフロントエンドエンジニアとしてTypeScriptを触るようになってからも、C#の知識が役に立っている。というのも、C#のリードアーキテクトがTypeScriptの開発にも関わっていたからだ。TypeScriptに追加される新しい機能もC#には元からあったため、すぐ理解できた。
プログラマが知るべき97のこと
プログラマが知るべき97のこと
出版:オライリージャパン
97のエッセイ(+ 日本人プログラマによる10のエッセイ)をまとめた本で、プログラマに必要な知識や心得を学び、自らのプロフェッショナル像を形成する上で大きな影響を受けた。
特に印象に残っているエッセイは以下の3つだ。
18. 学び続ける姿勢 by Clint Shank
自分の市場競争力を維持するためには、「学び続ける姿勢」がとても重要です。(略)同じ仕事にしがみついていると、いずれ必要とされなくなる日が来ます。
テックブログ Black Everyday Companyの開設も、このエッセイによる影響が大きい。週1更新を目指すにはインプットを増やさなければならない。学んだことを他人に説明するためには、より深く知らなければ文章が書けない。そうやって学び続ける姿勢を持つことができ、自身の成長に大きく寄与した。
64. プロのプログラマとは? by Robert C. Martin
プロフェッショナルなプログラマの最大の特徴は「自分が責任を取る」という態度、責任感です。
一人一人が自分の仕事だけでなく、チーム全体のアウトプットに責任を持ちます
この考え方によって、仕事において「プロフェッショナル」を意識するようになった。
だから、私はコードを書くときは一切の手抜きをしない。「まぁいっか」なんて妥協は許さない。そして、自分で考え抜いて書いたコードが負債になりかけたら、自ら責任を持って修正してきた。
自分一人ではなく、チーム全体の生産性をあげる努力をしてきた。イシュースカベンジャーとなって誰もやりたがらないコスパの悪いIssueを対応し、評価されなかろうがチームのために働いてきた。
これらはプライドなんてカッコいいものではなく、プロフェッショナルであり続けるための意地だ。
88. コードは生涯サポートするつもりで書く by Yuriy Zubarev
いつも「このコードは生涯、自分がサポートし続けなくてはならない」と思ってコードを書く。
コードを書くというのは、自分の知識が技術、取り組む姿勢、つまりプロ意識や責任感がどれほどのものか、それを他人がうかがい知るための手がかりを残すということです。(略)コードを1行書く度に、ユーザのこと、顧客のこと、そして自分のキャリアのことを考えるべきです。
64.のアンクルボブのエッセイに似ているが、仕事に取り組む姿勢に大きな影響を受けた。
人柄はコードに出る。だから、コードを見ればその人がどんな姿勢で仕事に取り組んでいるかがわかる。だからこそ、私はコードを書くときに一切妥協をしたくないし、しない。
エリック・エヴァンスのドメイン駆動設計
エリック・エヴァンスのドメイン駆動設計
著:エリック・エヴァンス(翔泳社)
ソフトウェアの設計について書かれた本で、一言で言えば「事業活動で使われる言葉とコードを一致させる」という内容だ。20年以上前の本なので、いまでは当たり前になったことばかり書かれているが、 「当たり前のことを当たり前にする」ことこそが難しいと気付かせてくれる。
DDD本を読むにあたり、設計に関する知識が乏しかったので現場で役立つシステム設計の原則、良いコード/悪いコードで学ぶ設計入門、Clean Architecture、Java言語で学ぶデザインパターン入門など、設計やデザインパターン、オブジェクト指向プログラミングなどの書籍を読んで基礎を固めた。
準備が整ったところで、はじめに1回、復習で1回、読書会で1回と、3周読み込んで理解を深めた。
DDD本はもちろんだが、DDD本を読むまでの軌跡も含めて大きな影響を受けた。
最後に
あなたは、どんな本を愛読していますか?