🎃

How World-Class Engineers Think 世界一流エンジニアの思考法 読書ノート

2024/11/20に公開

目次

はじめに
第1章 世界一流エンジニアは何が違うのだろう?―生産性の高さの秘密
第2章 アメリカで見つけたマインドセット―日本にいるときには気づかなかったこと
第3章 脳に余裕を生む情報整理・記憶術―ガチで才能のある同僚たちの極意
第4章 コミュニケーションの極意―伝え方・聞き方・ディスカッション
第5章 生産性を高めるチームビルディング―「サーバントリーダーシップ」「自己組織型チーム」へ
第6章 仕事と人生の質を高める生活習慣術―「タイムボックス」制から身体づくりまで
第7章 AI時代をどう生き残るか?―変化に即応する力と脱「批判文化」のすすめ
あとがき

本編

第1章 世界一流エンジニアは何が違うのだろう?―生産性の高さの秘密

  1. 試行錯誤は「悪」である
    • 単に思いつきでいろいろなパターンを試して正解を探しているだけなので、とても時間がかかる上、新しい知識を何も学んでいない
    • 手を動かす前に仮説を検証する
      • 情報収集(データ集め)-> 仮説を立てる -> 仮説の検証(不十分なら戻って再度仮説を考える) -> 実行(手を動かす)
  2. 「理解に時間をかける」を実践する
    • 「理解は時間がかかるもの」として、急がず、徹底的に理解する習慣をつけていく
  3. 複雑な技術をコントロールできている感覚を得る
  4. 「感覚」で判断せずファクトを積み重ねる
    • 自分でログなどを検証して問題解決をするようにしないと「思い込み」の穴に落ちてしまう
  5. 小さなドキュメントをコードの前に書く
  6. 頭の中に「メンタルモデル」をつくる
  7. まずエキスパートに頼る
    • 一つはのことで2時間以上ブロックされたなら、質問するなり相談するなりして、寝かせておいて、他の仕事をやっておく方が断然生産性が高い
    • 既存システムがある場合は、あれこれ考えて調べる前に、まず「エキスパートに頼る」というのはベストプラクティスだと思う
  8. 「偉大な習慣を身につけたプログラム」になる
    • どんな人でも、最初は難しく、理解には時間がかかる
    • 自分が仕事をコントロールできているという感覚、何かわからないことがあっても「自分ならやれる」と思える感覚
    • 「私は偉大なプログラムではなく、偉大な習慣を身につけたプログラマだ」

第2章 アメリカで見つけたマインドセット―日本にいるときには気づかなかったこと

  1. 「Be Lazy」
  2. リスクや間違いを快く受け入れる
    • 間違いを厳しく批判したり懲罰したりしない
    • 失敗から学ぶ態度
    • Fail Fast(try -> fail -> feedback -> update -> try -> ... )
    • 実験が推奨されている
    • 全員に「現状維持」や「標準」を要求せず、臨機応変が推奨される
    • 非難や恐怖感のない環境
  3. 「思考回路」を形づくる実践
    • 「楽に達成できる」計画で仕事をする
    • 「無理・断る」練習をする
    • 他の文化の視点を学んでみる
  4. 「結果を出す」から「バリューを出す」へ

第3章 脳に余裕を生む情報整理・記憶術―ガチで才能のある同僚たちの極意

  1. コールドリーディングのコツは極力コードを読まないこと
    • 他のデベロッパーのことを信頼して、実装はちゃんと動くものとする
  2. いかに脳みその負荷を減らすか
    • コードを読むのは本当に必要なことは部分(クラスの役割やパターン、IFの理解)で十分
    • 読むことを減らして、脳に余裕を生む
    • 人が「自分にとって難しすぎる」と感じるものには2つのケースがある
      • 自分の基礎的が学力が足りていないもの
      • 自分が無理やりなやり方をしているケースだ
  3. 仕事の難易度別で考える
    • Level1 何にもググらす即実装できる
    • Level2 ググれば解決できる
    • Level3 スパイクソリューションがあれば何とかなる
    • Level4 自分では無理
  4. 「アウトカム」至上主義が上達を阻害する
  5. 一日4時間は自分だけの時間を確保する
    • 集中する時間を意識的につくり出す必要がある
    • There is no magic. It's ok to book your time
    • 大前研一氏は何かを変えたいときは、「住むところ」「付き合う人」「時間配分」のいずれかを変えるべきで、それ以外は意味がないという考察をしていた
  6. 「書く」すすめ
    • 人に説明可能な状態にもっていく訓練として最良の手段の一つは、ブログを書いてみることだ
    • 「コーネルメソッド」
  7. 頭の中のみで整理する
    • ミーティングの議事をその場で書かない。メモ程度ならOK
    • 人の話を聞くときは、他の人に説明することを想定して、聞きながら頭の中で整理する
    • 文章を書き出して考えるのではなく、頭の中で考えて、完全に整理し終えてから文章に書く

