このブログおよび, 登壇・アウトプットはゴリッゴリのエンジニア, 本職はコンサル企業のマネージャーとしてクラウドエンジニアリングのコンサルをやっている者です*1.
この記事は,
当ブログの名物である, Pythonのオススメ書籍(と関連する技術書)の紹介エントリーです!
※去年の記事はこちら.
本年のエントリーでは「今最もいい感じなPython本」の紹介に加えて,
- キャリアごとに読むべき技術書(と学び方)の選び方
- この年末に読んで欲しい技術書(Python本とそれ以外)
- 「エンジニアのキャリア形成的に期待値の考え方大事だよ」という話
この三本立てでご紹介できればと思います.
というわけで, 本年のラインナップは以下の通りです.
重ねて申し上げますが, 今回はPython以外の本も多めです.*2
なお, 最近は仕事で全くコードを書いていない, 「本当に職業エンジニアなのか?」状態ですが,
仕事で全くもってコードを書いていない一方、個人開発が超はかどっているのかGitHubの耕作が過去最高記録どころか、ダブルスコアぐらいになってる
— Shinichi Nakagawa / 中川 伸一 (@shinyorke) 2022年11月3日
なお、8月9月が凄いことになってるのはPyConJP2022の仕込みです pic.twitter.com/44Aj6u7MMO
平日の夜と週末はゴリッゴリに手を動かし, プロダクトを作ったり自学自習しているので「現役エンジニア」の助言としてどうか安心してご覧頂ければと思います&所属組織と企業に関係が無い個人の見解としてお楽しみ頂ければと思います.
要約すると
(キャリアの)レベルが上がると人の数は減っていく(≒何かしらの理由で留まる or 離脱していく)ので成長戦略という意味でどんな勉強をして(技術書籍を読んで)キャリアを歩むかが重要である.
キャリアレベルを考える
エンジニアに限った話でも無いと思いますが, 「技術の学び方」は, 自身のレベル感(仮に「キャリアレベル」と名付けましょう)によって変わってくるものと, と認識しています*3.
表にするとこんな感じで,
レベル | ステータス | 学ぶべきこと | 次のステップ |
---|---|---|---|
ジュニア | 実務経験がほぼゼロの状態. 駆け出し〇〇的な | 🔰本やWeb系の教材で学習 | エンジニアとして職につく |
メンバー | エンジニアとしてお給料を頂き, 働いている状態. メンバーだったりサブリーダーだったり的な「普遍的にいる」人たち. | プログラミング言語や他の事で一つ以上のことを学ぶ | 何かしらのプロとして周りから認知され, リーダー・マネジメントができるようになる |
マネジメント | 複数人のエンジニアを束ねるリーダー・マネージャーとしてチームを統率し, サービスを届ける(デリバリーする)立場にいる状態. | 上級技術者向けの書籍, チームマネジメントやプロダクトマネジメントの学習. | 「マネージャーのマネージャー」として複数チームを統率 or 「SRE」「ML」等の職能特化したチームのリーダー |
ボード | 「マネージャーのマネージャー」「組織を統括する人」として複数チームを統率 or 「SRE」「ML」等の職能特化したチームの長・責任者として事業および会社のサービス・デリバリーに責任を持つべき立場. | 組織論・経営論および大規模アーキテクチャに関する学習 | 自分次第 |
天上人 | 社内・社外など関係なくインパクトがある神様. | 自分次第 | ??? |
絵にするとこういうイメージです.
「今ここ」の部分は私の立ち位置です.
一日でも速く「マネジメント」から「ボード」に行けるように日々精進していますし, 職務上一部のミッションで「ボード」に当たるようなお仕事もさせてもらっています(これは他のキャリアレベルでも一緒でしょう*4).
(キャリアの)レベルが上がると人の数は減っていく(≒何かしらの理由で留まる or 離脱していく)ので成長戦略*5という意味でどんな勉強をして(技術書籍を読んで)キャリアを歩むかが重要である.
という事がおわかりいただけるのではと思います.
オススメ技術書籍2023
流石に天上人は私もわからんので,
- ジュニア
- メンバー
- マネジメント
- ボード
以上4つのキャリアレベルでご紹介します.
ジュニア🔰
ここで目指す目標としては,
エンジニアとして仕事をするためのスタートラインに立つ.
事かなと?と認識しています.
実現方法は「新卒でエンジニアとして入社する」でも「インターン・アルバイトとしてスタートアップでエンジニアとして働く」等などあると思います.
Pythonを学んで仕事にするぞ!という方は,
を読んで写経するですとか, PyQで手を動かしながら学ぶとかすると良いかと思います.
また, こちらもすっかり定番書籍と化していますが,
「エンジニアの仕事・心構え」だったり, 「何ができるとエンジニアとしてスタートできるのか?」という問に対する答えとして独学プログラマーは大変オススメだったりします*6.
メンバー
無事にエンジニアとして仕事につく(お給料を頂いている)状態から次に向かうのは,
一人のエンジニアとして, 「自他共に認められる」存在になり, 「この人なら任せられる!」という一人前になる.
ぐらいがいい感じなステップかと思っています.
具体的には「新しくチームに入ってきた人にOJTで色々教える」「ソースコードのレビューを任せられる(リーダー・マネージャーの監修の元)」「とある施策の機能開発を(短期的な)プロジェクトのリードとして任せられる(お守りとしてリーダー・マネージャーがが付いている)」とかそんな所でしょうか.
この頃になるとWebアプリケーション(サーバーサイド)の開発に関する知識ぐらいは,,, とかそういう期待値になることが多いかなと思っています.
実践DjangoはDjangoを使う人にとっていい手引になると同時に, 「ある程度知識があってリードしないと」的な立ち位置にいる時に知っておくべきことが丁度良くまとまっているのでオススメです.
詳しく知りたい方は手前味噌ですが上記の記事を御覧ください.
コードレビューをしたり, アルゴリズムに対する意見を求められたり(もしくは転職対策のためアルゴリズムを学びなおしたい*7)というシチュエーションには,
これ, めちゃくちゃ良いです, 私はコンピューターサイエンスを人から学ぶこと無く(資格勉強とかで自学自習しかしてない状態で)ここまで来たのですごく重宝しています.
また, 昨今のエンジニアリングはサーバーサイドだったりインフラだったりのエンジニアでも「フロント知らないとできないことあるぞ?」という事があると思います(少なくとも私はあります).
フロント関係の本で今年読んだ書籍として,
この辺が大変参考になりました*8.
更にいうと, AWSにせよGoogle Cloud(GCP)にせよ, クラウドなインフラを扱う機会が増える, すなわち「自分でインフラの構成をコードとして書く(IaC)」をする機会も昨今は多いです.
AnsibleやChefなどもありますが, 今の主流はterraformだったりするので*9この辺で学ぶといいと思います.
更にいうと, ある日突然「スクラムやるからスクラムマスターよろ」とかそういうものあります(私の実体験に基づく).
資格などもありますが, この辺から読むと良いのではないでしょうか.
また, このへんだとISUCONに参加したりして楽しむ人も多いかと思います.
「パフォーマンスが出ていないプロダクトをどうにかしたい」という処方箋にも, そもそもパフォーマンスって何?的な方もISUCONでやってるような内容を拾うのはアリかと思います, 私もこの本読みましたが大変面白かったですしいい言語化がされていると思いました.
そしてこの記事のお読みの方でそろそろこう思う方もいると思います.
???「エンジニアってここまで学ばないとアカンのか?」
ですよね, この章で紹介したい本はこれでも絞ったぐらいです(意訳・オススメの本はもっと沢山あります).
これは自分の実体験でもそうなのですが,
メンバーな内に色々経験して学んでおかないと, ある日突然マネジメントの仕事をする日が来ると苦労するぞ!!!
この期間に何が何でもたくさん学ぶと良いと思います.
マネジメント
一人前のエンジニアになった→マネージャーなりテックリードなりに上がる(給料と共に)となると,
お前にチームを任せる, しっかり価値を提供(デリバリー)しような!!!
なんていう期待値になると思います, これはこれで自他共に認めるプロであると同時に,
一人のプレーヤーとして働くのではなく, チームで価値を出すことにフォーカスしよう(≒自分がコードを書く, 全部やる思想を捨てよう)という大切な時期に突入します.
「まずはメンバーのメンタリングからしようぜ」という所からスタートして組織づくりに必要な事, 未来のことまで網羅的に乗っていて, このエントリーで定義する「ボード」にも伝わる話かと思います.
これは3年前に読んだ時の感想ですが今もお気持ちは変わりません, ホント考えさせられます.
こちらは最近の本ですが, 「エンジニアリングマネージャー」という仕事をストーリー立てて紹介(涙なしには語れん話を含めて*10)という意味でMust Buy, Must Readな書籍かと思います.
また, マネージャーは自分のチームのみならず, 他のチームやステークホルダーとの調整・交渉が大事です.
ちょっと昔の本ですが, 「みんなアジャイルだのスクラムだと言ってる中での社内政治の本」としてすごく参考になるのでおすすめです.*11
ここまでマネジメントっぽい書籍が並びましたが,
マネージャーは自分の専門知識(サーバーサイドでもフロントでもMLでも何でも)を起点に幅広く技術・モノを知ってデリバリーできるのが理想.
だったりもします(少なくとも自分はそれを目指している&期待値も同様).
ソフトウェア(サービス)のデリバリーの尺度を元にいい感じにやると言う意味でDevOpsへの見解を深めるのにこのタイミングは丁度良いと思います, 特にメンバー時代にDevOpsに関わって無かった方は.
昨今のエンジニアリングではSRE(Site Reliability Engineering)というアプローチがMustだったりもしますので,
扱っているプロダクト・サービスの安定稼働という観点でも強くオススメしていきたいです.
ボード
役職的にはCTOやVPoE, シニアなマネージャーだったり.
複数のチーム・プロダクトのリードとして携わり, 経営視点でのコミットが求められる.
ようなレイヤーかと思います.
私としてはこれから挑戦したいレイヤーです, 自分の意思決定や行動が大きく影響する責任とやりがいどちらも大きいポジションです.*12
この手のレイヤーになると, チームをまたいだ改革や施策が増える事もあって社外事例も重要だったりします.
この2冊は自分が読んでいて参考になるものが多かったです, 時折読み返すのではと思うぐらいに.
また, この頃になると「チームのパフォーマンスが出ているか」「出ていない時に何をいじればよいか」という視点でも出てきます.
「チームトポロジー」はコンウェイの法則を元にデリバリーの高速化・最適化という観点でまとめた正にボード・マネジメントの為の書籍です, これは面白くてあっという間に読み終えました.
この「アジャイルメトリクス」は「エンジニア版マネーボール」という内容の書籍で, デプロイ回数やプルリクエストの数などでメトリクスを計測しながらチーム状態を改善するためのノウハウが乗っている書籍となります.*13
また, 大規模なアーキテクチャだったり, 「どのタイミングでシステムをリプレースすべきか」的な大きい判断をする事も多いかと思います.
「マイクロフロントエンド」はタイトルにフロントエンドと入っていますが, 「大規模サイト・アプリのトラフィックをどういうアーキテクチャで回避するか?」をうまく書いている名著です, フロントエンド要素はありますが(いい意味で)フロントエンド感ありません(どちらかといえば総合格闘技的な本です).
また, クラウド系のアーキテクチャで大きめのデータを捌くようなプロダクトを設計する際は,
大規模データ管理, すごく良い感じです.
余談ですが, 全社的なデータ基盤・データ活用を必要とされている場合は,
これらの書籍と以前私が書いたエントリーをご覧いただけると良いかと思います.
他にも経営観点だったり視座が高い書籍もありそうな気もしますが, 紹介しているとキリが無いのでこの辺で止めておきます.
結び - キャリアごとの期待値
最後にちょこっとだけ,
そもそもキャリアのレベルごとに自分そして他者は何を期待している(期待されている)のか?
を絵図にしてみました.
大雑把に書くと,
レベル | 自分自身への期待 | 他者からの期待 |
---|---|---|
ジュニア・メンバー | 自走できる, 一人前のエンジニアとなって職業としての報酬を得る💰 | チームの一員として役割を果たし, 後からチームに入る人の良きメンターであること |
マネジメント・ボード | チームを率いて価値を提供し, 期待通りの待遇を得る💰 | 組織マネジメント・経営にコミットして社内外で頼れる人となること |
天上人 | 世の中・業界へのインパクトが一種の指標値(精神的に安定する要素) | 困った時に頼れる「何かしらの神であり主である」こと |
だいたいこんな感じかなと思います, 何が言いたいかと言うと,
経験と年齢と共に期待値が変わっていくのは不可避(不可逆であり自分だけではコントロールできない)ですよ, ずっといい感じに成長していこうぜ!
ということでした.
来年もこのエントリー続くと思います, 皆さんの自学自習と良いエンジニアキャリアの参考になればとても嬉しいです.
【番外編】私の推し書籍2022
これも毎年恒例ですが, 「私が今年読んで良かった技術書籍」をいくつか紹介します.
そろそろPython以外の言語でサーバーサイドやりたいなと思い, Golangを触ったりしていますが, その次の目標としてRustもデビューしようかなと思って読み始めています.
年末年始には書き初めをしたい.
商売でも個人の趣味でもGoogle Cloudをよく使ったり, 人にオススメしたり推進したりしているので色んなインプットをしていますが, 特にこの2冊は役に立ちました.
そろそろお金に働いてもらいたいのでこういう勉強もはじめました.
*1:詳細は言えませんが, まあまあコンサル感漂うミッションをしていますし, これはこれで学びが多く楽しいです.
*2:少しだけ言い訳すると, 例年ほどPythonの本は読んでいない...ですが, それ以外の技術書は相当読んでいます.
*3:という表現がしたかったので, ファンネルで表現しました
*4:賛否両論あると思いますが, 「一個上の職位・レベルを見て仕事をすべき」みたいな考え方です(私はこの考えの支持者)
*5:これは「生存戦略」でもいいっちゃいいのですが, 「生存すなわち現状維持である」というイメージがあり, 今回の私のメッセージ「一歩でも前に進むことで成長しそれが結果的に生存となる」と微妙に合わないのであえて「成長戦略」としています(かつ, 私自身は成長戦略重視で生存戦略は一ミリも考えたことがありません).
*6:これずっと紹介している気がしますが, 読みやすさと文量, 扱っているボリューム的に丁度良く, 中上級者を含めて万人にオススメできる名著かなと思っています.
*7:コーディング試験とかそういうやつを想定しています.
*8:フロントのコードは今となっては趣味で書く程度ですが, それでも知ってると意見を求められたりとか仕事でもそういうシチュエーションにあったので継続して学んだりしています, あと純粋に面白いので好きになりたいなと.
*9:もしくは事実上terraform一択かもしれません, GitHub ActionsのCIに組み込むとかしない限りは.
*10:読んでいて昔を思い出す内容も多く, 内容がスッと入ってきました. マネージャーになる方は必読だとも思っています.
*11:アジャイル・スクラムはとにかく調整とコミュニケーションの連続なので「どういうパスでコミュニケーションしたり処理してショートカットするか」という視点でも学びが多いかと.
*12:野球の会社の時にCTOでしたが当時は小さいチームだったのでこの記事に記載しているレベルのことは未知の領域です.
*13:ホントはマネジメントの時点で読むべき本かもしれませんが, メトリクスを見ての改善を促すという旗振りや施行は少なくともシニアクラスのマネジメントじゃないと現実的には回らないという私の経験の元, ここに入れました.