2024年2月8日木曜日

『世界一流エンジニアの思考法』――ググレカスの日本では難しいこと(だけど諦めてはいけないこと)

『世界一流エンジニアの思考法』

世界一流エンジニアの思考法』(牛尾剛)を読みました。マイクロソフトのシニアエンジニアが書いた生産性を上げるためのコツやマインドについて書かれた本です。

「試行錯誤は悪である」

タイトルからしてすごいですが、筆者は自分を一流と言っているのではなく、一流のエンジニアたちに学びながらどうやって頑張ってるか、という話です。なお著者は若いころにADHDと言われたそうです。

エンジニア(プログラマ)の話なので、編集者とか別の仕事ではそのママ適用できない方法もありましたが、参考になる部分も結構ありました。

冒頭のあたりで参考になったのは、「試行錯誤は悪である」あたり。何か課題に直面したら、とりあえず考え付く方法をどんどんやる、という方法は自分も取りがちだが、著者はそれを否定し、いきなり手を動かさないことだといいます。

それではどうするかというと、まずデータ・事実を一つ見つけていくつかの仮説をたて、その仮説を証明するための行動をするとのこと。

ただこれについては自分でもやっているつもりで、一方で同時に、「すぐに手を動かす」タイプでもあると思っているので、もっと「手を動かす前にすべきこと」にフォーカスしたいと思いました。

生産性を高める頭の使い方

筆者はこの鉄則を踏まえた上で、より生産性を高められる頭の使い方、についても例をもとに考えを述べています。

筆者によれば、マイクロソフトには、各マイクロサービスごとに説明のビデオがあり、見て勉強できるようになっているそうです。ただ筆者はそれを見てもすぐに分からず、「頭のいい人はこういうものを見てすぐに分かるのだろう」とうらやましく思っていたら、そんなことはなく、頭のいい同僚もそのビデオを何度も見て理解を深めていたそうです。

そこから「頭のいい人でも理解には時間がかかる」ものだと指摘。その上で「理解するとはどういうことか」について筆者の意見として3つの要素を挙げています。それは

・その構造をつかんで、人に説明できること
・いつでもどこでも即座に取り出して使えること
・知見を踏まえて応用がきくこと

だそうです。

これはたしかにその通りで、表面的な理解ではなく、本質や構造を理解していれば、本質や構造が同じ別の課題や問題に直面しても、同じ解き方で解決できるし、分かりやすくたとえをつかって(その分野、課題について知らない)誰かに説明することもできるでしょう。

メンタルモデルを作る

筆者のできる同僚たちは、マイクロソフトで扱っているたくさんのマイクロサービスについて、驚くほど細かいところまで仕組みを把握し、記憶しているといい、なぜそれができるのかについて、マネージャからもらったアドバイスを紹介しています。

それは「メンタルモデルをつくるとそれができるようになる」というものでした。そして勧められた書籍が『超一流が実践する思考法を世界中から集めて一冊にまとめてみた。』(SBクリエイティブ)だそうです。

このメンタルモデルとは、人々が世界を理解し、予測し、解釈し、新しい状況に適用するための、自己の心の中のイメージや理論のことだといいます。固定の型があるというより人それぞれだとも書かれています。

要は思考のフレームワーク、ということなのでしょう。

感心した「すぐ誰かに聞け」「締め切りは絶対ではない」

本書を読んでいて感心した点が2つあり、その一つは「分からないことがあったらどんどん聞け」ということ、もう一つは「締め切りは絶対ではない」ということです。いずれも日本の会社、商習慣の中ではタブーとされているように思います。

特に前者は、「ググレカス」という言葉からも分かるとおり、日本ではなんでもかんでも聞くのはよくないと考えます。

これには一定の合理性があって、たとえば聞かれるたびに、聞かれたほうは手を止めて対応しなければいけなくなります。それが重なると、仕事がはかどりません。

