Header image

クラッソーネの開発者がエンジニアリングに関することもそうでないことも綴っています!

若手ソフトウェアエンジニアに読んでおいてほしいなあという本たち9選

若手ソフトウェアエンジニアに読んでおいてほしいなあという本たち9選

まえせつ

こんにちは、クラッソーネ CTOのマツモトです。好きなザクはMS06R-2です。

さて、弊社の開発チームには比較的キャリアの浅めなメンバもいます。
そんな彼/彼女たちに読んでおいてもらえると嬉しいなあと思っている書籍を挙げてみようと思います。
雑誌の4月号なんかでよくある新人特集みたいな感じですね。

選書基準としては、今この瞬間の How to ではなく、知見の寿命が長そうなものとしています。

これは余談なのですが、むかしよく勉強会とか読書会とかを主催していた時期があって、その時のコンセプトが「明日の仕事に役に立たない」でした。
ベースとしては「仕事でいま必要なことは今すぐちゃんと調べればいいだろ、仕事なんだし」と思うところがあって、「今すぐに役には立たないかもしれないが、N年後にはきっといい影響が出ているはずであろうこと」をテーマに選んだりしていました。(極論すれば「大学の講義と教科書をちゃんと振り返ろう」 みたいになっちゃうんですが。)

ので、今回もその傾向が強めです。

いろんなほん

1. ソフトウェア・ファースト あらゆるビジネスを一変させる最強戦略

https://www.nikkeibp.co.jp/atclpubmkt/book/19/P89910/

縦書きの本だし、ソフトウェアエンジニアじゃない人向けの一般書ではあるのですが、必要なことが過不足なく書かれておりとても便利です。
また、ソフトウェアエンジニアじゃない人がどのような認識をしているかを把握することもできるので、それを勘案してよりわかりやすい伝え方なども考えていけるのではないでしょうか。

なお、同書はクラッソーネ社内では、ソフトウェアエンジニア以外の新卒や若手メンバの課題図書的にも扱われています。
狭義のコンピュータソフトウェアのみならず、「なにかを実現するためのしくみ」自体がソフトウェアであると言う観点から、
「私たちは"顧客に価値を提供するしくみ"というソフトウェアを開発し続ける組織である」と認識しており、そのための理解のためにとても有用だからです。

今年も新入社員研修で使ったりしました。

https://twitter.com/crassone/status/1511593080595824641?s=20

2. アジャイルサムライ――達人開発者への道

https://shop.ohmsha.co.jp/shopdetail/000000001901/

出版年古めとは言え定番本ですね。

社内の開発体制は概ねスクラムぽい雰囲気で進めているのですが、その背景にあるそもそものアジャイル開発ってどういうことかある程度まとめてわかっておこう、みたいな気持ちです。

アジャイルソフトウェア開発宣言アジャイル宣言の背後にある原則 をちゃんと読んで噛み締めよう、みたいな気持ちではあるのですが。(スクラムやんぞ!とかいうときに、教条主義的にだったり、プロセスやツールを守っていればうまくいくのだ、みたいに思ったりする場合が世の中に散見されるので…)

あと応用編的には アジャイルイントロダクション:Agile開発の光と影 が、アジャイル開発に対する批判や検証がなされていて、とても興味深いのでおすすめです。

3. プリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則

https://www.shuwasystem.co.jp/book/9784798046143.html

ソフトウェアエンジニアなら知っておきたい(おもにプログラミングレイヤの)いろんな原則や考え方が、パタンランゲージで101紹介されているのが本書です。

目次を見れば、あーそういうことね、ってわかってもらえるであろう厳選された原理原則が並んでいます。

初級者だといきなり読んでもわからない事が多いかとは思うので、折に触れてぱらぱら読んでいるとある日知識と実務経験がリンクして気づけるんじゃないかなと思います。

あと、キャッチコピーで3年目までに知っておきたい的な事が書かれていますが、むしろ後進への指導的立場になる人にもぜひお手元に置いていただきたい感じです。
ちょっとした説明のときに、その背景となる概念とその名称を適切に伝えられるようになります。アクロニムの正式名称とか結構うろ覚えなことありますし、出典も記載されているので次のステップに進めるときのガイドとしても便利です。
(ぼくは紙と電子で両方持っています。)

4. カンバン仕事術

https://www.oreilly.co.jp/books/9784873117645/

チームにおけるタスク管理について学べます。

個人的にはこれ一冊で大体の場合十分じゃないかなと言うレベルの認識です。
なんなら前半、いやむしろ1章だけでも多くの現場では福音になるのでは?くらいに思っています。

とはいえ、現状の弊社チームでも万全に適用できているわけでもないので、頑張って精進したいところではあります。

5. エンジニアの知的生産術 ――効率的に学び,整理し,アウトプットする

