凡人エンジニアが『世界一流エンジニアの思考法』を学んでみた

## はじめに
ある日、優秀な友人エンジニアがおすすめしてくれた書籍[**『世界一流エンジニアの思考法』**](https://www.amazon.co.jp/%E4%B8%96%E7%95%8C%E4%B8%80%E6%B5%81%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%AE%E6%80%9D%E8%80%83%E6%B3%95-%E7%89%9B%E5%B0%BE-%E5%89%9B/dp/4163917683)。

![book.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3853295/ec17871c-e89b-18ef-1a5d-123753a8b344.jpeg)

意識高い系の自己啓発本かと思いきや、私のような凡人エンジニアでもすぐに実践できる思考法がギュッと詰め込まれた良書だったので、今回はこの書籍から得た学びを備忘がてらまとめておこうと思います。

## どんな本？
前提として、著者は「一流エンジニア」ではなく「ガチの三流」だそう。（親近感！）

不器用で記憶力が低く要領も悪い著者が、努力と工夫を重ねて44歳にしてマイクロソフトに転職。一流エンジニア達にもまれる中で、いかにしてアメリカで世界最高峰のドリームチームの一員として働けるまでになったのか、その技が紹介されています。

目次は以下の通りです。
>第1章　世界一流エンジニアは何が違うのだろう？
第2章　アメリカで見つけたマインドセット
第3章　脳に余裕を生む情報整理・記憶術
第4章　コミュニケーションの極意
第5章　生産性を高めるチームビルディング
第6章　仕事と人生の質を高める生活習慣術
第7章　AI時代をどう生き残るのか？

## こんな人におすすめ
駆け出しエンジニアや、シンプルに生産性の向上に関心がある人はもちろん、**そこそこ経験を積んで自分なりの業務的思考法が確立してきたエンジニア**にこそおすすめしたいです。
私は実際、自分の凝り固まった思考を見直し、新たな視点を取り入れるきっかけになりました。

## 第1章　世界一流エンジニアは何が違うのだろう？
### 「理解に時間をかける」を実践する
どんなに頭が良い人でも、理解には時間がかかる。頭が良いから理解が早いのではなく、理解に時間をかけて基礎を積み重ねている人こそ理解が早いのである。というのが要約。

著者は〈理解の3要素〉を以上のように定義したうえで、急がず徹底的に理解する習慣を身に付けることが重要だとしています。
- 説明可能（explainable）
- いつでも使える（anytime usable）
- 応用可能（applicable）

文中で述べられていた著者自身の経験（以下）には、ハッとさせられました。
> 振り返ると、自分のプログラミングは、シンプルなコードなら「簡単だ。すぐできる」と思い込んでいた。実際プログラムは書けるが、深く理解していないから毎度Googleでサーチして、「こんな感じ」かなとコーディングする。一応ものはできるが、覚えていないから次回も調べることの繰り返しだった。言ってみれば、Googleプログラマだ。

業務でAIを使うようになって、迅速に問題解決できる便利さからついつい頼りがちになってしまい、初学者だった頃当たり前にできていた"理解に時間をかける"という初歩的なことを疎かにしてしまっている現状に反省しました。

**スピードを重視したその場しのぎの問題解決は、かえって生産性を落とすことになる**ということを肝に銘じ、**時間をかけて本質を理解する**という意識を改めて持ち直せました。

## 第2章　アメリカで見つけたマインドセット
### 「Be Lazy」というマインドセット
「Be Lazy（怠惰であれ）」とは、「**より少ない時間で価値を最大化するという考え方**」のこと。この精神を持つうえで重要なのが、いかにやることを減らすかということ。

やることを減らすための1つの方法として、物事に優先順位をつけることが挙げられますが、この「優先順位をつける」という言葉の捉え方に日本人とアメリカ人で違いがあることが興味深かったです。

日本人 → <INS>優先度の高い順に、できれば全て実施する</INS>
アメリカ人 → <INS>最重要な1つだけをピックアップして他はやらない</INS>

日本人は楽をすることを悪と感じがちですが、**1つのことにフォーカスし最低限の時間と努力で結果を出す**というアメリカ人的思考を持つことで、より生産性を上げることを可能にするのではないかと思います。

## 第3章　脳に余裕を生む情報整理・記憶術
### いかに脳みその負荷を減らすか
仕事の難易度は大きく分けて以下の4つのレベルに分類できます。

Lv1. 何もググらずに即座に実装できる
Lv2. 解決方法は思いつくが、具体的な方法は忘れているのでググれば解決できる
Lv3. スパイクソリューション（課題把握のための大まかなプログラム）があれば何とかなる
Lv4. 自分だけでは解決が難しい

**レベル1を増やして生産性を上げる**ことと、**今の自分にはできないレベル4をしっかりと見極める**ことが、脳の負担を減らすための合理的なアプローチです。

### マルチタスクは生産性が最低なのでやらない

人間の脳の発達を研究する学者によると、マルチタスクによって
- 生産性が40％低下
- 仕事を終えるまでにかかる時間が50％増加
- ミスの発生が50％増加

するといいます。人間の脳はマルチタスクに向いた仕様になっていないのです。

生産性を下げないためには、「**WIP = 1**」つまり「**今手をつけている仕事（Work In Progress）を1つに限定する**」ことが重要とのこと。

「マルチタスクをこなす＝生産性が高い」と思いがちですが、私自身マルチタスクがケアレスミスを誘発した経験が何度もあるので、このトピックは特に意識したいものでした。

## 第4章　コミュニケーションの極意
### 相手が求めている情報への感度を研ぎ澄ます
**「相手が本当に欲しい情報は何か？」を普段から意識しておく**こと、そして、人に伝えることを前提とした形式で情報を整理し、**メモをとる習慣をつける**ことが、生産性を抜本的に向上させる鍵になると著者は述べています。

## 第5章　生産性を高めるチームビルディング
### 「サーバントリーダーシップ」とは何か
日本企業と海外企業のマネジメントスタイルには違いがあり、その違いが社員のモチベーションや開発のスピード感に大きな差を生んでいるそうです。

**サーバントリーダーシップ**：メンバーが主体となって動き、リーダーはビジョンとKPIを示したうえで彼らの障害を取り除く役割を担うマネジメントスタイル
⇒ <INS>海外企業に多いスタイル。2001年にアジャイル開発が登場して以来の主流。</INS>

**コマンドアンドコントロール**：リーダーがメンバーに指示を出し、メンバーはその管理下で動くマネジメントスタイル
⇒ <INS>日本企業に多いスタイル。オールドファッション。</INS>

### 自己組織チーム／フィーチャーチーム
サーバントリーダーシップ下では、チームが自ら考えて自分で意思決定をする「自己組織チーム」と呼ばれる方式がとられます。

自己組織チームの特徴は以下の3つ。
1. 生産性が高い
2. チームのエンゲージメントが高い
3. よりよいソリューションが選択されやすい  

生産性の高いチームビルディングを実現するためには、自己組織チームを導入し、**チームの全員がスキルや経験に関係なく同じ責任を持つフラットな関係構築**と、**チームメンバーが失敗を恐れず仕事を楽しめる環境作り**が重要とのこと。

## 第6章　仕事と人生の質を高める生活習慣術
### 整理の技術
**成果を出す人は、「身の回りの整理」、「情報の整理」、「頭の中の整理」といったあらゆる整理力が高い**という視点に納得すると同時に、自分自身ができていない「頭の中の整理」を習慣付けるため、新しいことを学んだらQiitaやSNSにアウトプットするという行動を意識するようになりました。

## 第7章　AI時代をどう生き残るのか？
### AI時代には「専門性」こそが強みとなる
近年の急速なAIの発達に、エンジニアなら一度は「この職業は今後どうなっていくんだろうか。」と思ったことがあるのではないでしょうか。（私はあります。）
この章で筆者も述べていますが、AIを恐れたり排除したりするのではなく、**時流に惑わされず自分の専門性に磨きをかけ続けて次の変化に備える**ことが、AIと共存しながら時代を生き残っていくために重要な姿勢だと感じました。

## おわりに
各章から気になったトピックをピックアップして、ざっくりと要点と学びをまとめました。
この書籍から様々な学びを得たことで、これからエンジニアとして何年経験を重ねても、驕ることなく日々自分自身の思考や行動をアップデートしていくことの重要さを再認識できました。