この点、アメリカ(マイクロソフト)でどんどん聞くことが推奨されているのは、「都度対応してもらえなくても当然」「対応できるときにすればいい」というドライさがあり、それを認めているからのようです。

つまり、誰かに何かを質問したとして、返事がなくても、それは相手が忙しいのかもしれないから「(返事がなくて)当然」と受け止めるし、聞かれたほうも「聞かれたらすぐ返さなきゃ」と考えずに、優先順位をつけて返せるときに返す、と割り切っている。そういう環境があってこそ成り立つのだろうと思います。

この方法について筆者は、「メンバーのレベルが高いからでしょと言われるが、そんなことはない」と述べています。

たしかにそうしたドライさは日本よりもアメリカなど外国のほうがありそうな気がします。

ただ、そうはいっても日本がそうなる(どんどん聞くのOKになる)のは難しいでしょう。

日本では新卒一括採用がまだ主流で、大学で学んできたことを会社ですぐに生かして働けるという環境になく、ジョブ型の雇用でもありません。新人・新入社員は研修もそこそこに現場に配置されるので、戦力にならないどころか、(上司や同僚が)彼・彼女らの質問にすべてこたえていたら、とてもではないけど時間が足りなくなってしまうと思います。

もう一つの驚きだった「締め切りは絶対ではない」という点は、マイクロソフトくらい大きな、世界中で使われているサービスを作っていると、締め切りを厳守することで生じる弊害(ちょっとしたミスや不都合の隠蔽など)が致命的な影響を与えてしまう会社だからこそ大切にされている考え方なのかもしれません。

ただ、だからといって「それはマイクロソフトだからできるんでしょ(ウチの会社はそんな余裕ないですから)」と決めつけるのもよくないと思います。

締め切りは守るものだが、”何を置いても、何を犠牲にしても守らなければいけいない絶対的な存在ではない”ということなのでしょう。

こうした考え方は、日本でも広めるべきではないでしょうか。

このほかに参考になった箇所

ここまで紹介した箇所以外にも、いろいろと参考になる考え方、姿勢が紹介されていたので、それぞれポイントだけ列記しておきたいと思います。

  • 日本式の「結果を出す」とインターナショナルの「バリューを出す」は似ているようでまったく違う
  • KPIは定時で楽に達成できる程度のものであるべき
  • アウトカムに集中すると、一時的にはよくても中長期の「生産性」は上がらない
  • マルチタスクは「生産性が40%低下」「仕事を終えるまでにかかる時間が50%増加」「ミスの発生率が50%増加」するのでやらない
  • 対クライアントでも社内でのやり取りでも「脳の負荷を減らす」端的なコミュニケーションが好まれる たくさん情報があっても「消化しきれないだろう?」という感覚
  • オリンピック選手にも必ずコーチがいる。誰だってヒトは、過去に経験がある人から学んでいく
  • 日本の産業は根本的に「ソフトウェア」を甘く見てきた
  • 世界中でハッカソンをする中で、何十ヵ国もの人が集まる中で、自分でコードを書かないのは日本だけだった
  • プログラミング」を低レベルの人がやることと見なして外出し始めたことが、日本の大手SIer衰退の分岐点になった

AI時代をどう生き残るか

このほかにも、ChatGPTを代表されるAIの時代が到来している中で、どうやって生き残っていくのか、についても言及されている。

筆者は、要は専門性を高めるということだと指摘しています。

たとえば、誰もやったことのないものに取り組んでいる専門家は、AIがとって変わることは原理的にあり得ないと。それは確かにその通り。誰もやったことがないことは、AIが食うデータがないからです。

そして、たとえAIが今ないようなソフトウェアを作れるようになっても、人間の手によるインテグレーションが必要だとも指摘しています。

どんな分野であっても、どんな時代であっても、自分なりに専門性を高め、筆者の友人のジェフがいうように、

「仕事がもはや面白くなくなったら、そのときは何か新しくて挑戦的なものを探すだけ」

という姿勢が正しいのでしょう。