https://gihyo.jp/book/2018/978-4-7741-9876-7

「学びかた」を学ぼうというコンセプトです。

ソフトウェアエンジニアは日々学び続けることが職業上の責務みたいな側面があります。
それを非常に効率的に行っていかねばならないのですが、すごい人はこんな感じでいろんな良い習慣と心がけが持っている、と知るのは大事なことだなあと思っています。
断片的にはそれっぽいことは伝えているつもりなのですが、「望ましい振る舞い」がまとまっていると紹介するときにとても便利なのでよく挙げています。

6. プログラマの数学 第2版

https://www.hyuki.com/math/

近年は、機械学習などのブームによって数学の重要性は強く認識されているかと思います。
とはいえ、弊社サービスの範囲ではそこまで数学数学したトピックはあんまり出てこないのが現状です。

じゃあ数学はいらないのか、というと当然そんなことはないわけで、プログラマとして最低限度知っておいてほしいみたいなレベルはあるわけです。
そのラインをいい感じにまとめてくださっているのが、おなじみ結城浩先生の当書です。

ちなみに、数学はどうしても苦手だなあという気持ちが拭えない場合は、はじめまして数学がすっごくおすすめです。諸事情で3分冊が合本されてしまっていてぱっと見は大変そうなのですが、なかみは丁寧で真摯かつ子どもでのちゃんと読める平易さ、そして尋常じゃなくかわいいイラストと最高なんですよ…!

7. マスタリングTCP/IP 入門編

https://www.ohmsha.co.jp/book/9784274224478/

もう6版にもなってるんですね…(老人会み)。

定番中の定番とも言えるネットワークに関する基礎知識です。

近年はあんまりこのレイヤを直接触ることは少なくなって、パブリッククラウドのコンソールから設定すればOKみたいな状況の多くはなっています。
とはいえ、最低限度この範囲くらいのことはわかっている前提で会話をしてしまいがちなので、基礎中の基礎として把握しておいてほしい感じです。

以降のシリーズは興味が湧いたら読めばいいかな、という気持ちです。

あ、そういえばすごいIPv6本 こと プロフェッショナルIPv6 第2版を積んじゃってるなあ…。

8. コンピュータの構成と設計

https://www.nikkeibp.co.jp/atclpubmkt/book/21/S70090/

いわゆるパタヘネ本(パターソンさんとヘネシーさんの共著であることから)です。
もう6版にもなってるんですね…(2回め)。

日本語版はMIPS edition なんですが、原著はRISC-V edition もあって興味深いです。(RISC-V原典P、積んでるなーと思いつつ)

ソフトウェアエンジニア、なかでもWebレイヤの技術を扱う場合にCPUのことまで必要かっていうと意見は分かれるかとは思います。
実際TypeScript書いたときのCPUの動作なんて層が遠すぎて考えることはできないでしょうし。
とはいえ、CPUの気持ちがわかることは必要であって、原理原則みたいなものかなあと思っています。
ので、マストではないのですがいわゆる「計算機概論」的な講義に相当するものとしてざっくり把握しておいてほしいなあという気持ちです。

けっこう分厚い本なので、軽く通読するだけでもけっこう大変です。ので、まずはざっくり流し読みして、面白そうなトピックだけ熟読していけばいいんじゃないでしょうか。
個人的にはパイプラインストール周りの話が楽しかったような記憶があります。
今だと、RISC-VやARMまわりやGPUとの対比なんかも充実してるはずです。

そういえば Hisa Ando さんの【連載】コンピュータアーキテクチャの話 | TECH+ も大好きですね…。

9. Rubyのしくみ Ruby Under a Microscope

https://shop.ohmsha.co.jp/shopdetail/000000004065/

ぼくが Rubyist なのと、弊社のバックエンドはRailsベースだったりするので。

昔だったらRubyソースコード完全解説 (Ruby Hacking Guide : RHG )だったんですが、さすがに対象が古い(書籍版だとRuby 1.7 )うえにANSI C ですらないのでちょっと厳しいなと。

とは言え、Ruby に限らず言語処理系の基本的な構造がわかる(ような気分にはなる)ので、他の言語を扱うときも把握するべき勘所がつかみやすくなるのでとてもいいんですよ、RHG。

あと、内部構造を理解しておくと各種言語機能のタネがわかるわけで メタプログラミングRuby 読むときもだいぶ助けになったなあというのを思いだしました。魔術じゃないのだな的な。

まとめ

ほかにもいろいろあるのですが、ちょっとひとまずはこれくらいにしておこうと思います。

みなさんの推し本があればぜひ教えて下さい!

最後に

クラッソーネでは、技術書好きな人を大募集しています!

https://www.crassone.co.jp/recruit/engineer/