どうも!まさひろです!
世界で活躍しているエンジニアは高いパフォーマンスや生産性を出して仕事をしています!
今回は書籍「世界一流エンジニアの思考法」について紹介したいと思います。
優秀なエンジニアをやっている方の働き方や生産性、マインドについて特に印象に残ったことをまとめていますので、気になる人はぜひ読んでみてくださいね〜!
こんな人におすすめです!
・海外と日本のエンジニアの働き方やマインドについて知りたい人
・生産性を高めたい人、パフォーマンスを上げたい人
・チーム内のコミュニケーションを円滑にしたい人
はじめに
こちらの本は、かの有名なMicrosoftで働くエンジニア牛尾剛さんの書籍になります。
牛尾さんは知ったのはnoteの記事を読んだことがきっかけです!
【note】プログラミングというより物事が出来る思考法~実践編
https://note.com/simplearchitect/n/nbecdf4a687c0
海外エンジニアの働き方や自分の考えを発信している記事を読んで日本と海外の働き方の違いやマインド、仕事に対する姿勢に共感しました!
本が出版されていて僕が購入した時は7万部(2024/12に購入した当時)も売れている大ヒット書籍だったのでAmazonで購入しました!
本の内容は?
こちらの本は主にエンジニアが日本と海外の働き方や仕事に対する姿勢、マインド、生産性、コミュニケーション、チームビルディングなど様々ことがまとめられています。
この記事では参考になったことを以下の4点に絞って紹介したいと思います!
一流のマインドセット
情報整理のテクニック
コミュニケーション 生産性の高さを上げる
生産性の高さを上げる
皆さんの職場でも優秀なエンジニアがいると思いますがその人の生産性はとても高いなと感じることはありませんか?
例えばエラー1つでも、そのログをさらっと見て解決してしまうエンジニアがいると思います。
僕もエラーに遭遇したとき、色んなパターンを試して解決するのに時間がかかってしまうことがよくあります。ああでもない、こうでもないと色んなことを思いつき、試すということを繰り返して解決することが多いです。
また同じようなエラーに遭遇したときにも同様な手順を踏んでしまうとまた時間をかけて解決しなければならない悩みなどを考えたことがあります。
しかし、優秀なエンジニアはまずは1つのログを見て仮説を立てます。むやみに手を動かさないです。
データ(情報収集) ⇒ 仮説を立てる ⇒ 仮説を検証する ⇒ 手を動かす
生産性の高いエンジニアはこれをしっかり意識してやっており、時間をかけずに短時間で解決をしているのです。
いくつかの仮説を立てたとき、こうなんじゃないかな?と推測してから実行するというステップを踏んでいるので、
- 無駄なことをしない
- 色んなパターンをやらなくて済む
結果として短時間で解決できるので、また同じようなことが起きても仮説を立てて作業するので、高い生産性を出すことが出来るのです。
つまり、高い生産性を作っていくには試行錯誤という行為が良くないということです。
思いつきで色々と試してみるというのは分かりますが、限られた時間で高い生産性を出していくには仮説を立てたステップが必要なのです。
どんな一流のエンジニアでも理解には時間をかける
天才と呼ばれているエンジニアはパパッと解決出来るイメージがありますが、
理解するのに時間を使っています。
なんとなくで理解するのではなく、本質的に理解しているのです。
では理解とは何なのか?というと
他の人に説明ができる
いつでも使える
基礎で学んだことを応用できる
が挙げられます。
確かに出来る人というのは上記の3つを押さえていると思っています。
- 他の人に説明ができる ⇒ ちゃんと理解していないと教えられない
- いつでも使える ⇒ どんなケースでも柔軟に対応して利用することが出来る
- 基礎で学んだことを応用できる ⇒ 基礎がしっかり出来ているので難しい問題でも応用して対応できる
しかし、こういったことが出来るのは基礎の積み重ねが大事があるからこそ成し遂げられるのです。
なので急ぐことなく、しっかり時間を充てて徹底的に理解に時間をかけることが大事なんだなと感じました。
どんなに頭の良いエンジニアでも理解には時間がかかる
ということです。
一流のマインドセット
一流エンジニアのマインドセットというのは
「より少ない時間で価値を最大化する」
という考え方を持っています
いかにやることを減らす
一流のエンジニアがとても大事にしている考え方が
より少ない時間で価値を最大化
というマインドセットを持っています
例えば、日本ではタスクの優先順位で1番目に重要なもの、2番目に重要なもの、3番目に重要なもの、、、と順番をつけ、時間が余ったら最後まで実施しようと考えます。
結果、重要度が低いものまでにも時間が大幅にかかってしまい、全部やってしまうというがあります。
ところが、海外のメンバーの方の考え方は
最初の1個をピックアップしてやったら他はやらない。その1つにフォーカスをする
という考え方です。
一番重要であるものを確実にやることが大切
日本人はあれもこれもとやらないといけないと考えがちになりますが、海外メンバーその中から重要なものをピックアップしてタスクを進めていくのです。
統計によるとソフトウェアの機能のうち40%くらいしか使われないと言われています。
つまり、100%を全力で作っても残りの60%は使われないのです。
いかにしてやらないことを削っていくことが高い生産性を出す秘訣だと思います。
なので、本当に必要な機能は何か?不要な機能は何かを話し合ったりしていかにして短い時間で価値を最大化ができていくのだなと感じました。
全部やらないというのは悪いと考えていしまいますが、やることを減らすことで高い生産性を保つことが出来るのです。
リスクや間違いを快く受け入れる
日本では失敗が許されないという考え方が多くありますが、
海外では失敗を賞賛されるということが多いです(むしろ感謝される)
失敗 = ネガティブなイメージをもたれますが、失敗をすることでフィードバックが貰えるのです。
フィードバックを貰えることでいち早く間違いに気づくことで修正できるのです。
むしろチャレンジしない方が会社のリスクを高めるので、
挑戦 => 失敗 => フィードバック => 修正
のサイクルを早く回していく方が価値があり、
エンジニアでも新しい技術の導入がありますが、まずは試してみる精神の方がいいかなと思います。
試してみて良かったら導入、ダメだったらフィードバックを得て導入するかを再検討をするで良いのではないかと思います。
ただ、ずっと検討ばかりしていてもダメかなと思います。「やらない」という選択肢をずっとしていると挑戦から修正までのフィードバックサイクルを得ることが出来ないです。
「やらないことは最大のリスク」に陥ってしまうので、アジャイル開発では挑戦することがプロダクトの成長に繋がるんだ!というマインドを持った方が成功する確率もが上がっていくのではないかと思っています!
情報整理のテクニック
クリエイティブな仕事をしていると頭の負荷はかなり負担がかかります。
時間が有限な中で良いパフォーマンスを出すにはいかにして脳の負担を下げた方法が必要になってきます。
いかにして脳みその負担を減らすか
僕はソースコードを読むのに端から端まで読んでいました。結果、
- 脳が疲れて集中力が続かない
- ソースコードを理解するのに時間がかかる
しかし優秀なエンジニアは、インタフェースの構造や関係性、メソッドの役割を理解して読んでいるということです。
要するに大事な箇所、必要なところだけを読み、脳への負担を減らしてコードリーディングをしているのです。
僕もこちらを実践してみたら、楽にソースコードを読めるようになり、脳への負担も少なく、理解することが出来ました。
脳への使い方を間違えると大変だと思っていたことも、簡単に理解できるようなりました!
脳のCPUをフル回転すると脳が疲れて頭に入ってこなかったり、集中力がなくなってしまうなど結構大変だったんですが必要な部分(クラスの役割パターン、インタフェースの役割)を理解で十分なんだなと感じました!
ソースコードを読む上で、何が重要な役割を果たしているか?そして実装で必要な箇所、影響があるところをまず確認することが大事だと思います。細かいところまで読もうとするとそれは尋常ではないくらいの脳のメモリを使うことになります。
僕も結構をこれをやっていて、脳の負荷がかかってしまい頭が回らなくなってしまうことも多々ありました。
なのでタスクを見て、実装や要件で必要な箇所を洗い出して、必要な箇所に絞ってタスクを進めることにしました。そうすることによって以前より、短時間で実装が終わるようになり、他のタスクにも着手できるようになったので
初心者の時にこれをやっておけば良かったなと感じています!
コミュニケーション
チームメンバーやクライアントとのやりとりをする上で欠かせないのがコミュニケーションです。
特に大事なのが、最初から全部を説明しないことです。
情報量を減らす
ドキュメントでなんでもかんでも情報を伝えるというのは良くなく、要点のみ絞ると情報が伝わりやすくなります。
確かに周りのエンジニアの方は基本忙しいです。その忙しい中で長々としたメッセージやドキュメントだったらどうでしょうか?
とても分かりにくく、何を伝えたいのかが分からないということもあるでしょう。
また、何回もやりとりをすることになってしまい、相手に時間を取らせてしまうこともあります。
なので、要点のみをまとめて説明したり、箇条書きで説明するようにしましょう。
相手が分からないことを聞いてきたら、そのときにちゃんと回答した方が円滑に進みますよね。
つまり、最初から全部説明せずに情報量を減らして相手に必要なことだけを伝えることが良いコミュニケーションを取れるのです。
さいごに
いかがだったでしょうか?
世界一流で働くエンジニアは天才で真似ができないと思っていましたが、本を読んでみて自分でも実践できるなと感じました。
皆さんの現場にも優秀なエンジニアがいると思いますがその方に開発で考えていることやマインドなどを聞いてみてもいいかもしれません。
高い生産性を上げている人はこれらのことを遵守して生産性を保っているんだと感じられます。
ぜひ興味を持った方は読んでみてください!