見出し画像

【読書録】世界一流エンジニアの思考法

はじめに


牛尾剛さんの『世界一流エンジニアの思考法』を読んだので、その感想を記録しておく。

筆者はMicroSoft社に勤めるプログラマー。本人曰くプログラマは向いていなかったが、夢を諦められず44歳にしてMicroSoftに転職したそうだ。すごい。

MicroSoftで出会った一流のエンジニア達と筆者との間では、脳のスペックには大きな違いは感じないが、脳の使い方、すなわち「思考法」に違いがあることがわかった。筆者は「できる」感覚や「仕事をコントロールできている」手応えを得られないという悩みを抱えていたというが、この「一流の思考法」を模倣することで解消することができたそうだ。

この「できる感がない」というのは、まさに自分が抱えている悩みであり、本書を通して考えさせられることが多かった。

「できる」という感覚


エンジニアとして働き始めて、社内では中堅と呼ばれる年次になってきた。にも関わらず、自分の感覚としては2~3年目の時とスキルが変わっていないのだ。

入社当時よりは確実に知識は増えていると思うし、色々な視点も持てるようにはなってきた。複数の仕事を同時にこなすこともできるようになった。だけど、エンジニアとしての確固たる自信のようなものがこれっぽっちもない。

自分としてはどうなれば自信を持てるようになるのかがわからずに長く悩んでいたのだが、ポイントは「本当に理解しているか?」というところにあるらしい。

作業自体は進んでいても、理解できているとは限らない。ここにはエンジニアがやりがち(少なくとも自分はめちゃくちゃやる)な思考の癖が原因だという。

「試行錯誤は悪」


プログラミングをしている時などでエラーが出たときの対応として、よくやりがちなのが、あーでもないこーでもないととにかく色々試してみるというパターン。エラーがなくなったらよくて、ふー動いた動いた、よかったーと満足してしまう。

なんとなくエラー文を読み、なんとなくダメそうな場所にあたりをつけて、なんとなく書き換えてみて、実行する。実行する時はほぼ祈りに近い感情だ。ひどい時はエラー文をそのまま貼り付けてググり、見つかったものをコピペで実行するだけ。

最近だとChatGPTにコードとエラー文を伝えて、書かせたコードを思考停止で貼り付ける。

このように試行錯誤的にとにかく実行しまくることは、「悪」だそうだ。なぜなら、成長がないから。いろいろ試してみた結果その問題が解決したとして、その時は成果が出ているかもしれないけど、次に同じような問題に当たった時、また試行錯誤するしかないからだ。「運よく」エラーが解決するまで試すしかない。

では一流はどうするかというと、仮説検証と言う形で対処するそうだ。すぐに実行には移さず、じっくり考え、状況を確実に理解して仮説を立て、それを検証するという形で、やっと実行する。

問題への対処に理解を伴っているため、同じ問題に対しては即効で対応できるし、応用が効くので似たような問題にも対処できる。試行錯誤で頑張る方が、その時に直面している問題を解決するまでの時間は短いかもしれないが、長い目でみた時にどちらの方が良いかは明らかだ。

理解には時間がかかる


とにかく問題を解決しようとするのではなく、理解して対処すべきであることはわかるのだが、一方でこうも思う。頭がいい人がやるから現実的な時間で終わるのであって、自分のような凡人が同じことをやろうとしたら、果てしなく時間がかかるのでは?と。

けどこの考え自体が間違っていて、筆者曰く、一流だからと言って特別優れた脳をもっているという事ではなく(とはいえ、頭の使い方はうまいが)、物事を理解するのにはそれ相応の時間がかかるのだという。それでも、彼らはその意義を十分に知っているから、時間をかけると言うことだ。

そして実際には、知識が積み重なっていくことによって理解の速度も向上しているのだろう。つまり、投資だと思って、最初は地道に時間をかけていくしかない。

基礎練


