社内で2冊目のBook Clubの題材として、「プログラマー脳 ~優れたプログラマーになるための認知科学に基づくアプローチ」の本を読んでいます。
英語タイトルは「The Programmer’s Brain - What every programmer needs to know about cognition.」
簡単なまとめ
Chapter 1では何を記憶するにも短期記憶、長期記憶、ワーキングメモリに分かれていることが説明されていました。
Chapter 2では、簡単にまとめると、基本的に誰でも理解していないことは一度に2−6個しか覚えられない。なので、コードを読む時も、デザインパターンを理解していると読みやすいことや、これまで書いてきたコードの書き方と踏襲したものだとみやすいとか、キーとなる「ビーコン」という大切な情報を探して理解していくことにより、より効率的に読んでいくことができることが書かれていました。
新しいことは2-6個しか覚えられないけど、知っていることと関連していることであればよく理解して覚えやすいということで、プログラマーとしては自分のこれまで使ってきたパターンだけにとどまらず、他の言語の手法とか書き方とか、既存の言語でも新しい書き方を見て覚えることにより、理解を深めていくことができることがわかりました。
プログラマーに教える時
関連して、新しいプログラマーの教育的な観点でも、新しい観点を同時に教えても一気には覚えられないということの理解も必要ですし、その人にとってどんな書き方が新しい書き方なのかとか、このデザインパターンをわかっているかなどを考えながら会話することも大切と感じました。
登壇するときなど
別の点として、最近色々登壇などしていますが、その時の話し方の点でもいろいろ参考になる点があるかなと思いました。もちろん聞き手によってスキルが違うので全ての人にとって新しい点が6個以内となると難しくなりますが、想定視聴者にとって新しいアイデアが2-6個にとどめることは大切ですし、逆にみんながすでに理解している当たり前のことだけで終わってしまったら面白くない話で終わってしまいそうな気がしました。
また、新しいアイデアを説明するにしても、聞いてる人が理解できてつなげられるポイントを使って、その発展系として話すことにより、自分の知っていることと、新しいことを関連付けて話せるので、そういう意味でも聞いている人にわかりみと発見が提供できるような話ができるといいなと感じました。
その点でいつも僕が気をつけていることとしては、自分の言葉で話すことは気をつけています。どうしても話をするときに文章を読んでしまうことが昔はありましたが、読むときには場合によっては自分も理解せずに読んでしまうことが可能になります。逆に読まずに話すことは短期記憶の容量としても全てを記憶することはできないため、少なくとも自分の長期記憶の引き出しから話さないといけないので、自分の本当に理解できたことを話せるということになります。
30分くらいの話を章立てだけしたメモで話したときに、読んで話している人からなんでそんなに覚えられるのかを聞かれることがありましたが、実際に覚えているわけではなく、理解していることを噛み砕いて話しているだけなので、実際練習と本番で細かなことは全然違う順序や詳細で話していることもあります。それを破綻させないためにも、全体の進行メモ的なものは必要かと思います。僕ははマインドマップを使って行う時もありますが、マインドマップは話すときに役に立つというよりも、マインドマップを作るときに構造を考えることにより、理解が深まり、実際に話すときに話しやすくなるのかなと感じます。
まとめ
本としてはプログラミングで記憶を活用してコードを効率的に読むことが扱われていましたが、関連して考えていくといろいろ面白い観点があると感じました。自分が効率的にコードを読むことだけでなく、自分のコードを効率的に読んでもらうために行わないといけないことも色々考える機会になったので、こちらの本はおすすめです。まだまだBook Clubは続きますのでまた感想を書ければと思います。