世界一流エンジニアの思考法という本を読んで、
個人的に参考になったことを備忘録として整理したいと思います。
著者の牛尾さんは44歳でマイクロソフトに転職したプログラマーで、プログラミングに関しては、自分でも三流だというほど才能がないと言います。
本書では、一流のエンジニアがどのように思考し、生産性をあげているのか解説した本です。
はじめに
圧倒的に仕事ができる人たちは、常人と比べて著しく頭の回転が速かったり天才的な記憶力を持っているように見えます。しかし、常人で比べて追いつけないほど脳みその性能が違うわけではないと言います。
彼らはなぜ生産性が高いのか、それは主に「思考法」(マインドセット)をうまく使っているからだといいます。
このことを理解した筆者は仕事のスタイルが激変して、生産性を高めることができるようになったそうです。
試行錯誤は「悪」である。
問題解決をするなら下記の手順で行動すべきだと述べています。
情報収集⇒仮説を立てる⇒仮説を証明するための行動をとる⇛手を動かす
仮説を立てて行動するなんて当たり前のように思えますが、
振り返ってみると、自分も以前の筆者と同じようにエラーが起きた際、
仮説を十分に立てず手を動かして試行錯誤していました。
この方法ではエラー解決に膨大に時間がかかるうえ、
解決できても手当たり次第に行動しているだけで成長はほとんどありません。
今後は仮説を立てて手を動かすことを徹底し、無駄な試行錯誤を減らしたいと思います。
頭が良くても「理解」には時間がかかる。
筆者は優秀なエンジニアでも理解に時間をかけているのを見て、
どんなに頭が良い人でも理解には時間がかかるということを知りました。
頭のいい人は理解が早いように見えますが、
それは今まで時間をかけて基礎から理解を積み重ねているからです。
既に理解していることに関して頭のメモリにコンテキスト(文脈)が
載っているから、理解するのが早いと言います。
理解することの大事さを知った筆者は業務後にプログラミングを基礎から勉強しなおしたそうです。
ちなみに、
筆者の思う「理解」とは下記の3要素を満たすことです。
・構造を理解して人に説明できること
・いつでもどこでも即座に取り出して使えること
・知見を踏まえて応用が利くこと
頭の中に「メンタルモデル」を作る
筆者は、同僚たちが驚くほど細かいところまで仕組みを把握し記憶していることについて驚き、
どうしてそんな事が出来るのか聞いてみると、「メンタルモデルを作るとそれができるようになる」と教えられました。
メンタルモデルとは、複雑な情報や状況を整理して、それらを理解しやすい形に結びつけるフレームワークのことです。
頭の中で素早く情報処理をするためには何らかの脳内イメージを持つことが重要だといいます。
いかに脳みその負荷を減らすか
コードリーディングをする際は、”極力コードを読まない”で、
UMLなどを使ってシステムのインターフェイスと構造を理解することが大事だといいます。
読んでいるメソッドやクラスのインターフェイスの役割やパラメータをしっかり理解することが重要。
感想
本書を読んで、時間をかけて基本と構造を理解することの大切さについて学びました。
それができないと決して仕事をコントロールできるようにならないと言います。
現在の自分にとても刺さった本でした。
今後は、本書で紹介されたテクニックを使って生産性を向上させたいと思います。
優秀なエンジニアと自分は何が違うのかと悩んでいるエンジニアにおすすめしたい本です。