仮想サーファーの波乗り

仮想サーファーの日常

プログラミング・SNS分析・自動化などに関してよく書く雑記ブログ

【書評】全ての若手エンジニアへ。10年の研究の集大成『エンジニアの知的生産術』はもう読んだか?


西尾 泰和さんの『エンジニアの知的生産術』読んだ。超良書だった。マジでこれはエンジニアみんな読むべき。

「社会人って忙しいよね。そんな中でも効果的に学習するにはどうすればいいんだっけ?」
「写経って意味あるんだっけ?なんでやるんだっけ?」
「本読むだけって本当に学習になるんだっけ?」
「エンジニアとして価値を出していくために継続的に何をするといいんだっけ?」
「仕事に追われてるのってなんでなんだっけ?もっと生産性高く働くには何が足りないんだっけ?」
...などなど。

エンジニアとして普段会社で働いていて直面する多くの悩みをテーマとして扱っている。一つ一つのテーマに関して、論文のデータやエンジニアのロールモデルたちの学び方を例に出して説明されていて、読んでいて1ページ1ページ気づきを与えられる。そんな本でした。

全ての若手エンジニアに全力でオススメしたい良書。


読んで印象に残った点


とくに参考になった点をまとめておきます!!


遅延評価的勉強法

「効果的に情報収集・学んでいくために何が必要か?」という悩みに対して、遅延評価的勉強法という考え方が紹介されていました。

新しい知識や技術を学ぶ時や他人のソースコードを読むときに、体系的に全部を読まなければならない!と考えてしまうと、枝葉にとらわれて全体感が見えなくなって重要でない部分に時間を取られて非効率になってしまう。


体系だって学ぶことや本を1ページ目から順に読んでいくのではなくて、自分の気になる部分、いま特に知りたいことに関して優先的に学ぶことが重要であると。つまり、必要になったときになって初めて学ぶ。今目の前の気になることを優先的に学ぶという学習方法。


www.itmedia.co.jp


わたしが過去にどのようなソースコードの読み方をしてきたのかを振り返ってみると、プログラミング能力の向上を目指したコードの読み方のヒントがあるかもしれません。
 まず1つは、「全体を読もうとしない」ことです。ソースコードには「物語」はないので、全体を通して読む必要はありません。面白そうなところをつまみ食いして、先人の知恵を学べばそれで十分です。
(引用:第10回 ソースを読もう (1/2) - ITmedia エンタープライズ まつもとゆきひろさん)


Rubyの生みの親でエンジニアでは知らない人はいないであろうMatzさんも、上のように言っています。


この悩みは僕自身強く持っていたので、目からウロコの指摘でしたね。

普段業務でソースコードを読んでいる時も、理解に抜け漏れがあったらいやだからと、全体をくまなく読もうとして時間がかかりすぎて残業しまくる...。それなのに全体像がいつまでたっても掴めない...。

という悩みをずっと持っていました。


その悩みを、(知らない言語でもソースコード読んで理解するのめっちゃ早い)会社の先輩に相談してみたところ、

先輩:「枝葉は無視してざっくり特徴的な処理だけ読んで、全体で何がしたいのかを理解するようにしてるよ〜。細かい条件分岐とかは最初は読まない。」

ということを言われて衝撃的だったのを覚えています。


「全体のやりたいことがざっくりわかれば、あとは細かい部分も何となく理解できるし、細かい部分は言語変わってもそんなに大差ない。」という意味だったらしく、実際に先輩のやり方を取り入れてみたところ、コードを読む速度が速くなりました。


ソースコードも技術書も、はじめから順を追って読んでいくのではなく、全体の中で特徴的なところ・特に気になるところを優先的に読んでいくことで、自分の興味のある部分を学ぶことができ、結果的に全体の理解も速くなり効果的に学習が進められるんだろうなと。



連続スペシャリスト的な生き方

この指摘もおもしろかったです。

「エンジニアとしてどんなふうにキャリア積んでいこうか...?」と考えたときに、とても参考になるなと。


リンダ・グラットンさんの「ワークシフト」で指摘されていたことですが、「連続スペシャリスト」としての働き方が現代では求められていると。


たとえば、修士課程まで生命科学を学んだら、その専門分野を生かしつつ他の専門分野(Webエンジニアなど)を学習する経験を積んで行く。そうやってキャリアを積んでいくことで、どこかの分野が壊滅的に職場が減っても、他の専門性での職場で働くことができるようになる。

また、複数の専門性を持って分野横断的に物事を考え、コミュニケーションをとることで、ある分野では当たり前なことを他の遅れている分野で応用することができたりもする。


このように、一つの分野でだけスペシャリティを獲得するのではなく、複数のスペシャリティを獲得し続けて行くことが大事だと。


この指摘をWebエンジニアとしての働き方に置き換えて考えてみよう。

社内でWebエンジニアとして働くだけだと、テックリードに技術力で勝てない。テックリードの方が技術力があるため、より難しい仕事がアサインされて技術力の差はさらに広がっていく。つまり、Webエンジニアとしてだけ働いていると、いつまでたっても社内でテックリードに報酬・経験の面で劣ってしまう。


そのような状況を打開するためには、Webエンジニア能力だけではなくて、営業職の人たちとのコミュニケーションにも時間を使ったり、マーケティング面で事業を伸ばす余地はないか検討して何か施策を打ってみたり、副業でWebエンジニアリング力を生かして本業ではできない経験をするなど、少し自分の経験をずらしていくことが重要になってくる。


この考え方・行動は、労働力競争が国をまたいで行われ、事業分野が数年スパンでスピード早く移り変わっていく現代においては特に重要なものになってきていると。



まとめ

以上、『エンジニアの知的生産術 ──効率的に学び、整理し、アウトプットする』の書評でした!

本の中では、この記事で紹介した内容の20倍くらい気づきがありました。


エンジニアとして働く中で必ずと言っていいほど直面する悩みに対して、普段とは別の視点から考えることができるのでオススメです。


エンジニアの知的生産術 ──効率的に学び、整理し、アウトプットする (WEB+DB PRESS plusシリーズ)
西尾 泰和 (著)
技術評論社 (出版)
2018-08-10 (発売日)


では!