エンジニアとして働く同僚の中には「この人優秀だな~」と思う人がいると思います。
そのような優秀なエンジニアはどんな思考回路・習慣を持っているのか気になったことはありませんか?
私はどうやったら優秀なエンジニアになれるのか?そもそも優秀なエンジニアってなんだ?
よくわからないのでまずは他の人の考えを知ろう!と考え、とりあえず目に入った本を読んでみようと思いました。
それが『世界一流エンジニアの思考法』(牛尾剛著、文藝春秋刊)です。
この本で学びになったのは以下の点です。
- すぐに答えが出るような習慣を持っていることが一流の証
- 仕事を難易度別に考える
- Fail Fast(早く失敗する)
『世界一流エンジニアの思考法』とは
マイクロソフトで働く自称三流エンジニアの著者が、周りで働く一流エンジニアの特徴を分析し、解説した本です。
『世界一流エンジニアの思考法』を読んだ理由
そろそろエンジニアとして中堅に差し掛かる年になってきましたが、自分の業務にまだまだ先輩のテコ入れが入る。。。
そして育児家事もあるので、残業は基本できない。
そんな自分がハイパフォーマンスなエンジニアになるため、できることはスキマ時間にできる自己啓発。
そんな時間を使って、まずは何を心がければ、決まった時間で十分な成果を出すにはどうしたらいいか、解決策を求め、この本を選びました。
この本は先述の通り、マイクロソフトで働く一流のエンジニアの特徴を分析しており、自分との差分を理解して、今後のアクションに繋げられることを目的に読みました。
『世界一流エンジニアの思考法』からの学び
すぐ答えを出せるような習慣を持っていることが一流の証
著者の分析によると一流エンジニアには以下の特徴があるといいます。
- 説明できるレベルになるまで、とにかく理解に時間をかける。
- メンタルモデルを作り、思いつきの試行錯誤はしない
上記の習慣を持ち経験を積むことで、ある課題に直面したとき「こうしたらうまく行くかも」と仮説を立て問題解決まで一直線に行けるようになるというのです。
つまり、習慣として実践していると課題解決の勘所を掴む練習になり、やがて仮説の精度が上がってくると理解しました。
説明できるレベルになるまで、とにかく理解に時間をかける。
三流エンジニアの私は、新しい課題が出てきたとき、まず問題を理解するために問題についての知識、解決方法をググったり、社内のノウハウが転がってないか調べます。
一方で、一流エンジニアは以前の経験で原理原則を理解しているので、すぐ行動に移せます。
ここで、生産性に明らかに差が出るということです。
自分の理解に自信が持てないと心配で調査の時間が必要になるので、人に堂々と説明できるレベルまで理解する必要があるということですね。
そうはいっても、納期もあるしそこまで時間をかけられない状況もあると思いますが、そうして目の前の問題に手一杯なままだといつまでもそのままだと、改めて重要性を理解し学びになりました。
意外と理解したつもりになっているだけで、他の人からの指摘で「あれ?これってなんでだっけ?」ってなることってよくありますよね。
それが説明できるレベルまで理解できていないということです。
著者の考える理解の3要素は以下の通りです。
世界一流エンジニアの思考法
- その構造をつかんで、人に説明できること。
- いつでもどこでも即座に取り出して使えること。
- 知見を踏まえて応用がきくこと。
こうしたポイントに気を付けて、普段の行動の優先順位を決めていきたいですね。
一流エンジニアの理解手法例(他人が理解できるメモを作る)
では、一流はどのように理解に時間をかけているのか?
本書には著者の同僚の習慣についても紹介がありました。
1番使えそうだなと思ったのは、「それを読むだけで内容を理解できるメモを作る」習慣です。
著者の同僚はまだ若いが何かを問い合わせするとすぐにシステムの隅々まで理解した明確な答えが返ってくるそうです。
これはその同僚が自分が理解するためのメモではなく、見る人が欲しい情報はこれだろうという形でまとめているメモを作ってるからだといいます。
エンジニアは問い合わせ対応に時間を割かれることも多いので、いい習慣だなと思いました。
設計方針などはよくまとめているのですが、ドキュメント作成業務、検証業務はそこまでやっていませんでした。
原理や規格に関する理解を説明できるレベルまで昇華し、対応工数削減にもつながるので、是非実践したいなと思いました。
メンタルモデルを作り、思いつきの試行錯誤はしない
もう一つのポイントとして、一流エンジニアは問題解決の際にまず手を動かしてみることはせず、メンタルモデルを作り、問題が解決するまでの道筋の仮説を立てることから始めるとのこと。
著者の同僚の話ではメンタルモデルを作ると、より多くのことが把握できるようになるというのです。
メンタルモデルとは、自分の頭の中の物事の進み方のイメージのことです。(参考:wikipedia)
要するに頭の中で、モノを動かしてみたり、手順をイメージしてみたりすることだと理解しました。
やってみなくてもよく考えればわかることはやらない。無駄を省くといったことですね。
これだと思ったら動き出しちゃう癖があるので、立てた仮説が問題ないか、問題に関連する原理の理解は十分か振り返り、余計な試行錯誤は減らしていきたいと思いました。
また、気になったところとして、このメンタルモデルというのは「固定のフレームワークはなく、業種、個人によって千差万別」ということ。
現状、自分の仕事と性格にあったフレームワークがよくわかっていないので、見よう見まねでやってみつつ、そうしたフレームワーク(なぜなぜ分析、失敗学など)も調べていく必要があるなと思いました。
- 一流エンジニアは「説明できるレベルまで理解に時間をかける」
- 理解する方法としては「読むだけで内容を理解できるメモを作る習慣」を身につける
- メンタルモデルを作り、思いつきの試行錯誤はしない
仕事を難易度別に考える
仕事ができる一流のエンジニアというと、限られた時間で多くの成果を出すイメージを持っています。
では、このようになるためにはどのようなことに取り組めばいいか。
著者は仕事を難易度別に考えることが大切だといいます。
以下のように、全部で4つのレベル分けで定義されています。
一流エンジニアと仕事をする中で著者は、「生産性とは、Level 1の調べなくても自分の中に答えがある領域をいかに大きくするかではないか」と気づきを得られたそうです。
もう一点の著者の気づきとして、『「今の自分では解けない」としっかり見極めることが重要』と述べています。
例えば難易度が高い仕事はなんとかやってやるぞと頑張りがちですが、あまりに時間をかけていては非効率で、社内に有識者がいればその人を頼る判断をしてしまった方が問題も早く解決し、クオリティも上がる。
難しい部分は割り切って他の部分で生産性を上げていけばいいとのこと。
まとめると、「人に説明できるレベルまで理解に時間をかける」を実践して、Level 1の領域を広げつつ、難易度別にアクションを変えて高い生産性をキープする。
これが一流エンジニアへの道筋なのかと気づきになりました。
生産性の高いエンジニアになるには「ググらずに解決できる」仕事を増やす。
今の自分に難しい仕事は思い切って同僚に頼ったり任せる。他の部分で取り返す
※ ちなみに「スパイクソリューション」という用語になじみがなく、調べたところ「」のようです。
それでもよくわからなかったのですが、「」ということかなと理解しました。
Fail Fast (早く失敗する)
最後の学びは「一流エンジニアは早く失敗する習慣を持っている」です。
本書では以下のように、生産性を上げるマインドセットとして失敗を受け入れることが大事と述べています。
生産性を加速するうえで重要な第二のマインドセットとして「リスク・間違いを快く受け入れる」というのを上げたい。~(中略)~リスクを受け入れるとは次のことを意味する。
世界一流エンジニアの思考法
- 間違いを厳しく批判したり懲罰したりしない。
- 失敗から学ぶ姿勢。
- Fail Fast(早く失敗する)。
- 実験が推奨されている。
- 全員に「現状維持」や「標準」を要求せず、臨機応変が推奨される。
- 非難や恐怖感のない環境。
つまり、欧米のビジネスシーンで活躍する一流エンジニアは、根っこから「いつまでも思考していないで、一つの仮説立ててはすぐに検証して、うまくいかなかったら次の仮説を立てる。」という習慣を持っているということ。
失敗により気づきを得られるため、その回数をこなすことで生産性を高められる。
これは私も実感することが多く、30分考えてわからなければ、誰かに聞いたり、ある程度立てた仮説が正しいか、とりあえず手を動かしてみたりします。
自分の実感とあったエピソードに共感できました。
さらに、このパートでは、心に刻んでおきたいエンジニアの心構えも多くありました。
今の時代、検討ばかりして、さっさと「やらない」ことのほうが最大のリスクだということを肝に銘じてほしい。
世界一流エンジニアの思考法
早く失敗することはそれ自体に価値がある。
世界一流エンジニアの思考法
ついつい「話を詰めてから…」、「他の人に欠陥を指摘されないように…」と時間をかけがちなので、引き続き注意したいと思いました。
失敗する自分を全肯定するマインドで、どうやったら早く失敗できるかを常に考えてみます。
失敗からの学びを駆使して、いかに正しい方向に進んでいけるかが、パフォーマンスが高いエンジニアになる鍵だと理解しました。
また、一流エンジニアは「理解に時間をかける」、「仮説⇒検証の手順を遵守する」ので、いくら早く失敗して学びを得ることが必要だからといって、試行錯誤にならないようにすることも注意が必要だなと感じました。
リスク・間違いを受け入れるマインドが大切。
早く失敗して軌道修正することが生産性を高めるポイント。
面白かった点
著者は自称三流エンジニア
著者はマイクロソフトで働いている方ですが、ご自身を三流エンジニアと自称しています。
最初は「本当かよ~」と思っていたのですが、著者の経験談を読んでいると共感する部分も多く面白かったです。
特に、「自分でやらなきゃ成長できない!と時間をかけて仕事をして、その結果、生産性が下がり、どうしたら要領がよくなるのか、どうしたらいいかわからない。」といったまさに自分が陥っている状況でした。
そのため、一流エンジニアと著者の差 ≒ 一流エンジニアと自分の差として読めたため、余計面白く感じました。
一流エンジニアは記憶力がいい
優秀なエンジニアが、様々な問題に対して何故すぐに答えが出てくるのか、修正ポイントに気づけるのか疑問でした。
当たり前のことのように感じるかもしれませんが、その理由は、関連する技術、状況を「よく理解しているから」。
近道などなく、堅実に積み重ねていき、理解できるまで時間をかけることで、一つ一つ自分の知識として昇華され、記憶にも残る。
当たり前のようできちんとやることが難しいですが、これをできる人が優秀なエンジニアになるんだろうと思います。
この本を読んだ目的が、まさにどのような習慣の差があるのか理解したい!というところだったので、とても興味深かったです。
まとめ
本書はマイクロソフトで働く著者が一流エンジニアの習慣を分析した本でした。
やはり、ポイントは「人に説明できるレベルまで理解に時間をかける」。
まずは、そのまま渡せば他人が理解できるレベルのメモを作る習慣を身につけていこうと思います。
本書は紹介した内容以外にも、コミュニケーション、チームビルディング、生活習慣、AIの影響のトピックについても触れていて、どれも興味深かったです。
特に、正しい習慣で仕事に取り組む積み重ねが必要になるので、若いエンジニアほど読んでおいたほうがいいのかなと感じました。
ご興味があれば読んでみてください。
他にも読んだ本の理解度を上げるためのおすすめの読書術本を紹介しています。
それでは!
コメント