【書評】世界一流エンジニアの思考法
はじめに
本記事は、『世界一流エンジニアの思考法』という本についての私なりの解釈を加えた感想ベースでの書評です。
世界の最前線のエンジニアがやっている思考やマインドセット、仕事術などが学べてよかったので、気になる方は読んでみてください!
前提
まず、前提としておさえておきたいポイントは、世界一流エンジニアが常人と比べて、特別頭の回転が速かったり、天才的記憶力を持っているわけではないという点です。
つまり、最初からできたとか、生まれながらの天才というわけではないという点です。
なので、私達こそ、一流の思考法などに触れることが重要なのだと思います。
世界一流は何が違うのか
結論を言うと、思考法・マインドセットが違います。
あくまでこれは私なりの結論ですが、上記をより具体的にいうと、世界一流が常人エンジニアと大きく異なる点は減らすことに対する思考やマインドが大きく違うということです。
次の項から詳細を解説します。
最初から手を動かさない
多くのエンジニアは仮説思考は当然していると思います。
(「ログなどのデータを見つける→仮説を立てる→仮説の検証→解決できない場合、再度ファクトチェック」という流れ)
仮説思考は以下の書籍に詳しく書いてあるので、興味ある人は読んでみてください。
しかし、仮説思考はエラーや何かしらの問題が起きたときに行うことがほとんどだと思います。
(これを行っているだけでも生産性は高いので素晴らしいことだと思います)
何が言いたいのかというと、これをタスクの前にも行うとより生産的だということです。
書籍にも記載がありますが、タスクやコーディングの前も最初から手を動かさずに仕様などをまとめた簡単なドキュメントを作成してから手を動かすという進め方をするエンジニアが出てきます。
つまり、タスクの前に進め方などを簡単にまとめたタスクのアウトラインを作成しているということです。
これがあるだけで、手を動かす前にタスクに対する解像度が上がり、目標・ゴール設定や見えていなかった障害・制約を視覚化することができます。
その上で、障害・制約に対する対策や仮説、目標・ゴールを達成するための方法を認識できます。
つまり、世界一流エンジニアたちはタスクや課題・問題に対するメンタルモデルを持つことが習慣となっているということです。
メンタルモデルを作ることの重要性
メンタルモデルとは、自分なりの理解や解釈・認知のことをいいます。
世界一流エンジニアたちは各自がタスクやプログラムに対するメンタルモデルを持っています。
なぜ、このメンタルモデルが重要なのかというと、メンタルモデルにより作られた解釈が常に脳内にあるため、コードの理解や問題に対する理解の効率が上がるためです。
例えば、コードリーディングの場面で役立つメンタルモデルには、MVCなどのアーキテクチャがあります。
そもそも、アーキテクチャを知っていて、理解していないとプログラムの流れがわからないので、コードリーディングしても理解ができません。
つまり、重要なのは思考のフレームワークや様々なアーキテクチャを理解しておくことです。
そうすれば、場面応じてメンタルモデルを形成することで効率よく仕事を進めることができます。
ここで焦点となるのはいかに「脳の負荷を減らすか」という点です。
この「減らす」という前提があるからこそ、高いパフォーマンスが発揮できるのだと感じます。
仕事の難易度別に考える
この本では、仕事の難易度を以下の4段階で考えています。
レベル1. 何も調べず(ググらず、AIに聞かず)に即座に実装(解決)できる
レベル2. 問題をどう解決するかはすぐに思いつくが、具体的な方法は忘れているため調べる必要がある
レベル3. 自分は解決方法を知らないが、スパイクソリューション(課題把握のための大まかなプログラム)をしたらできそう
レベル4. 自分だけでは解決が難しい、もしくはすごく時間がかかるもの
そして、生産性とは「いかにレベル1」を増やすかで決まると述べられていました。
ここでも焦点となるのは「脳の負荷を減らすこと」です。
つまり、レベル3や4をレベル2にするよりレベル2をレベル1にしたほうが生産性の観点からは良いということです。
理解に時間をかける
ここまでで、いかに「やることを減らすか」という点に頭を使っているかが見えてきたと思います。
ここからは具体的に実践に落とし込む部分を解説します。
まず、どうすればレベル1を増やしていけるのかというと「説明可能」なものを増やしていくということを行います。
説明可能という状態は「理解している状態」と同義です。
そして、理解している状態は以下の状態を指します。
① その構造をつかんで、人に説明できること
② いつでもどこでも即座に取り出して使えること
③ 知見を踏まえて応用できること
ここまですると、なんだか、時間かかりそうですし、優秀な人がそこまで理解に時間をかけているようには体感的には思えないと思います。
ですが、著者によると「どんなに頭がいい人でも理解には時間がかかる」そうです。
確かに、考えてみればそうですが、一流ほど地味なことや地道なことに時間を使っているように思えます。
(野球の大谷選手やイチロー選手とかは地味な基礎を徹底的に磨いているように思えます)
つまり、理解力がある人というのは基礎を身につけた人のことを言っているのです。
基礎理解が十分にあれば、応用が効き、問題解決の幅が広がりますし、当然、自分にとって難しいものや難解なものが減るので、脳の負荷も減ります。
そこで生まれた余力でさらに何かを減らすことに頭を使えるという好循環が生まれます。
なので、私たちがやるべきことは「説明できないものに対して、基礎から学習し、理解すること」です。
世界一流エンジニアたちもやっていることなので、やらないわけにはいきません。
まとめ
「怠惰であれ」という意味ですが、仕事においては「より少ない時間で価値を最大化する」という意味合いになります。
世界一流エンジニアのマインドセットは「BeLazy」です。
そのために、理解に時間をかけたり、メンタルモデルを形成したり、仮説思考を徹底するなどしています。
当たり前のことを続けることが、あらゆることで近道なのかもしれないなと改めて思いました。
エンジニアはもちろん、ビジネスマンは一読することをおすすめしたい本でした。
Discussion
アドベントカレンダー完走おめでとうございます!!!
わたしもこちらの本を読みました。特に「理解に時間をかける」ことは良いことなんだと知ることができたことが大きかったです。時間をかけて新しい知識も自分の知識にしていきたいですね。