マイクロソフトで優秀なプログラマたちと働く中で得た、世界一流プログラマの思考法や生活習慣をまとめた一冊。数ある教訓の中でも、とくに意外性があり、今後の自分の仕事に取り入れていきたいと感じたものを取り上げる。
この本で得られる学び
- 世界一流プログラマと働く中で得た3つの教訓
- 思考錯誤は悪
- 頭が良くても「理解」には時間がかかる
- 「Be Lazy」というマインドセット
- 仕事と人生の質を高める3つの生活習慣
- 理解・記憶・反復
- 完了ステータスにする
- エネルギー不足を解消する
世界一流プログラマと働く中で得た3つの教訓
試行錯誤は悪
うまくいかないとき、人はつい、思いつくままに手を動かして試したくなるものだ。著者もその一人だった。しかし、著者の同僚ポール(著者が「人生で出会った中で最も賢い男」と評する人物で、作業が高速かつ丁寧、問題解決能力が高く、複数の論文も執筆している。)は違った。
あるとき、著者とポールがシステムの不具合に対処していた。そのとき、ポールがとった行動は、著者とは真逆だった。彼は最初のログを一つだけ確認し、そこから仮説を立て始めた。そして、手は一切動かさず、こうつぶやいた。
「このログが出ているということは、自分の推測では、内部でこういうことが起こっている可能性が非常に高い。そこを鑑みると、調べるべきは …… 」
そう言いながらデータベース閲覧ツールを立ち上げ、クエリを一つだけ書き込んだ。結果、そのクエリが示したのは、まさに著者のプログラムの根本原因だった。ポールが手を動かしたのは、その一度きり。著者なら、クエリをいくつも試し、コードを何度も見直し、数時間はかかったであろう問題を、彼は魔法のように一瞬で解いてみせた。
このアプローチには明確な流れがある。まずは事実(データ)を一つ見つける。そこから複数の仮説を立て、それを検証するための最小限の行動をとる。やみくもに手当たり次第試すのではなく、仮説駆動で一点突破することで、時間と労力のロスを徹底的に排除する。まさに、「思いつきによる試行錯誤は悪」なのだ。
この考え方は極めて重要だ。仕事でもプライベートでも、限られた時間とリソースの中で成果を出さなければならない場面は多い。そんなとき、やったほうがよさそうなこと、試すべきに見えることは無限にある。そのなかで、一度立ち止まり、「本当に成果に寄与するのはどれか?」と深く考えることが、最大の成果を最小のコストで得るためのカギとなる。
頭がよくても「理解」には時間がかかる
著者のチームには、とても賢い2人の開発メンバーがいた。誰が見ても優秀とわかる彼らですら、チームの複雑なアーキテクチャを理解するために、説明ビデオを10回以上繰り返し見たというエピソードが紹介されている。賢い人なら一度で理解できそうなものだが、実際には違った。
どんなに頭がいい人でも、理解には時間がかかる。彼らが理解が早いように見えるのは、地道に時間をかけて基礎を積み重ねてきたからにすぎない。すでに自分の頭の中にある知識に新しい情報をうまく「接続」できるため、理解しているように見えるだけだ。つまり、彼らの頭には既存の理解に裏打ちされたコンテキストが載っている。
そして、理解に時間をかけることで、むしろ生産性は上がるという。本質を理解していないと、その場しのぎの対応に終始し、結果的に非効率になる。だからこそ、「理解は時間がかかるもの」と受け入れ、急がず徹底的に理解する習慣を身につけることで、むしろ最終的な生産性が向上する。
著者は、理解の深さの目安として以下の3つを挙げている。
- 人に説明できること
- いつでも取り出して利用できること
- 応用できること
この観点は非常に重要だ。人の処理能力には実はそれほど大きな差はない。差が出るとすれば、それはどれだけ丁寧に時間をかけて理解しているかどうか、ただそれだけだ。焦ってアウトカムを出すよりも、本質的な理解に腰を据えて取り組んだ方が、結果的に長い目で見て生産性は高くなる。
「Be Lazy」というマインドセット
「Be Lazy(怠惰であれ)」——これは一見するとネガティブに聞こえるが、実は「より少ない時間で価値を最大化するという考え方」であり、極めて合理的なマインドセットである。つまり、できるだけ最小の労力で最大の成果を出すにはどうすればよいかを常に考えよう、という姿勢のことだ。
著者は、このBe Lazyを実践するための具体的な習慣をいくつか挙げている。
- 望んでいる結果を達成するために、最低限の努力をする
- 不必要なものや付加価値のない仕事(過剰準備含む)をなくす
- 簡潔さを目指す
- 優先順位をつける
- 時間や費やした努力より、アウトプットと生産性に重点を置く
- 長時間労働を避ける
- 会議は会議の時間内で効率的かつ生産的に価値を提供する
このアプローチの肝は、「最初の1個をピックアップしてやったら他はやらない。その一つにフォーカスしよう」という感覚にある。何でもかんでも全部やろうとするのではなく、自分のキャパシティを正確に把握し、その中で最も価値が高いことにリソースを集中する。日本人のように「あれもこれもやらなければ」と思いがちなマインドとは対照的だ。
ここで思い出されるのが〈2-8の法則〉である。20%の仕事が80%の価値を生むなら、その20%に集中するのが最も効率的だ。逆に、すべてを100%こなそうとすると、工数は増え、時間も足りなくなる。著者は実際に、海外のチームメンバーを観察してこう記している。
20%のタスクを終えて80%の価値を出したら、残りの80%には手をつけずに、次の20%の新しいタスクに取りかかる。すると、合計で40%の工数しか使っていないのに、160%の価値を生むことができる。ざっくりとしたイメージではあるが、彼らが無理なく高い生産性を維持している理由はまさにここにある。
つまり、生産性を上げるためには、「量をこなす」よりも「少なくて価値の高いものを選び抜く力」が重要になる。そして、そのための努力を惜しまないこと——それこそが、真の意味でのBe Lazyなのだ。
仕事と人生の質を高める3つの生活習慣
理解・記憶・反復
著者の同僚やマネージャは、何年も前に書いたコードについても、質問すればすぐにレスポンスをくれる。オンライン会議でも、コードやアーキテクチャについてスムーズに議論を進められる。対して自分は、つい先日書いたPull Requestの内容すら、すっと思い出せないことが多い。この違いは何なのか。突き詰めて考えたとき、ふと著者の頭に浮かんだのは、「もしかすると、これも理解の浅さが原因じゃないだろうか?」ということだった。
つまり、アドリブでうまく説明できない、ディテールを覚えていない、というのは、単に記憶力が悪いのではなく、そもそも本質的に理解ができていないからではないかということだ。そこで著者は、時間を気にせず、自分のやったことをクリアに説明できるよう、丁寧に言語化してみることにした。
すると、あちこちから疑問が湧いてきた。
「あれ、俺なんでこここうしたんだっけ?」
「ここって、他の実装でもいけないかな?」
「この部分って、こういうペイロードが来たら破綻するのでは?」
結果的にコードを大きく書き換える必要はなかったが、説明のためにコードを見直して整理し直す過程で、「動いてはいるけど理解できていない」箇所をいくつも発見できた。説明できる状態にするというのは、構造をきちんと把握し、脳のメモリにしっかりと乗せることを意味する。
記憶にとって効果的な方法は、じつはとてもシンプルで、「思い出そうと頑張る」ことだ。著者はもともと記憶することが苦手だったが、このポイントを理解してから、記憶力が大きく改善されたという。
例えば歌の歌詞を覚える場合、今までは何度も繰り返し書いたり聴いたりしてもなかなか覚えられなかった。ところが、「少しずつ思い出す」ことを意識してみた。何度か聞いたあと、最初の小節を思い出すようにしてみる。それができたら次も思い出す、というように、一気にではなく、段階的に記憶を呼び起こす。そうすると、以前はまったく覚えられなかったのに、今では1日で歌詞を暗記できるようになった。
理解し、思い出し、繰り返す——このサイクルが、記憶力を高め、ひいてはアウトプットの質を大きく底上げしてくれるのだ。
完了ステータスにする
著者はADHD傾向があり、常に思考が乱れてまとまりにくく、家も仕事も未完了のタスクであふれ、頭の中が混乱していたという。そんな中で、ハーバード大学の研究「幸せが先にあり、成功はその結果である」という考え方に触れ、「ポジティブな状態をつくるためにまず掃除をしてみよう」とひらめく。
最初に机の周りだけを片づけると、不思議なことに思考がすっきり整理されていった。そして気づいたのは、部屋が散らかっているのは「完了」していない行動の連続が原因だということ。洗濯も、郵便物も、食事も、すべてが「途中」で止まり、頭のリソースを奪っていた。
そこで著者は、すべての行動を「完了」までやりきるよう意識を変えた。飲んだカップをすぐ洗う、郵便物を開封して処理まで行う––そうした小さな完了の積み重ねが、やがて「完了しないと気持ち悪い」という感覚につながっていった。
結果、部屋は自然と片づき、仕事でも「整理され、すぐに取り出せる状態」にすることをゴールにするようになった。著者は、ADHDだから整理できなかったのではなく、整理されていなかったからADHD的な症状が強まっていたのではないか、と考えるようになった。
未完了のタスクは、些細なことでも頭の片隅に居座り続ける。表面的には忘れているつもりでも、脳のリソースは常にその存在に引っ張られているのだ。気が散りやすくなったり、目の前の作業に集中できなかったりする原因にもなる。放置されたタスクが積み重なるほど、心の中にノイズが増え、判断力や思考力にも悪影響を及ぼす。
「完了ステータス」にすることで、脳はそのタスクを処理済みと認識し、頭の中のモヤモヤが減り、集中力や判断力が回復しやすくなる。結果として、日々の作業効率や精神的な安定感も大きく向上するのだ。
エネルギー不足を解消する
著者は、やる気や活気が著しく低下した時期があった。これは男性の更年期障害のような不調によるものだ。それに対し、運動とテストステロンを増やすことが有効だったという。
運動を高プライオリティにする
著者は以下に記載した有酸素運動を優先的に行い、負荷は低めに調整しつつ、無理なく継続することで気力の低下が改善された。また運動習慣を続けた結果、体力不足に起因する心身の重さも解消され、メンタル面が大きく向上したという。
・毎日30分有酸素系を含む運動をする。
・低負荷でよい(ウォーキングもOK)。
・ランニングしている場合、つらくなったらすぐ歩く。
・毎日30分の運動をすべてのことに対して最優先とする。
3カ月後の変化は劇的だった。土日に起き上がれなくてだらだら漫画を読んだりしていたが、どうにも心身が重い …… という状態は「体力のなさ」に起因していた。毎朝30分の有酸素運動だけで、大きくメンタル面が改善されたのだ。気合でもやる気の問題でもなく、物理的な「エネルギー量」の問題だった。毎日30分の身体への投資は、必ず行うことをおすすめしたい。
テストステロンを増やす
テストステロンが増えると、抑うつやイライラ、不眠といった更年期特有の症状から解放されやすくなり集中力や記憶力の向上にも役立つという。
食事では、肉類や玉ねぎ、加熱したニンニク、牡蠣やレバーなどテストステロンを増やす食品を積極的に摂るとよい。サプリではテストステロンブースターも効果的。
注射やパッチでのテストステロン補充は即効性が高く、特にパッチは持続効果が強い。運動と組み合わせるとさらに効果的だ。
コメント