牛尾剛 文藝春秋 2023.10.30
読書日:2025.1.15
コンサルタントとして活躍していたものの、どうしても世界的なプログラマーになりたくてマイクロソフトの本社に勤務することになった著者が、世界一流のエンジニアの高い生産性に衝撃を受けたけれど、彼らは天才なのではなくその考え方や取り組み方が違うのだということを発見して、それをまとめたもの。
わしもしかたなくプログラミングをしたことはあるが、プログラミングは好きではない。なので、コンサルタントとして成功しているのにわざわざプログラマーになりたいという著者の気持ちはまったくわからない。しかも牛尾さんは単なるプログラマーではなくて、世界に影響を与えるようなプログラマーになりたがっているのである。そして転職戦略を駆使して、見事マイクロソフトの本社で働くことに成功するのである。なるほど、これは素晴らしい。
いざ入ってみると、同僚のプログラマーの生産性の高さに驚愕するのである。それで、何が違うのかを知りたくて、あるプログラムのバグの箇所を特定する作業を一緒にやってもらった。こういうとき、牛尾さんならログをみて、ああでもないこうでもないと試行錯誤して、原因をさがすという。しかしその同僚はまったくそんなことはしない。ログを見てぶつぶつつぶやいて、1回だけ手を動かして、一発で問題の箇所を特定したのだという。それは驚愕の体験だったという。
いったい彼はどうやったのかと言うと、仮説を立てて、その仮説を証明するにはどうすればいいかを考えて、その操作を行ったのである。手を動かすのは仮説を検証する作業だけで試行錯誤のための操作はしない。そして仮説を作れるようになるためにはなにより基本的な構成の理解が大事で、優秀な人はそこに時間をかけるという。こういう基本的な部分の理解があると、非常に応用範囲が広い。つまり結局は基本が大切なんだということらしい。
ソフトウェアは機械と違って、実際の動作が目に見えない。しかし、彼らは頭の中にプログラムが動いていく様子を脳内でイメージできるようにしているのだという。これをメンタルモデルと呼んでいる。
というわけなのだが、ほとんどのエンジニアの皆さん(ソフトウェア以外のすべてのエンジニアを含む)は、これを読んで困惑しませんでしたか? だって、たとえ分野が違っても、みんなそうやっているよねえ? 違う?
わしは、逆に全体の構成の理解なしに、マニュアルだけ見てマニュアルのとおりにやってきちんと結果を出せる人の方が驚異的に思える。なぜならわしは全体の構成がわからないと、何事もうまくできない人だから。マニュアル通りに操作するということが大変苦手なのだ。たぶんこうなっているに違いない、などと考えて余計なことをしたり、逆に必要ないと判断して省いたりしてしまう。そういうわしのもっとも苦手なタスクは、お役所の手続き。いままで何度役所の人に怒られたことか(苦笑)。
まあ、この辺はエンジニア的なことだけど、他の物事に対応する姿勢というほうが役に立つのでは。たとえば、次のようなことが書かれてある。
・やることを減らすことが大切。そのためには、その時にもっと大切なことを1つだけ選んで、それに集中する。マルチタスクはしない。
・早く失敗することでリスクを減らす。「検討」ではなく、「検証」を早くする。
・持ち帰らずに、その場で解決する。家にも持ち帰らない。
・コミュニケーションはシンプルに。
・仕事を楽しんでいることを重視する。
・定時で帰り、家族との時間を取り、きちんと運動と食事と睡眠時間をとる。
など。
牛尾さんは、本当にプログラマーという仕事が好きなんだそうで、プログラミングができるAIが出てきたときには、自分の仕事がなくなると本気で心配したんだそうです。でもAIが作るプログラミングは結局、いままでよくあるものをまとめているだけで、全く新しいものは生み出せていないことに安堵したんだとか。そして、いまはAIとうまく使うためのプログラムを生み出そうと奮闘しているんだとか。
この本で、一番気に入ったのは、Be lazy という言葉だね。本当にわしは怠惰な人間だからね。
★★★★☆