第4章 コミュニケーションの極意―伝え方・聞き方・ディスカッション

  1. 「情報量を減らす」大切さ
    • 最初から全部説明せず、「情報量を減らす」コミュニケーションの仕方がすごく重要
    • 「その場で吸収できることを最大化したい」というスタンスだ
      • 複雑なものを一気に提供されてもその場で理解しきれないので、単純にリアルタイムに理解できる適切な情報量が好まれる
  2. 準備は効く―伝え方のコツ
    • 情報を最小にし、「簡単なこと」をしっかり説明する。理解してもらうことに丁寧に時間をかける
  3. 相手が求めている情報への感度を研ぎ澄ます
    • 日頃から人に伝えることを前提とした準備をしておくと、なにか聞かれたさいの工数削減
  4. コードを「読み物」として扱う
  5. ミスコミュニケーションのサイン
  6. クイックコールのすすめ
    • 自分にその分野の「メンタルモデル」や「コンテキスト」がなければ、すぐさまエキスパートに聞いたほうがよい
    • 最初にコンテキストをエキスパートから得られると、かなりショートカットして物事ができるようになる
  7. クィックコールされる側もよいことがある
    • リプロ(ソフトウェアの問題の再現)に時間をかけたことで、自分が知らない分野を体験することができる
    • 「自分が知っているか」に焦点を当てて、学びの機会にしている
  8. 気軽に聞ける空気の大切さ
    • 「気軽に聞ける仕組み」は、「気軽に断れる空気」とセットになっている
    • 助けになれない場合は、すぐに「ごめん」でクールに済ませたほうが、聞く方も聞かれる方も気が楽なのだ
  9. ディスカッションで鍛えられること
    • 自分の知らないことを恥じない、知らないことは進んで聞くという精神。
    • その場でフィードバックがあるディスカッションは、短い時間で相当高い知識と理解を深めることができる
    • ディスカッションは「どちらが正しいか」はどうでもよく、「自分の考えを自分なりに深めるための行為」なので、初心者こそやったほうがいい
    • 「間違えたら恥ずかしい」という感覚は一切捨てること
    • どちらが正しいとか間違っているとか、意見に賛同する・しないではなく、「相手のことを理解して認める力」
  10. 意見が対立しても「否定しない」
    • 相手のことを理解して、尊重する
    • 感謝の気持ちを忘れない
    • 楽しんだもの勝ち
    • 切り出し方は「自分の意見では~」

第5章 生産性を高めるチームビルディング―「サーバントリーダーシップ」「自己組織型チーム」へ

  1. サーバントリーダーシップ
    • メンバーが主体で動き、マネージャは彼らの障害を取り除く役割
    • 現場のメンバーがかなりの権限を与えられて、どう実行するかを各自で考えている
    • ソフトウェアの技術者は「専門家」として敬意を払われ、重宝される
  2. 自己組織チーム/フィーチャーチーム
    • 生産性が高い
    • チームのエンゲージメント(満足度)が高い
    • よりよいソリューションが選択されやすい
  3. 「仕事を楽しんでいるか」を確認する文化
    • 「ツヨシ、仕事をエンジョィしているか?」
    • いかにメンバーたちが幸せに働けるかに高い関心を寄せ、エンパワーしてくれるのだ
    • 「仕事は楽しむもの」というカルチャーがあるのだ
    • 「できるもの」として大人扱いすると、周囲の助けを借りつつきちんとやれるのだ
  4. 納期がなく、マネージャも急かさない
    • バックログ(今後やるべきことリスト)と、大きな予定だけはある
    • 一度仕事を割り振ったら(あるいは引き受けた人がいれば)、あとはもう信頼するしかしない
    • 仕事で「辛さに耐える」という発想が全くない。前提として、みんな「自分」が一番大切で、自分の幸せを第一に考えている
    • 「決してその人自身を否定しない」
  5. 自己組織チームをいかに導入するか
    • トップ層
    • ミドル層
    • チームメンバー
  6. チームの上下関係をなくす
  7. 失敗に寛容な職場がチャレンジ精神を生む
  8. 「Be Lazy」を推奨し、休暇を尊重する
  9. チームにパワーを持たせることの価値
    • できる人たちにのびのびとパフォーマンスを発揮してほしかったら、何よりもチームメンバーが「仕事を楽しめる」環境をつくること

