📖
「世界一流エンジニアの思考法」の要約(+感想)
概要
- マイクロソフトのシニアエンジニアである牛尾 剛さまの著書「世界一流エンジニアの思考法」を若手エンジニア(4年目)が自分なりに要約しました。
- 重要だと感じた点、明日から実践・意識したい点をまとめました。
- 自分なりの解釈・感想も含まれていますので、温かい目でご覧いただけると幸いです。
内容
第一章 世界一流エンジニアは何が違うのだろう
- 試行錯誤は悪である
- 事実(データを見つける)→仮説を立てる→その仮説を証明するために行動する
- 著者も述べていたが、私もとりあえず思いつきでエラーの原因を探しまくる癖がある。
- これでは時間がかかる上、新しい知識が身につかないので常に思考しながら、問題解決に取り組む
- 著者も述べていたが、私もとりあえず思いつきでエラーの原因を探しまくる癖がある。
- 事実(データを見つける)→仮説を立てる→その仮説を証明するために行動する
- 頭が良くても理解には時間がかかる
- 最初はどんなに優秀な人でも理解には時間がかかる。この過程を疎かにすると、かえって生産性が下がってしまう。
- 「理解は時間がかかるもの」として急がず、徹底的に理解する習慣を作る
- これを行うことで複雑な技術をコントロールできる感覚を得る
- 頭の中にメンタルモデルを作る
- メンタルモデルとは、人が世界を理解し、予測し、解釈し、新しい状況に適応するための自己の心の中のイメージや理論
- メンタルモデルを作ることで自分の中での理解度や対象への解像度が上がる
- メンタルモデルとは、人が世界を理解し、予測し、解釈し、新しい状況に適応するための自己の心の中のイメージや理論
第二章 アメリカで見つけたマインドセット
-
「Be lazy」(怠惰であれ)というマインドセット
- 「Be lazy」はより少ない時間で価値を最大化する考え方
- 1つだけピックアップする
一番重要なことだけにフォーカスして他はやらない
優先度を決めても最優先のものが5個以上あっては優先度を決められていないと同じである。真にやることを見極めバリューを最大化させよう。 - 時間を固定化しやれることを最大化する
時間内でやれることにフォーカスして、確実にできる数に絞って最大の成果を出すことに集中する - 「準備」「持ち帰り」をやめてその場で解決する
会議の時間だけで完結させることが会議の価値を最大化させる。
あとで資料修正するのではなくその場で、宿題や事前準備はできるだけ無しにする。 - 物理的にやることを減らす
- 1つだけピックアップする
- 「Be lazy」はより少ない時間で価値を最大化する考え方
-
リスクや間違いを快く受け入れる
- fail fast
- やってみて早くフィードバックを受けて早く間違いを修正していく
- 挑戦→失敗→フィードバック→修正→挑戦・・・このサイクルが速いほど価値がある
- 検討ばかりしてさっさとやらないことが最大のリスク
- 挑戦→失敗→フィードバック→修正→挑戦・・・このサイクルが速いほど価値がある
- やってみて早くフィードバックを受けて早く間違いを修正していく
- 失敗を受け入れる具体的な実践方法
- フィードバックを歓迎するムードを作る
- 挑戦して何かしらのFBを受けたことが最大のメリット
- 「検討」をやめて「検証」する
- 時間をかけて検討することをやめて、検証からFBを得るようにしよう
- 会社の意思決定などにかけた時間は顧客にとっては価値なし
- 早く失敗できるように考える
- 失敗することに価値がある
- フィードバックを歓迎するムードを作る
- fail fast
-
不確実性を受け入れる
- 納期は絶対の腐敗神話は捨てよう
- QCD+S(スコープ)はトレードオフの関係
- 進捗の実績だけで状況を判断し、納期を固定したままスコープを出し入れする
- 納期が遅れることでインパクトがない場合は品質を優先する(マイクロソフト)
- 無理をさせてエンジニアの体調が崩れることの方が中期的にデメリット
- デットラインが動かせない時は、早く動くしかない
- 納期が遅れることでインパクトがない場合は品質を優先する(マイクロソフト)
- リリースしなければならない3つの機能がある場合は、順に着手するのではなく、それぞれをシンプルにする
- バリューストリームマッピングで見えるかする
- どこにどれくらい時間がかかっていて、どのような短縮を見込めるか。シンプルに図解してマネージャーに提出しよう。(細かい図解はいらない)。メリットが見込めていれば大抵は賛同される。
- 計画の変更は悪ではない。現実を見てフィードバックを受け入れ、納期や仕様を変えていくことはむしろ善である
- 納期は絶対の腐敗神話は捨てよう
-
結果を出すからバリューを出すへ
- 取り組みの中で得た学びのシェアこそが十分バリューであり会社の財産である
第三章 脳に余裕を生む情報整理・記憶術
- コードリーディングのコツ:「すべて読まない」ことがポイント
- コードを読まないわけではなく、他のデベロッパーを信頼し、どの値を入れたらどれが返ってくるかを把握すると良い。
- 全てのコードを読んでいると脳が疲労しインプットの質が下がる
- コードを読まないわけではなく、他のデベロッパーを信頼し、どの値を入れたらどれが返ってくるかを把握すると良い。
- 仕事の難易度別で考える
- 著者は仕事には以下のレベルがあると述べている
- レベル1:ググらずに即座時に実行できる
- レベル2:ググれば解決できる
- レベル3:スパイクソリューションがあればなんとか...
- レベル4:自分では無理
- 生産性を上げるとはレベル1をいかに増やすかである。自分にはしんどいと思う努力はレベル4のものであり、そういった努力は「一切やめてしまう」ことを勧める。
- 重要なのは今の自分にできることを見極めること
- 技術を徹底的に理解し、情報を整理していつでも取り出せるレベル1状態を増やすことこそ最終的な生産性を上げる。
- 重要なのは今の自分にできることを見極めること
- 著者は仕事には以下のレベルがあると述べている
- なぜ著者の同僚たち(マイクロソフトの社員たち)は記憶力がいいのだろうか
- 記憶に定着させるためには自身の脳内で構造を整理把握して、説明可能な状態にする必要がある
- 説明可能な状態にする方法その1 書く
- 記憶に定着させる方法の一つは思い出そうと頑張ることである
- ブログに書く
- ノート/キュー/サマリーの手法を使う
- 記憶に定着させる方法の一つは思い出そうと頑張ることである
- 説明可能な状態にする方法その2 脳内で整理する
- 具体的な整理力鍛錬方法
- ミーティングの議事をその場で書かない
- 人の話を聞くときは他の人に説明することを想定として頭の中で整理する
- 文章に書き出して考えるのではなく、頭の中で考えて完全に整理し終えてから文章に書き出す。
- 具体的な整理力鍛錬方法
- 説明可能な状態にする方法その1 書く
- 記憶に定着させるためには自身の脳内で構造を整理把握して、説明可能な状態にする必要がある
第四章 コミュニケーションの極意
- 情報量を減らす
- たくさん情報があっても消化できない
- 聞かれたら付加情報を教えるくらいで良い
- たくさん情報があっても消化できない
- コーディングについて
- 読んだ人がどう感じるかを考えながらコードやコメントを書く
- これは議事メモなども同様であり、人に読まれる前提でメモを取る方が自分の思考の整理にもつながる
- 読んだ人がどう感じるかを考えながらコードやコメントを書く
- クイックコールのすすめ
- クイックコールとは、SlackやTeamsなどで予定を組まずに行う気軽なビデオ通話のこと。
- チャットよりも音声の方が、情報量が多くインタラクティブ性がありフィードバックが強い
- 気軽に聞ける空気の大切さ
- 著者の環境ではどんな些細なことでも知らないことは隣の人に聞く
- 「気軽に聞ける仕組み」は「気軽に断れる空気」とセットになっている
- 知らないことを聞かれた場合はすぐに「ごめん」で済ませたほうが聴く側も聞かれる側も楽である
- 「気軽に聞ける仕組み」は「気軽に断れる空気」とセットになっている
- 著者の環境ではどんな些細なことでも知らないことは隣の人に聞く
- クイックコールとは、SlackやTeamsなどで予定を組まずに行う気軽なビデオ通話のこと。
- ディスカッションで鍛えられること
- その場でフィードバックが得られるディスカッションは相当量の知識を得られる場であり、「自分の理解を自分なりに深める」チャンスなので初心者にこそお勧めする
- 失敗を恐れて発言しないのはいけない
- ディスカッションは自分の理解を深める場所である
- 「相手を否定しない」「相手のアイデアを否定しない」「自分の考えとして意見を言う」
- お互いに意見をシェアしあい高めあい、ディスカッションをエンジョイすることに集中する
- 「相手を否定しない」「相手のアイデアを否定しない」「自分の考えとして意見を言う」
- その場でフィードバックが得られるディスカッションは相当量の知識を得られる場であり、「自分の理解を自分なりに深める」チャンスなので初心者にこそお勧めする
第五章 生産性を高めるチームビルディング
- ソフトウェアの世界ではサーバントリーダーシップが主流となっている
- サーバントリーダーシップとは、リーダーは「ビジョンとKPI」は示すが、実際にどのように動くかはチームが考え意思決定していく
- サーバントリーダーシップを持ったチーム(自己組織化チーム)は生産性が高く、満足度も高く、良いソリューションが選択されやすい
- インターナショナルなチームでは楽しんでいるかが重要視され、それぞれのマンバーがやりたい仕事を主体的に選択し、責任を持つ
- サーバントリーダーシップを持ったチーム(自己組織化チーム)は生産性が高く、満足度も高く、良いソリューションが選択されやすい
- サーバントリーダーシップとは、リーダーは「ビジョンとKPI」は示すが、実際にどのように動くかはチームが考え意思決定していく
- 「仕事を楽しんでいるか」を確認する文化
- マネージャーはいかにメンバーたちが幸せに働けているかに関心を寄せ、エンパワーしてくれる
- 「仕事は楽しむもの」と言うカルチャーがある。
- やらされている仕事は楽しくない。新人においてもやったことない仕事を「できるもの」として大人扱いすると周囲の助けを借りつつやれる
- 「仕事は楽しむもの」と言うカルチャーがある。
- できる人たちにのびのびとパフォーマンスを発揮してもらいたいなら、何よりも仕事を楽しめる環境を作ること
- マネージャーはいかにメンバーたちが幸せに働けているかに関心を寄せ、エンパワーしてくれる
第六章 仕事と人生の質を高める生活習慣術
- 生産性を上げたければ定時上がりが効率が良い
- 定時で上がった後は生産性を上げる学習を行うことで開発スピードを上げる。もちろん自分が興味のあるトピックの学習もしている
- タイムボックス型の学習が生産性を上げる
- 朝の決められた時間に学習を行うことで頭が冴え生産性が上がった。
- 脳の酷使をやめる
- 瞑想する
- ディスプレイから意識的に遠ざかる
- しっかり睡眠をとる
- 違うことをするのがリフレッシュ
- 一日一つのことに集中できるのが四時間、四時間が過ぎて疲れたら単に休むのではなく違うことをするのが良い
- 休息するのは何もしないことではなく、いつもと違うことをするのが重要
- 掃除で人生をコントロールする感覚を取り戻す
- 部屋が散らかるのは行動を完了させていないから
- 服を洗濯したら畳んで収納して完了
- 食事をしたら皿を洗って棚にしまって完了
- 完了させることで整理され検索せずにすぐ取り出せる状態になる
- 物理的に整理するのは時間がかかるが、同時に頭の中も整理され細かいとこへの目配りができるようになる
- 部屋が散らかるのは行動を完了させていないから
- 物理的なエネルギー不足をどうするか
- 適度な運動をする
- テストステロンを意識的に増やす
第七章 AI時代をどう生き残るか
- AI時代には専門性が強みとなる
- 自身の専門性✖️AIテクノロジーをエンジョイすることが大事。
- 日本の批判文化
- アプリケーションには不具合はつきものだが、日本はその点を攻撃・冷笑する文化がある
- 素敵なアプリを見つけたら感謝。あらゆる業種においてもポジティブフィードバックを行うことで現場の生産性が向上する好循環が生まれ日本社会が抜本的に良い方向へ進む
- アプリケーションには不具合はつきものだが、日本はその点を攻撃・冷笑する文化がある
📚 このブログを読んだあなたへ
この記事は、牛尾剛さんの『世界一流エンジニアの思考法』から学んだことをもとにまとめました。
同じく成長を志す若手エンジニアの方に、少しでも参考になれば幸いです。
フィードバック・ご感想などお気軽にお寄せください 🙌
Discussion