どこにでもいるSEの備忘録

たぶん動くと思うからリリースしようぜ

【読んでみた】世界一流エンジニアの思考法

最近こちらの本が話題になってました。

一応自分もエンジニアの端くれではあるので、購入して読んでみました。 ということで、今回はそのメモです。

メンタルモデルが生産性に与える影響

労働生産性が低い日本

昨今、日本は海外と比べて労働生産性が非常に低いことがいろんなところで指摘されています。

www.jpc-net.jp

労働生産性の国際比較2022 より引用

上記の比較はITに限定した話ではありませんが、ITの業界でも程度の差はあれ、似たような傾向になっていることでしょう。 実際、現在われわれが使用する革新的なITサービスはGAFAMなどを始めとするアメリカや欧州の企業によるものであり、日本からこういったサービスが出た事例は少ないと言って差し支えないでしょう。

メンタルモデルと生産性の関係

「では、こうした労働生産性の差はどこからやってくるのか?」というのが、次に気になるポイントですね。

原因は諸説あるとは思いますし様々な要素が絡み合っているとは思いますが、本書を読んだ感想としては(ソフトウェアに限った話をすれば)生産性の差を産んでいる大きな原因の一つに本書のタイトルにもある「思考法」があるように思います。

本書の表現を借りれば、「メンタルモデル」という言葉がキーワードだと思います。 ちょっと調べてみるとこんな感じの説明が見つかります。

メンタルモデル(mental model)とは、誰もが自覚なしに持っている価値観、思い込みのことです。 メンタルモデルとは?UIUXデザインやビジネスにも活用できる考え方を解説 | 株式会社ニジボックス

要するに「価値観」・「思い込み」のことですね。 こうした、人間の根底にある考え方が積み重なって生産性に影響を出してしまっていると言います。

人間の思考・行動のプロセス自体を決定してしまうのがこのメンタルモデルの厄介なところで、当人は当たり前のように思考し行動しています。 ところが、その根底のメンタルモデルがすごいエンジニアと普通のエンジニアで異なっているから考えるプロセスや行動の優先順位などが違ってきてしまいます。 結果として、「なんでかわからないけど、気がつくと差がついている」わけです。

例: エラー修正

身近な例を一つ見てみたいと思います。

コーディングしていてエラーに遭遇することはたくさんあると思います。 初めて触るツールやコードを扱う際など、パッと見ただけでは解決できないものもありますよね。

こうしたときにも生産性の差が出てきます。

よくあるやり方は、エラーログを見て原因と思われる箇所をシラミ潰しに変更していくやり方ですね。 こうして、地道ではありますが一つ一つ可能性を潰し、最終的にエラーを解決します。 使い慣れたツールでない場合には、こうやって一つ一つ試していくしかないように思えます。

ただ、生産性の高い人は、エラーログの中身から内部の挙動を推測しているようです。 「大体こういう挙動をしているはずで、このメッセージが出るということはこの辺りだろう」とアタリをつけるそうです。 結果的に試行回数が少ない中でエラーを解決できるそうです。

もちろん、こういったケースで技術力といったスキル面も生産性に影響を与えているとは思いますが、能力的に大差ないエンジニアだとしてもメンタルモデルによって生産性が変わってしまうことがあるわけです。

良いメンタルモデル

労働生産性は人間が行動を起こす根っこの考え方次第で生産性が向上したり逆に低下させてしまったりするわけです。 それでは、どんなメンタルモデルが生産性向上に役立つのか、自分が気になったポイントだけかいつまんでメモっていきます。

挙動や構造の一般化とそれに基づく予測

どうやら、すごいエンジニアであってもわからないことはあるようです。 触れたことがないコードなどは、すぐにはうまく扱えなくて当然ですよね。

ただし、上手い人は未知の事象に関して予想を立てるのが上手だと言います。

おそらく、さまざまなツール等の挙動の例をある程度一般化して記憶しているのでしょう。 そのため、未知の事象が発生しても、類似の例を記憶から引きずり出して来て、「きっとこうだと思う。だからこうすればこうなるはずだ。」という簡単な検証で、頭の中で描いた事象と一致しているかを確認しているんでしょうね。