第6章 仕事と人生の質を高める生活習慣術―「タイムボックス」制から身体づくりまで

  1. 同僚たちのワークライフバランス
    • 各自が自由に勤務形態を選べるので、ライフスタイルに合わせてみんな違う働き方をしている
  2. 生産性を上げたければ定時上がりが効率が良い
  3. 「タイムボックス」制で、学習の時間を確保する
  4. 「脳の酷使を止める」三つの工夫
    • 瞑想をする(マインドフルネス)
      • 深く脳を休ませることができる
    • ディスプレイから意識的に離れる
    • しっかり睡眠時間をとる
      • 脳を十分に休ませることは、生産性を上げるための絶対条件
  5. 違うことをするのがリフレッシュに
    • 『TimeOff』(John Fitch & Max Frenzel著)
      • 水泳をするときに、息継ぎせずに泳ぐことはできない
      • 発想のブレークスルーは、その仕事をしていないときに発生する
      • 一日に一つのことに集中できるのは4時間。4時間過ぎて疲れたら、単に休むのではなく、違うことをするのが良い
      • 休息する(Take a rest)のは、何もしないことではなく、いつもと違うことをするのが重要
  6. 掃除で「人生をコントロールする感覚」を取り戻す
    • 「幸せが、人の成功の指標となる重大な結果に先行する」
    • 何かをしたら必ず完了まで一気にやるように意識した
  7. 整理の技術
    • コンピューターの整理のポイントは、「必要な物をいかに簡単に取り出せるか」に尽きる
  8. 物理的なエネルギー不足をどう解消するか
    • しんどかったら歩いて「心地よい」感覚だけを残すようにした
    • 毎日30分の身体への投資は、必ず行うことをおすすめしたい
  9. テストステロンを意識的に増やす
    • テストステロンが高まると、抑うつやイライラや不眠のような更年期特有の症状からも解放されやすい
    • 集中力や記憶力の向上にも役立つ

第7章 AI時代をどう生き残るか?―変化に即応する力と脱「批判文化」のすすめ

  1. AIと過去のテクノロジーの違い
  2. どんな職業ならAIに食われないだろう?
  3. ChatGPTがやってきたときアメリカで起こっていたこと
    • だた漠然と怖がったり嫌ったりして、「禁止」や「排除」をしてしまうほうがよっぽど危険
  4. AI時代には「専門性」こそが強みとなる
  5. 日米のエンジニアを取り巻く文化の違い
    • 日本にとって致命的な足かせになりかねない独特の「批判文化」
  6. 「批判」の文化がすべてをぶち壊しにする
    • どんなシステムにもバグはつきもので、改善していくしかない
    • 「開発者の心を砕いてしまう」批判文化
      • この異常な完璧主義、先陣を切って何かにトライする人に対する嫉妬にも似た口さがない批判、冷笑、中傷が、新しいことへのチャレンジ精神を根本的に奪い続けてきた
    • アメリカには「コントリビュート」する文化。Contribute「貢献する」
      • 公共性をベースに考える
    • 失敗しても現場の心が砕かれない文化的素地
  7. コントリビュートと感謝のループ
    • フィードバックはほぼすべて「つくってくれてありがとう」「助かった!」といったポジティブな言葉ばかり
    • 批判ではなく、ポジティブフィードバックで現場の心が満たされるような好循環が生まれたら、間違いなく日本の生産性は抜本的に変わるだろう
  8. 日本再生への道すじ
    • ソフトウェアの技術者を専門家として大切に扱い、彼らが働きやすい職場環境へと刷新して行くこと
  9. 自分の人生は自分でコントロールする
    • どうやったら自分の人生が幸せになるかを主体的に考えて、仕事の仕方を「選択」している
    • 「自分の人生や幸せに責任をもって、自分でコントロールする」というマインドセット

あとがき

  • 仕事の枷となるものを一つひとつ荷下ろししていったときに、驚くほど脳にスペースが生まれ、心身は楽になって、仕事は飛躍する

Discussion