結局、すべきことは基礎練に回帰する。物事を理解するには、その土台となる基礎的な知識が必要だ。そして、基礎が固まっていると地に足がつき、「できる」と言う感覚につながるということだ。筆者もエンジニアとしてのスキルの他、ギターのスキルについても、基礎固めを徹底することで解像度が上がり、「なんとなくやっている」という状況から抜け出せたらしい。

自分は基礎練が嫌いだ。高校時代にバスケットボールをしていた時も、大学時代にテニスをやっていた時も、基礎練を避けに避けて来た。そのせいか、常になんとなくでプレーして来た。色々なことが「見えている」チームメイトがいる中で、自分は基本的にピンと来ていないことが多かったが、それは自分には才能がないからだ、と捉えていた。しかしどうやらそれは間違いだったようだ。

確実な基礎があって初めてわかるようになることがあり、その上でコントロールできている感覚を得ることができるようだ。勉強でもスポーツでも音楽でも、それは共通しているようだ。

もはや基礎練が嫌いとは言ってられない。むしろ、もはや誰もやり方を教えてはくれないので、自分なりの基礎練を編み出すところから始めなければならない。まずは、「わかっていないことをわかる」ためにも、疑問をとにかく深掘りしていくことから始めようと思う。

記憶について


本書では、記憶についても触れられている。端的に言うと、「覚えられないのは理解していないから」と言うことらしい。自分は記憶力のなさについても非常に悩んでいるのだが、前述のように理解することを徹底すれば、自ずと解消するようだ。自分が書いたコードがわからないと言う、何度直面したかわからない現象からも解法される。

もう一つ、なるほど!と思ったのは、とにかく自分の頭の中だけで整理するように心がけることらしい。コーネルメソッドと呼ばれるノートの取り方なども面白かったけども、自分としてはのこの頭の中だけで簡潔させるという対処法が最もインパクトがあった。

基本的には、その場で完全に覚えるつもりで頭の中で情報を整理するということなのだが、実際にやろうとすると言うは易しでなかなか難しい。考えがグルグル渦巻いてうまく整理できない。従って、うまく覚えることもできない。

ただ、これは訓練らしい。意識的にこれをやるようにすれば、次第にうまくできるようになってくるとのこと。

スマホやパソコンを常用するようになってから、わからないことがあったらすぐに調べるようになったし、忘れそうなことがあったらメモするようになったし、記録を取るためにも文字を打ちながらものを考えるようになった。これ自体は悪いことではないと自分では考えているのだが、あからさまに脳みそは使わなくなったような気がする。そのせいで、ものを覚えられないし、深く考えられなくなっているのだとすると、意識的に頭を働かせることで、この辺りの解決が望めるのもなんとなく納得できる。

書きながら考えるのではなく、なるべく頭の中で考えるようにし、それをなるべく頭の中に残すように心がけてみよう。脳が活性化されるに越したことはない。

終わりに


いかに普段の仕事において、理解することを疎かにしているかを改めて知らされた。真に理解することから知らず知らずのうちに逃げていたようで、そのことに気づいてしまい、殴られたような気分になった。

しかしそれは、まさに自分が悩んでいる「できるという感覚がない」問題の根本原因であり、理解を徹底することで解消することができると言うことなので、今後は逃げずに向き合っていきたいところだ。

これにあたり、「メンタルモデル」というものが助けになるらしい。次は本書にて紹介された(一流エンジニアにより著者が勧められたらしい)「超一流が実践する思考法を世界中から集めて一冊にまとめてみた」を読み、脳の使い方を学んでみようと思う。

本書ではその他にもエンジニアならではの仕事の進め方や日本とアメリカの文化の違いなどにも触れており、勉強になる部分が多かった。エンジニアの方にはとりあえず勧めたい一冊だ。

*どうでもいいが、文体を変えてみた。こっちの方が書きやすくていい。

いいなと思ったら応援しよう!

この記事が参加している募集