こつつみ

コツコツ積み上げる

プログラマー脳を読んだ

自分の観測範囲で絶賛されているプログラマーを読んでみました。

https://www.amazon.co.jp/dp/4798068535

書評

文章が堅苦しくなく読みやすかったです。この書評では自分が心に残ったことを書いていきます。

以下の3パートに分かれて書かれていて、過去に説明した内容をもとに基づいて説明していく箇所もあるので頭から読んでいくのがよいと思います。

  • Part1 コードをよりよく読むために
  • Part2 コードについて考える
  • Part3 よりよいコードを書くために

プログラミングを行うとき、脳内では「短期記憶」「長期記憶」「ワーキングメモリ」の3つのプロセスが動いています。 それぞれでどのような働きをしてコードを読み解いていくのかが説明されており、非常に参考になりました。

Part1では、上をもとにどのようにしてコードを読み解いていくのが効果的かを示しています。 認知的負荷はワーキングメモリが処理をできる量に限界があるために発生します。認知的負荷が大きいと、コードを適切に処理することができなくなります。

プログラマーは仕事の6割は時間コードを読むことに充てていると言われています。そのため、認知的負荷を減らすためにも以下のことを意識したいと感じました。

  • リファクタリングし続ける
  • Why(なぜこうしたのか)のコメント
  • 依存関係グラフや状態遷移表などのドキュメント

Part2では、変数が「ステッパー」「最も重要な値の保持者」などのようにどのような役割を持っているか把握から始まり、メンタルモデル(目の前の問題について推論するために、ワーキングメモリの中で概念を抽象化するもの)を通した考え方など示唆に富んだものが多かった。

最後のPart3では、コードを書く上での方法について説明しています。 プログラミング中に行う作業を「検索」「理解」「転写」「増強」「探索」という5つに分類して、具体的にどういうことを行っているのか、その作業を難しくしている原因のか、それぞれの作業の最適化は異なる特性に基づいて行うことができるなど、難しい部分もあったが面白く振り返るよい機会になりました。

最後に

サブタイトルの通り「優れたプログラマーになるための認知科学に基づくアプローチ」について述べた本でした。

各箇所に演習があり自分の認識を気づかせてくれるのでとても良かったです。 出来るだけ飛ばさず演習をやり、自分の頭で考えることをお勧めします。