『世界一流エンジニアの思考法』 から学んだ考え方
はじめに
私はwebエンジニアとして3年経つくらいですが、「もっと経験を積めばできるようになるんだろうなー」と思いながら仕事をしている事が多々ありました。早くバグを見つけ修正する、コードを速く理解する、学んだ事や過去のプッシュをすぐ思い出せるなど、他の人ができて自分にできない事を経験年数の違いと思い込んでいました。エンジニア歴3年目に入る段階で、自分にはエンジニアとして適正が無いんじゃないかとも少し考えていました。しかし、この本はそれらの問題を解決に導いてくれました。
今回はこの本から学んだ考え方を一部まとめました。
本に関する情報
世界一流エンジニアの思考法
著者の牛尾 剛さんは米マイクロソフトAzure Functionsプロダクトチームのシニアソフトウェアエンジニアです。この本ではマイクロソフト内において、自称三流エンジニアの牛尾さんが一流エンジニアと自分の違いを明確にし、何をしたらつよつよエンジニアになれるかをまとめた本になります。学んだ事
試行錯誤は悪
バグや開発で行き詰った時、「自分の持っている力で試行錯誤する事が正」は誤解。試行錯誤は自分が出せるアイデア内のパターンを組み合わせたに過ぎず、時間がかかる上に学びが無い。
バグが発生した時、そのバグに対しあらゆる解法を試行錯誤して見つけるのではなく、まずはエラーメッセージや再現方法などから情報収集を行う。そして仮説を立て、仮説の検証を行う。仮説が証明されたらバグ改修を行い、証明できなければ再度情報収集からやり直す。これを行うことにより試行錯誤で費やす時間よりも短い時間で高い生産性を出せる
これを読んだ時、普段行っているバグ改修の中で時間をかけないで行えたものは大体この手順をきちんと踏めている事に気付きました。逆に時間をかけて尚且つそんな大きな規模でなかったバグ改修は無駄な試行錯誤にほとんどの時間を費やしていました。
理解のスピード
つよつよエンジニアは新規のコードや問題への理解が速い。なぜ速いかというと、理解するために時間をかけているから。一見矛盾しているようだが実は違う。新規で追加機能を載せるプロダクトAがあるとする。Aへの理解が浅い状態で追加機能を開発しようとすると、追加機能への理解とAへの影響範囲の理解が必要になり、取り組む時間が大きくなる。しかし、つよつよエンジニアはプロダクトAへの理解をまず徹底して行う。そうする事により追加機能開発の際は追加機能に対しての理解のみで済み、すぐ開発に取り組める。基礎・基盤への理解を惜しまない事が後の"理解のスピード"を上げる事に直結する。
早く理解するためのコツや裏技が無いかと調べたり問題に直面する度に同じような内容を調べたりしてしまう事がよりありました。結局は裏技などではなく、きちんと理解するにつきるという事ですね。
Fail Fast(早く失敗する)
検討に時間をかけすぎるのをやめる。これは失敗が許されないという考え方から来る間違いであり、検討ではなく検証に時間を使う事が大切。まずはやってみて、早くフィードバックを得て、早く間違いを修正する。開発における不確実性を許容し早く失敗できる環境を作る。そうすれば検討にいつまでも時間をかけてやらない時間を作るより、より早く良いアウトプットを作り出す事ができる。
これは仕事などではなく日常でもよくしがちなミスでした。何かをするための準備や、やるための情報収集を先に行い。いつまで経っても始めない。とにかく早く始めてそこでミスしてもOK!そのミスから良いフィードバックを得て次に進もう!という心がけで仕事も日常生活も過ごしていきたいですね。
まとめ
この本に直接記載はありませんが、自分がいつかできるようになるという思い込み自体がそもそも間違いで、自分と他人は何が違いどうすればできるようになるかを考える、という根本のスキルが足りていない事にも気づかされました。
今回上げたのは本当に一部ですが、この本にはコーディングに限らず"コミュニケーション"や"チームビルディング"、"生活習慣術"など人生に活かせる幅広いtipsが載っています。自分もつよつよエンジニアになれるよう実践していきます。
Discussion