こんにちは。
システムチーム プログラマーのNです。
最近、「プログラマー脳」という書籍を読みました。
これはプログラムをする際にどのように脳が使われているのか、認知科学に基づいて書かれています。
今の自分の現状と比較しながら振り返ろうと思います。
3つの認知プロセス
プログラミングにおける認知プロセスは3つ、
・短期記憶
・長期記憶
・ワーキングメモリ
何かの思考をする場合は上記の認知プロセスが状況によって活性化されるみたいなんですが、
いまどのプロセスが活性化されているかを意識したことはありませんでした。
わかりやすくPCに例えると
短期記憶 = メモリ
長期記憶 = ハードディスク
ワーキングメモリ = CPU
のような振り分けになるのかなと思います。
短期記憶の容量は限られている
短期記憶に保存できる容量は
物事の2つから6つが限界だそうです。
それ以上は認知的負荷が高まり、作業効率が悪くなる。
自分はここで細かくできていないように思います。
問題を大きいまま解決しようとするからそのまま短期記憶に残り続けて負荷が高くなることがあります。
細分化することの目的は負荷を分散すること。
解決したあとは短期記憶の容量を空けてあげるように意識することが大事だと感じました。
短期記憶の内容を長期記憶に保存する
短期記憶から長期記憶に保存されることによって、その問題を解決した方法は知識になる。
長期記憶が少ない = 知識不足
ということなのかと思いました。
例としてプログラムで考えたときに、
forループの書き方って調べなくても記憶している。
変数への代入やメソッド定義の書き方なども自然に書けます。
日常生活でも考えたら、靴紐の結び方なんかは「こう結ぼう」と考えなくても体が自然に動く。
これが長期記憶へ保存されている状態なのかなと思います。
繰り返し、繰り返しやって初めて長期記憶に固定される。
自分と比較してみると、リリースしたあとに振り返ることが少ないと感じます。
情報を見聞きした2日後には長期記憶に25%しか残らないみたいです。
長期記憶に固定するために、次の機能改修を始める前に直前の機能改修を振り返ろうと思います。
認知的負荷を下げるために
この書籍に書いてあるのですが、
プログラマーの時間の約60%はコードを読むことに費やされる
ということが研究の結果わかっているそうです。
コードが読みやすいというのは作業効率に直結する。
どんなコードが読みやすいのか考えてみると
変数の中身に何が入っているのかを把握することは重要だと思いました。
「a」や「b」の変数名では1から遡って確認しないと想像することもできない。
過度に省略することもわかりにくくなると思う。
すぐに実践できて効果が出る方法として
命名を最重要に考える
2日後には長期記憶に25%しか残らないという前提があるのだから、わかりやすく意味のある命名を徹底しようと思います。