コードを読む能力も書く能力も高い人の頭の中はどうなっているのか?自分とは何が違うのか?ということはエンジニアであれば誰しも考えたことがあると思う。(たぶん)
プログラマ脳という本は、認知科学のアプローチを用いて、コーディングという創造的なプロセスを科学していく本で、脳が筋肉でできている人が読むべき内容だった。
脳筋の下りは半分冗談として、最近コーディングクイズの日課を再開したのだが、データ構造やアルゴリズムの勉強以外に何か根っこの部分も鍛える・改善する方法はないだろうか?と思って色々調べていたらたどり着いたのがこの本だった。
書評としてこの本を読んで気になった点を書きまとめておく。
ワーキングメモリというワードはこの本では重要なキーワードになっており、最後の章まで度々登場する。
人間がコーディングするとき、脳内では長期記憶・短期記憶・ワーキングメモリという3つの認知プロセスが働いている。
長期記憶・短期記憶はそれぞれ記憶の特性・保持期間によるストレージの違いで、脳内の長期記憶なストレージ・短期記憶なストレージからの読み取りプロセス。
ワーキングメモリは長期記憶や短期記憶のデータを利用する脳内CPUの処理プロセス。
ワーキングメモリへの負荷が高まると対峙しているコードへの混乱が生じる。
負荷を減らすためには、長期記憶や短期記憶それぞれのストレージの性能を上げたり、パフォーマンスを最適化するためのアプローチを講じると良い。
記憶が長期なのか?短期なのか?によってその記憶を引き出すためのアプローチを考える、鍛えるというのが良いらしい。
色々なアプローチについては本を参照ということで割愛する。
コードを読むことと自然言語の文章を読むことは共通点が多いという研究結果がある。
自然言語の学習能力はプラグラミングの学習能力にも影響する部分があり、また自然言語に文章理解におけるアプローチはコードの理解におけるアプローチにも応用できる可能性がある、という。
これは聞いたことのある話ではあったが、なるほどなぁと思った。
コードがよく書ける人、読める人は自然言語の能力も高いと感じることがよくあるので納得感が大きい。
仕様がややこしくで理解するのが大変なアプリケーションのコードリーディングの際に、自然言語による文章と合わせてコードを読み解いていくアプローチを取ることが偶にあるが、あれは科学的に効果的だったんだなぁと思った。
最近はエディタも賢いし、デバッガーも優秀なのでコードを読むのはそういったツールを使えば読みやすいので自然言語でわざわざ何かするのは面倒だなぁと考えていたが、深い理解のためには自然言語でのアプローチもちゃんと考えると良いなと思った。
脳の仕組みを理解すれば、鍛え方やハックする方法も見えたりする、というのが学んだ本だった。こういうアプローチでコーディングを考える本を他に読んだことがなかったので新鮮だった。なんとなく感じていたことが科学的には説明されているという発見がいくつかあった。
長期記憶は鍛える方法がある(繰り返し学習したり、暗記したり)けど、短期記憶はどうやって鍛えるのだろう?
短期記憶は鍛えなくても色々なアプローチで性能をカバーすることができるだろうけど、短期記憶を鍛えればパワー(筋肉)が付くなぁ。
ワーキングメモリを鍛える方法はあるらしい。
脳の「ワーキングメモリ」を鍛える方法。仕事の能力、勉強の効率アップには、ワーキングメモリの強化と解放が効く!
昔流行った「脳トレ」(今も流行っている・・?)とかもワーキングメモリを鍛える系の類いかな?