世界一流エンジニアの思考法
概要
Microsoft(米国本社)に勤務するシニアエンジニア・牛尾 剛が、日本のエンジニア文化と国際チームの働き方の違いを観察し、「世界一流エンジニアの思考法」を体系化した書籍。Be Lazy・WIP=1・Fail Fast・自己組織チームなど、欧米のモダン開発文化の本質を日本語で解説している。
主要ハイライト
仮説駆動アプローチ
事実(データ)を一つ見つける→いくつかの仮説を立てる→その仮説を証明するための行動をとる。
理解の3要素
「理解」には3つの要素がある:
- その構造をつかんで、人に説明できること
- いつでもどこでも即座に取り出して使えること
- 知見を踏まえて応用がきくこと
デザインドキュメント先行
手を動かす前にDesign documentを最初に書く。
(1) 書くことで自分の頭が整理され、抜け落ちた視点に気づく
(2) 考えながら書けば自動的にドキュメントになり、後でまとめる手間が省ける
2時間ルール
一つのことで2時間以上ブロックされたなら、質問するなり相談するなりして寝かせておいて、他の仕事をやっておく方が断然生産性が高い。
Be Lazy
- 望んでいる結果を達成するために、最低限の努力をする
- 不必要なものや付加価値のない仕事(過剰準備含む)をなくす
- 簡潔さを目指す
- 優先順位をつける
- 時間や費やした努力より、アウトプットと生産性に重点を置く
- 長時間労働しないように推奨する
- 会議は会議の時間内で効率的かつ生産的に価値を提供する
2-8の法則(パレートの法則)
20%の仕事が80%の価値を生む。20%のタスクを終えて80%の価値を出したら、残りの80%はやらずに、次の80%の価値を生む20%の新しいタスクに取り組む。
実践4原則:
- 一つだけピックアップする(最初の1件から)
- 時間を固定して、できることを最大化する
- 「準備」「持ち帰り」をやめてその場で解決する(会議の場だけで完結)
- 物理的にやることを減らす(何をやらないかを決める)
Fail Fast(早期失敗)
リスクを受け入れる文化:
- 間違いを厳しく批判したり懲罰したりしない
- 失敗から学ぶ態度
- 実験が推奨されている
- 非難や恐怖感のない環境
検討ばかりして、さっさと「やらない」ことのほうが最大のリスク。
不確実性を受け入れる(アジャイルマネジメント)
モダンな開発マネジメントの要素:
- 詳細まで細かく練られた計画を期待しない
- 内部プロセスは計画や優先順位の変更に柔軟
- 事前に全問題分析が完了せずとも新しいことに挑戦する
- 学びに基づいて、変化を精力的に行う
実践3原則:
- 「楽に達成できる」計画で仕事をする
- 「無理・断る」練習をする
- 他の文化の視点を学んでみる
QCDSトレードオフ
Q(品質)C(コスト)D(納期)+S(スコープ)は、トレードオフの関係にある。
バリューストリームマッピング
現在の開発プロセスを「見える化」して改善ポイントを見つけ、リードタイムを短縮するツール。
フィーチャーフラグ
実際の機能を実装済みにしつつ、公開スイッチを持ち、特定ユーザーにのみ公開→全体公開と段階的に展開できる仕組み。Azure・Windows等で広く使用。
仕事の難易度レベル分類
- レベル1: 何もググらずに即座に実装できるもの
- レベル2: 解法はすぐ思いつくが具体的方法はググる必要があるもの
- レベル3: 解法を知らないが、スパイクソリューションをしたらできそうなもの
- レベル4: 自分だけでは解決が難しい、もしくは非常に時間がかかるもの
WIP=1(シングルタスク集中)
WIP(Work In Progress)を1に限定する。一つのことをやっているときは、他のことは一切せず集中する。
実践ポイント:
- 30分〜1時間を割り当てたら、そのことのみに取り組む
- すぐ終わらないものは人に問い合わせて待ち状態にし、次のタスクに進む
- タスクを中断する場合、すぐに再開できるよう記録・整理する
- タスクの残骸は消しておく(ブラウザのタブを閉じるなど)
コーネルメソッド
アウトプットを意識した3エリア構成のノート術:
- ノート(後から思い出しながら要点を記録)
- キュー(学んだことにつながる質問を書く)
- サマリー(後日振り返り時に要約を書く)
自己組織チーム
3つの特徴:
- 生産性が高い
- チームのエンゲージメント(満足度)が高い
- よりよいソリューションが選択されやすい
タスク割り振りはチームが自ら行い、メンバー各自がやりたい仕事を選択。楽しんでいるかが重視される。
→ 自己組織チーム
バックログ主導(納期なし開発)
納期の代わりに:
- バックログ(今後やるべきことリスト)
- 戦略とカスタマーフィードバックに基づく粗い粒度の計画
目標設定においては進捗状況でなく「やってみてどうだったか・改善ポイント・ベストプラクティス」が問われる。学びのシェアこそがバリュー。
Agree to Disagree
「どちらが正しいか」ではなく、「相手のことを理解して認める力」。意見に賛同するかどうかではなく、相手の立場を理解すること。(日本マイクロソフト エバンジェリズムトップ・伊藤かつら氏から)
関連概念
- Be Lazy原則(最小努力・最大価値)
- WIP=1(集中作業原則)
- Fail Fast(早期失敗)
- 理解の3要素(牛尾剛)
- デザインドキュメント先行アプローチ
- QCDSトレードオフ
- フィーチャーフラグ
- 自己組織チーム
- コーネルメソッド(ノート術)
- AI駆動開発ベストプラクティス
- 技術者の学習習慣(エンジニア勉強法)
- エンゲージメント(従業員)