nikkie-ftnextの日記

イベントレポートや読書メモを発信

「ITエンジニア本大賞 2023」で投票したおすすめ本の残りは『プロになるJava』『Clean Craftsmanship』『Googleのソフトウェアエンジニアリング』『ソフトウェアアーキテクチャの基礎』『エンジニアリングマネージャーのしごと』です #itbookaward

はじめに

みんなおすすめ本持ってていいなア!!じゃあ、まだまだ本バトルしようぜ!本バトル!!
nikkieです1

みなさん、「ITエンジニア本大賞 2023」に投票しました?(本日12/11締切

私はミノ駆動本を含む6冊に投票を済ませました!

本日12/11(日)締切という賞味期限を踏まえ、今回は残り5冊のおすすめ本語りをしちゃいます!
秘密はね、最後(投票最終日)まとめて明かされるんだよ。

目次

前提:現時点で通読しているわけじゃないよ

私の技術書の読み方としては、すべての本を最初から最後まで通して読んでいるわけではありません
「知りたい!」と思ったことがあり、それについて「この本で知られるよ」という声を参考に手に取ります2
目次から「知りたい!」が書いてありそうなところを絞り込み、そこだけを集中的に読みます3

おすすめ済みのミノ駆動本は、設計の力を付けたかったので通読を選択しています(読書会を使って寄り道しながら進行中)。
今回おすすめする5冊は「知りたい!」が見事に解決したという観点から選んだものが多数です(繰り返しますが、通読したわけではありません)。
なお、今後通読される可能性は全然ありえます4

『プロになるJava

副題の「仕事で必要なプログラミングの知識がゼロから身につく」、これはそのとおりだと思います。
Javaの文法も学べます5が、私の場合は「Mavenってなんなの?」(Pythonしか経験ない身からするとpipとは何か微妙に違う気がするぞ)というJavaでの開発に使うツールについての疑問への答えを得られました。
また、IntelliJ IDEAの設定や使いこなし(ショートカット)について学べたのも重宝しています。
以下のツイートで取り上げたような、学んでいく上での考え方も同感で、「Javaのプロになるための最初の一冊だなあ(これを一冊目で読める人が羨ましすぎる)」と感じます。

Python書籍には『独学プログラマー』という本がありました。
『プロになるJava』のカバー範囲はそれに近く(Java版"独学プログラマー")、さらに内容はより厚みが増している印象です。
独学プログラマーのpipの説明と比べると、Mavenの説明は手厚かった・本格派という感想です。

著者の方々は、入門書の一つの到達点を示されたのではないかと思います。
このフォーマットは、Javaに限らず、言語の入門書の1つの型になるんじゃないかなと期待しています。

そして、著者のお一人きしださんがフォローアップコンテンツを定期的に出されているので、出版されてなお、書籍の内容は充実していると感じます!

マジでこの環境でJavaを一から学べるの羨ましすぎですし、Pythonはじめ他の言語も追随できたらめっちゃよさそうですね✨

『Clean Craftsmanship』

Uncle Bobの新刊!最後のCleanシリーズ6

Craftsmanship(「ソフトウェアクラフトマンシップ」)は『Clean Agile』で知ったのですが、私にはかなりしっくり来るアイデアなんですよね〜。
そういうわけで『Clean Craftsmanship』は通読したい本でした(途中で止まっちゃってる状態です)。

動画と合わせて学べますが、Uncle Bobと一緒にTDDして、わたしー、TDD何も分かっていなかったのー
Uncle Bobに見せてもらったTDDは、1つのテストを通す上で、RedとGreenを何回も往復します!
TDDを動画も合わせてガッツリ学べるだけでも非常に価値のある1冊だと思います(さらにCraftsmanshipも学べるおまけ付き!)

Forkwell Libraryシリーズでも取り上げられていますね。
プログラマーが3年で倍になる話(つまり、半数は常に経験3年未満)7を聞いて、この本が書かれた理由の解像度が上がりました。

Googleのソフトウェアエンジニアリング』

Googleの現役ソフトウェアエンジニアたちが、超大規模ソフトウェアの開発と保守を長期的に支えてきたGoogle社内の多様なベストプラクティスを、文化、プロセス、ツールの側面からこの一冊に凝縮。

読んだ同僚から単体テストでのモックの使い方に学びがあったと聞き、「テスト関連箇所(11章〜14章)だけでも読みたい!」と思いました。
モック(13章)に至る前の12章 ユニットテストでめっちゃ学びがありました。

めっちゃしびれた一節です。

テストを書いたら、システムをリファクタリングし、バグを修正し、新機能を追加する際に、そのテストに再度触れなければいけないというのは何かが間違っている (「12.2.1 変化しないテストを目指す」より)

「普通は再度触れることになるだろう」と思い込んでいたのが粉砕されました。
はい、私の書いたテストコード、何かが間違ってます!(悔しくって死にそう〜)

参考になるな〜と特に感じたのは以下です。

12.2.3 相互作用ではなく、状態をテストせよ

12.3.2 メソッドではなく、挙動をテストせよ

状態や挙動レベルではなく、もっと具体的な実装詳細レベルで検証しようとして、"テストに触れなければいけな"くなっていたのではないかと振り返っています。
最近はこの本から離れていましたが、この記事書いていて自分の伸びしろだな〜と自覚したので、あとは練習の時間を確保するのみですね(13章まで読み進めたい!)。
勘違いかもしれないですが、『Clean Craftsmanship』で示されたTDDとつながるかもな〜と予感しています。

『ソフトウェアアーキテクチャの基礎』

本書は、そうした効果的なアーキテクチャを設計、構築、維持するアーキテクトになるために必要なスキルや知識を、現代的な視点から整理して包括的に解説する書籍です。

過去にレビュアー募集に手を挙げましたが、自分が思っていたほど動けず(PyCon JP 2021座長後の燃え尽きによります。 ごめんなさい >人<)、読んだ範囲での学びはめちゃめちゃあったので気になっていた一冊。

今年あったタイミーさんの勉強会にも参加しました。
訳者の島田さんによる講演、概要を掴むのにオススメです。

この本を始め、ハードパーツなど、2022年はオライリーさんからの設計関連本の翻訳書が多かった印象です。
気になる本が多すぎますね〜

『エンジニアリングマネージャーのしごと』

最後はこちら。
読書会に参加しているAgile Developers Communityでおすすめと挙がっていて、気になるところを読みました。

本書は、エンジニアリングチームのマネジメントの仕事全般を紹介し、エンジニアリングマネージャーに必要な考え方やスキルを解説します。

チームのマネジメントの全体感が掴める1冊です。
マネジメントの仕事を広くカバーし、その各について、入門的な情報を提供しています。
「4章 1on1」は「1on1(コーチンと言ったほうがいいかも)ってどうやるんだ?」と思っていた疑問へのヒントが得られました。
「3.2 委譲」あたりも気付かされることがありましたね。

もう1冊いいですか? 『プロを目指す人のためのTypeScript入門』

これは投票していないのですが、ブルーベリーの絵本8も紹介したい!
『プロになるJava』に票を入れようとしたときに思い出し、その時点では未読なので劣後させました。
最近VS Codeのやべー拡張🎀を開発しているのですが、その中で「TypeScriptを知りたい!」となって手に取りました。

解説が詳細で丁寧、そして分かりやすいです。
「1.2 TypeScriptとJavaScriptとの関係」や「7.2 Node.jsのモジュールシステム」が私には特にありがたかったです。
後者を読んで、npmやpackage.jsonpackage-lock.json完全に理解した!9となりました。
JavaScriptもTypeScriptも今は雰囲気でやっていて、これは2言語学ぶのかなー」と思っていたのですが、前者を読んで「ふーん、JavaScriptとTypeScriptの関係って、Pythonへの型ヒント導入に近いところあるんだな〜」と学習の見通しが立ちました。

これでVS Code拡張開発は盤石だな、勝った✌️(気が早すぎ)

終わりに

ミノ駆動本以外のITエンジニア本大賞 2023投票本を語ってきました。
ひょっとして今年、入門書の当たり年なんですかね(JavaとTypeScript。どっちも技評さん👏)。
オライリーさんからは(特定の言語に関わるというよりは)設計やエンジニアリングといった広い観点を扱う素晴らしい本が数でも質でも目立つという印象です。

投票は本日までです、入れ逃しなきよう。
ブログなどでみんなのおすすめ本も、教えてほしいなア!



  1. チェンソーマンはエアプ勢です
  2. この知りたい駆動拾い読みを繰り返してきたところ、最近では「知りたい!」に対して書棚(私の場合はKindle)から「この本にまず当たってみよう」と、脳内インデックスの活用も増えてきました
  3. 「知りたい!」の他にも学びが多いと分かり、通読しに行く本もあります(し、通読が積ん読になるケースもあります)
  4. 全部読みたい!けど、時間が足りない… 1日ってなんで24時間しかないのかしら
  5. JShellってやつを使うらしいですよ! 楽しそう
  6. ぶっちゃけ信じてません。Windows 10って最後のWindowsってタレコミでしたよね? 大人は嘘つきだ
  7. 23:10過ぎから「いつも半数が #駆け出しエンジニア」
  8. ソースは 6歳娘「パパ、型による条件分岐はできないの?」 - Qiita。娘さんの言です
  9. ダニング・クルーガー効果、『エンジニアリングマネージャーのしごと』で取り上げられてたりもします(10.4 馬鹿の山)