「プログラミングというより物事が出来るようになる思考法」
牛尾さんによるnote、2021/11/22 結構話題になった印象
アメリカのマイクロソフトにいる方
昔からいくらその対象に時間をかけても、努力しても、人並みにすらならない。
彼は最初の一つのログだけを見て、「仮説」を立て始めた。手は一切動かさない。彼はしゃべりながら、アーキテクチャがこうなっていてこのログがこうなっているから、自分の推測では、こういうことが起こっていると思われる。だから、自分が調べるべきはこのテーブルといって、SQLを1つだけ実行した。それがまさに問題の原因を表していた。
プログラミングの生産性というのは圧倒的な「頭脳労働」であるということを実感した瞬間だった。
そんな彼ら(※若く優秀な同僚)と、On Boarding つまり新しいことに取り組むときの話になった。
「いやぁ、ビデオ見ても難しいので、10回観てますわ。何回も見直して、分からないところポーズしてメモして観てます。」
どんなに頭がいい人でも理解には時間がかかるものなのだ。(引用者による協調)
頭のいい人が理解が早いように見えるのは、そうやって時間をかけてきて積み重ねているので、既に理解していることに関して頭のメモリにコンテキストが載っているからだ。
皮肉なことに「早く出来るように頑張る」ということが最終的な生産性を圧倒的に下げていたのだ。理解が十分でないから、努力しても空回りになるし、身につかないし、忘れやすくなるので頭にのこらないのだ。
理解に時間をかける
ドキュメントを読んでいて理解できない箇所がでてきたら、時間をかけて理解して進むようにした。
「理解しよう」という意識を持つことで、分からない英単語を聞いたらその場で調べるようになったし、わからなかったら聞き直すようになった
「理解は時間がかかるもの」として、早くしようとせず、徹底的に理解する習慣をつけていくと、自分の人生でかつて経験したことが無いことが起こった。(略)圧倒的に試行錯誤が減って問題に一直線に解決できるようになってきた。
そして、何より最高なのが人生で初めて何かわからないことがあっても「自分ならやれる」と思えたことだ。この感覚が欲しくて50年間あがいてきたのだ、それがやっと手に入った。
eXtreme Programming を開発した Kent Beck は言っていた。「私は偉大なプログラマではなく、偉大な習慣を身に着けたプログラマだ」と。私はみんなより頭が悪いとずっと思っていた。事実どんなに努力しても、時間と金をぶち込んでも、いつもできなかったのだ。しかし、それは頭ではなかった。単なる思考の習慣だった。ギターの件を思い起こすと、根本原因は同じだったように感じる。早くできるように頑張るために出来なくなっていたのだ。どんな人も最初は難しくて、簡単なものなんてなくて、理解には時間がかかるのだ。今の自分はとても幸せな気分だ。本当に人生で欲しかったものがアメリカで手に入るなんて思ってもいなかった。
Kent Beckの習慣の話とつながるのがエモい