Tsubatoの発信記録

主に機械学習やデータサイエンス関連で学んだことを書いています。

『世界一流エンジニアの思考法』を読んで生産性を上げることを考えた

マイクロソフトでAzure Functionsの開発に携わる牛尾剛氏による『世界一流エンジニアの思考法』を読みました。
本書では著者が世界最高峰のテック企業のエンジニアとして活躍するために、優秀な同僚達から学んだ仕事への取り組み方が書かれています。

私もエンジニアとして生産性を上げようと意識はしていますが、かえって努力が空回りして糧にならない失敗をしたり、残業が増えたりするような悪循環に陥っていました。
本書を読んで自分のどの考え方に問題があったのか見通しがついたので、その点を中心に感想をまとめました。

学んだこと

早く成果を出そうと頑張ることが生産性を下げることがある

目の前の仕事を早く終わらせようとして非効率的なことをしてしまうことがあります。本書では具体的に以下のような行動が挙げられています。

  • バグの特定のためにすぐ手を動かして試行錯誤をする→時間がかかる割りには新しい知識を得ることがない。
  • プログラミングでわからないことをググって出てきたものを使う→頭に残らないので何度も同じことを検索する。

試行錯誤もググることもエンジニアとして必要なこと、何ならこれを習慣づけられて初めて一端のエンジニアだとも思っていました。
それは間違っていないと思いますが、これらに頼りすぎると自分の生産性を上げることを阻害する可能性があるため注意が必要です。

どんなに頭のいい人でも理解には時間がかかる

著者の優秀な同僚でも何かを理解するには時間をかけて繰り返しを必要としています。
理解が曖昧でも試行錯誤とgoogleの力でそれっぽいことは出来るが、生産性は上がらないし複雑な技術はお手上げです。

著者は時間をかけて理解をする取り組みとして以下のものを挙げています。

  • LeetCodeの一番簡単なレベルからプログラミングを学びなおす。
  • 業務中でもミーティングなどで理解ができないことがあれば、後で時間をかけてでも理解に努める。
  • 新しく学んだことはブログに書く。その際サンプルコードそのままではなく自分なりに変えてみる。

コードの理解をしていればデバッグ時も試行錯誤をする前に、仮説を立てて問題に当たりをつけることで試行を減らすことができます。

自分にとって難しすぎると感じることはたいてい脳の使い方が間違っている

また著者は生産性を上げるには脳みその負担を減らすことが重要で、しんどく感じる時はやり方を見直すべきと書いています。脳の負担を減らす取り組みは以下のようなことが書かれています(一部のみ抜粋)。

  • コードを読む時は実装は見ずにインターフェースや構造の理解を優先する。
  • 何も見ずにコーディングできることを増やしていく。
  • メンタルモデルを頭の中に作り、頭だけで整理して記憶するする訓練をする。

まとめ

生産性を上げるためには地道に学習を継続して理解を積み重ねていくことが重要であることを再認識しました。今後は自分も時間をかけて理解することを実践していきます。
今後ChatGPTやgithub copilotなど便利なツールが広がっていくと思いますが、それが短期的な成果だけに繋がっていないか気をつけながら利用したいと思います。
※余談ですが、本記事冒頭の画像は最近ChatGPTから使えるようになったDALL-Eで生成したものです。

今回は自分が悩んでいる個人の生産性についてのみ触れましたが、本書ではコミュニケーションやチームビルディングに関してもページが割かれています。
多くのエンジニアにとって学びのある本だと思いますので、読んでみては如何でしょうか。私は著者のnoteも読んでみようと思います。 note.com