全エンジニアにおすすめする本「世界一流エンジニアの思考法」

# はじめに
こんにちは。TuneCoreJapanでバックエンドエンジニアをしています [@masafumi330](https://twitter.com/masafumi330) です。
この記事は[Wano Group Advent Calendar2023](https://qiita.com/advent-calendar/2023/wano-group) 1日目の記事です。

今回は、牛尾剛さん著書の「[世界一流エンジニアの思考法](https://amzn.asia/d/9gOSMU3)」という本を読んでみたので、そこで得た気づきや学びをシェアしたいと思います。

読んでみた感想としては、、、

**めちゃくちゃ感動しました！！**

現状からさらに成長したい、ブレイクスルーが欲しい全エンジニアに読んで欲しいと思います。

# 目次
[1.要約](#1-要約)
[2.メンタルモデルとは](#2-メンタルモデルとは)
[3."理解すること"に時間を掛ける](#3-"理解すること"に時間を掛ける)
[4.やることを減らす](#4-やることを減らす)
[5.日々の生活への適用](#5-日々の生活への適用)
[6.最後に](#6-最後に)

# 1. 要約
- **一流エンジニアだって物事の理解には時間が掛かる**。ただ、その理解の質とスピードを高めるために、彼らは __メンタルモデル（物事を理解するのに使う脳内イメージ・フレームワーク）__ を用いている。
- 一流エンジニアは __"理解すること"__ に時間をかける。"理解したつもり"になって先延ばしにしない。
- 一流エンジニアは、 __やることを減らしている__ 。
-  __最小の労力で結果を出す__ ことに価値がある。
-  __失敗とフィードバック__ を歓迎する。

# 2. メンタルモデルとは
一流のエンジニアも、一発で全てを理解するような天才！というわけではなく、頭の作りは僕ら普通の人とあまり大差はないようです。
ただ、頭の使い方、思考の方法を工夫することにより、物事の理解を難なく行っているとのことでした。

それが**メンタルモデル** です。

私も初めて目にした概念です。

> メンタルモデルとは、人々が世界を理解し、予測し、解釈し、新しい状況に適用するための、自己の心の中のイメージや理論のことだ。
> 
> "世界一流エンジニアの思考法"より


一流エンジニアはメンタルモデルを活用し、問題を解決するためのフレームワークを持っています。
オブジェクト指向やアーキテクチャを学んでいくと、自ずとシステム思考のメンタルモデルが頭の中に出来上がってきて、それを用いてソフトウェアの構造を理解していくと思いますが、そのイメージを意図的に自分の中に作り上げておき、それをいつでも取り出せる状態にしておくのが重要かと思います。

ここで、私が普段思考するときによく使う考え方の癖も、ある種メンタルモデルだなと思い、Input-Output思考として図示してみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651150/408480ec-9f2a-2b50-0204-2bead4fbfcd3.png "僕がよく考えているメンタルモデル Input-Output思考")



「達成したい目標、ToBe、Output」と、それに対して、「今の現状、AsIs、Input」の２つを結びつけ、それに対してどう対処していくか？を考えます。
シンプルですが、これはどんなことにも使える、万能で強力な思考法だと思います。
おそらく多くの人もこの考え方をしているのではないかと思います。

例えば、ある機能の実装に取り掛かる時、

- 理想とする機能のToBe
- それに対してまだできていない現状

を正しく把握し、上記の課題を解決するために、どうクリアしていくか？その対処法を考える際に、Input-Outpu思考を使います。

いくつかタスクを細かく分割していったら、次にその各一つ一つのタスクについて、さらにInput-Output思考を使って、じゃあどうやるか？を考えていきます。

このように、大きな粒度から小さな粒度まで、幅広く応用できる思考法かと思います。


# 3. "理解すること"に時間を掛ける
一流のエンジニアであっても、物事を理解するのに時間が掛かることもあるそうです。

ただ、分からないことを分からないままにせず、大量に資料を読み込んだり、動画を何度も見返したり、「えっ、そんな初歩的なこと聞くの？」と思いそうなことでも、自分が理解するまでしつこく人に聞く。

そうやって築き上げた盤石な基礎が、彼らが一流である所以なのかなと思います。

思えば私も、中途半端な理解のまま進めてきたことが何度もありました。

「早く結果を出したい」「とりあえず動くものを出したい」と、目先の成果ばかり求めて、理解を疎かにしてしまったせいで、その後の仕事全体の質が上がらない根本の原因になっているのかなと思います。

> 日本は、「ググれ、カス」という言葉があるぐらい、自分で調べてから人に聞くべきという文化だが、少なくとも私のやっているクラウドの中身をつくるような複雑なシステムの場合、どう考えても全体的効率が悪い。
> 
> "世界一流エンジニアの思考法"より

これもまさに私の中に染み込んでしまっていて、「自分でまずは調べなきゃ…」と癖付いてしまってるのですが、これじゃ効率も悪いし時間だけがかかってしまうのでよくない癖だなと思ってます。

# 4. やることを減らす
優先順位の考え方を例に、一流のエンジニアとそうでない者での「やることを減らす」という考え方の違いを説明されていました。

例えば、タスクがいくつかあるとしたら、
- 一流のエンジニアは、 __「これが最も優先度が高いのでこれをする。それ以外はやらない」__ と、１つにフォーカスする。
- 一流でない者は「これが１番目、これが２番目…」と **全てに順位付けをする** 。

> 「減らすこと」自体に価値がある
> 
> "世界一流エンジニアの思考法"より

やることを絞り１つにフォーカスすることで、格段に脳のクリアさが出てくることを、私も実体験として感じたことがあります。

会議一つ取っても、会議中に内職をせず、会議に集中する。
準備、Next Action決め、資料の修正も **全部会議の中で完結させる** 。
そうすると、会議の時間が価値の高いものになります。

# 5. 日々の生活への適用
メンタルモデルを作ることも、理解することに時間をかけることも、やることを減らすことも全部普段の生活の中でも意識してみるとよりいいんじゃないかなと思います。

- 仕事が終わったら仕事のことはやらない。(ただし自己研鑽の学習は除く)
- 友人、知人、家族との時間を精一杯楽しむ。
- 普段の会話のなかで、分かったつもりのまま放置しない。
- 全部やろうとしない。
- もう着ない服、使わないものは捨てる。

# 6. 最後に
この本を読んでみて、一流エンジニアの事例や思考の癖、マインドセットを知ることができ、自分を客観視することができました。

実際にこの本を読んでから一ヶ月ほど経ちましたが、前よりもコードリーディングのスピードが上がった実感があります。
本で書かれていた、**「やることを減らす」** ということを実践し、ソースコードを読む際にも「全部を読まない」ということを意識するだけで、読むスピードが早くなりました。
そのおかげで、全体のコードベースの理解もスムーズになりました。

この本が気になった方はぜひ読んでいただきたいと思います。

最後まで読んでいただきありがとうございました！

https://amzn.asia/d/8CnZzDs