こうした挙動や構造の一般化とそれに基づく予測を駆使して行動していくというのが、効率よく開発を進めていくには必要なのかもしれませんね。

大事な事以外を切り捨てる

生産性とは、投下したリソースに対する付加価値だと言います。 エンジニアの生産性は、同じ時間内に行った

付加価値は、webサービスを運営する人間であれば、ユーザーが決めることでしょう。 ユーザーにとって価値があるものを正確に見極めて、それ以外のことを潔く「やらない」と割り切る勇気が重要なのかもしれませんね。

よくMVP (Minimum Viable Product)とかに似て、価値の最もある部分にフォーカスして進めているようです。 すごいエンジニアであっても、大事ではない多くのことは潔く諦めているらしいです。

「一番大事な事」だけにフォーカスし、そこにリソースを透過するからこそ大きな生産性が出るのでしょう。

自分にとって大事なことに集中する

いろんな種類の仕事を抱えている人は少なくないと思います。 それらを複数同時進行するマルチタスクは、基本的にはあまり推奨されないようです。

人間は一度に一つのことしかできません。 下手に複数のしかかりタスクを作ろうものなら、気が散って1つのことにすら集中できないのはよくある話ですね。

自分にとって、今一番やらなければいけないことにフォーカスして進めるのが結果として一番生産性が高いのかもしれませんね。

コミュニケーションは短く・簡潔に・素早く

生産性というと、手を動かしてなにかするときのことばかりに目が行きがちですが、我々はコミュニケーションを取りながら生産活動をしているわけです。そのため、情報伝達における伝達効率は生産性に直結している一要素なわけですね。

日本語は本題に入る前に前置き・装飾語が多く入りこむからなのか、ついついコミュニケーションが回りくどくなってしまいがちです。 また、話をまとめようとあれこれ考えているうちに時間が経ってしまうこともあるかもしれません。

コミュニケーションは、相手がほしいであろう情報を短く・完結に・早めに伝えるに限ります。 雑だなんだと怒られたら、そこで初めて反省したら良いんです。

自分の幸せを最優先、それをサポートする環境を作る

自分にとって楽しい事ができているか、モチベーションは生産性に直結します。 モチベーションを維持しつつ、自分自身がありたいように仕事を進めるのが一番です。

その動き方には、マネージャーとICの間の信頼関係が重要になってきます。 ICは目標のために周りの助けを含めたあらゆる手段を使って行動し、マネージャーはそのためのサポートを惜しまない。 マネージャーはゴールを設定したら、細かいやり方はとやかく言わない。

こういった動き方ができるときに、生産性は上がるんでしょうね。

脳みそにいいことを増やす

我々は人間なので、栄養と取らなかったり睡眠を取らずに活動を続けることは困難です。 若いうちに深夜残業をして

よく寝ましょう。栄養のある食べ物を食べましょう。 運動などの生活習慣も、年齢を重ねるごとに健康に影響を与えます。

脳みそに良いこと、体に良いことを増やしましょう。 脳みそのコンディション調整もわれわれの立派な務めというわけです。

参考文献

この記事を書くにあたって、下記の文献を参考にさせていただきました。

感想

話題になっていたので勢いで購入・読んでみた次第です。 「海外のエンジニアってきっとすごいんだろうな」という漠然としたイメージを持った人も多いかと思いますが、本書からちょっとだけリアルにすごいエンジニアの思考を見られた気がします。

一つ、読んでいて気になったのは「周りの人間含めた全員の認識があってないとギスギスしそうだな」ということです。

「米国では〜」 「海外のエンジニアは〜」

といった説明されている一方、本書に書かれている内容を一人で実践するとハレーションを起こしそうだなとも感じました。本書の内容を実践する際には、ぜひともチームや組織の方々を巻き込んで、全員の共通認識としてから実践すると、周りからの理解も得られて実践できるので非常に良いのではないかと思いました。

あとは、本書は「エンジニアの」とタイトルに入っていますが、7章に限ってはぜひともエンジニア以外の方にも読んでいただきたいなと思いました。

組織の生産性を知らず知らずのうちに低下させないためにも、社内のエンジニアの方々が最大限のパフォーマンスを発揮するためにも、ぜひ7章くらいは読んで見ることをおすすめします。

面白い本でした。