「世界一流エンジニアの思考法」感想
はじめに
少し前に流行った「世界一流エンジニアの思考法」という本を読んでみた感想を備忘録として残したいと思います。
この本は、私のようにエンジニアとしての経験が浅い方や周りの一流エンジニアに比べてなかなか生産性が上がらないなと思っている方におすすめの本です。本当に簡単にまとめるので、気になった方はぜひポチってみてください!
結論
この本を読んでみて、筆者が伝えたいことは「仮説のない試行錯誤はするな!」と「理解には惜しまず時間を使え!」の2点です。
仮説のない試行錯誤はするな!
本書に書かれていた例を挙げて説明します。まず、「仮説のない試行錯誤はするな!」からです。
ex. ある日、筆者のプログラムがうまく動かない時があり、一流エンジニアのポールにペアプログラミングを依頼したそうです。普段の筆者なら、ログで問題を見つけたら「ここかもしれない」「いや、あそこかもしれない」と試行錯誤を繰り返して原因を追求します。あたりをつけて修正して,修正点をサーバーに挙げてまたさらにログを見る。サーバーにあげるのに15分くらいかかるのでいくつかの試行錯誤をするのにも時間がかかります(僕もまさにこれでした)。
しかし、ポールがとった行動は異なりました。ポールは、一つ目のログから「仮説」を立て、手は一切動かしていませんでした。「このログが出ているということは、内部でこのようなことが起こっている可能性が非常に高い。このことを考慮すると、調べるべきは、、、、」のように独り言を始めたのです。そして、結果一つのクエリを投げて、それが見事根本的な原因を発見するものだったのです。
この例から、私が学んだのは一流のエンジニアは筋のいい仮説を立てることに時間を使うということです。
普段、自分もログやエラーメッセージから「なんとなくこれかな」とか「これじゃないなら、こっちかな」のように仮説を立てるのに時間を使うのではなく、試行錯誤するのに時間を使っていました。
ここが、一流エンジニアとの違いだと感じました。
理解には惜しまず時間を使え!
次に本書には、どんなに優秀な人でも理解には時間がかかるものと説明されており、理解には惜しまず時間を使うことが推奨されていました。
これについて、特に共感できた点について説明します。筆者は、理解は徐々に身についていくというイメージを持っていました。また、とにかく生産性を上げなければ、早く成果を出さなければというプレッシャーも相まって理解に時間を使うことができずにググってそれらしいところをコピペという作業を続けていました(僕もよくやっていました)。これでたまたま早く成果が出ることもありますが、理解はしていないのでトラブルには弱く、同じことが起こった際もまた調べなければいけないのでトータルでみて生産性は上がりません。では、どうすれば生産性が向上するのでしょうか?
筆者は、理解について要点を三つ定義しています。
・その構造を掴んで人に説明できること。
・いつでもどこでも即座に取り出して使えること。
・知見を踏まえて応用が効くこと。
この三つの要素をチェック項目として、理解には時間がかかるものとして、急がず徹底的に理解する習慣をつけることがトータルで生産性を上げることにつながる!と筆者は言っています。
皆さんも自分の普段の行動と当てはまるところがあったのではないでしょうか?
気になった方は、ぜひポチって世界一流エンジニアの思考法を手に入れましょう!!
Discussion