リファクタリング・ウェットウェアを読んだ。

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

プログラムコードのリファクタリング関係の本を読もうと思ってAmazonで検索していたらこの本が引っかかり、なんか面白そうだったので買ってみました。内容は、プログラムコードをリファクタリングする話ではなくて達人プログラマーになるために脳をリファクタリングする方法が書かかれています。

一通り読んでみましたが、結構面白かったです。例のごとく、読書はブログに書くまでが読書なのでまとめます。

初心者と達人の違い

この本では、初心者と達人の違いとその道のりについて、以下のように分類しています。

  1. 初心者 初心者は当該の技能分野における技能を持っていない。 学びたいという意欲はほとんどなく、当面の目標を達成したいと思っている。 コンテキストに左右されないルール・手順があれば、ある程度効果的に作業ができる。
  2. 中級者 中級者は最近経験した似通った場面を参考に、コンテキストを考慮して作業が行える。 しかし、問題処理にはまだ手こずる。 全体像については理解しておらず、理解したいとも(今はまだ)思っていない。
  3. 上級者 上級者はこれまで経験したことのない新しい問題の解決法を考え出せるようになる。 上級者は、チームの指導者的役割を担う傾向がある。 自らを振り返り、補正していくのに十分な能力はまだ備えていない。
  4. 熟練者 熟練者には全体像が必要で、技能を取り巻く大きな概念を理解しようとする。 自分の行動を振り返り、パフォーマンスを改善するために自らの取り組みを修正できる。 熟練者は、他人の失敗からも学ぶことができる。
  5.  達人 達人は何かをするのに、「理由があってそうする」のではなく、直感に従って行動する。 そしてその直感は当たる。傍目には魔法のようにしか見えない。 達人に初心者と同様のルールを適用すると、達人は能力を発揮できなくなる。

自分の周りを見渡しても、ああなるほど、と思えるような分類です。ちなみに、初心者~達人のそれぞれの分布は、明確な数字こそ書かれていませんでしたが、概ね 初心者:中級者:上級者:熟練者:達人=15%:45%:25%:10%:5%といった感じのグラフが記載されていました。

自分や自分の周りがどの位置にいるのか、考えてみると面白いですが、自分の位置を考える場合には「初心者~中級者は自分を過大評価しやすい」らしいので要注意です。実際、プログラムの知識が低い人のに変に自信ばっかりある人って結構多いですよね…。

脳の仕組み

この本では、脳の役割をLモード/Rモードに分けて説明しています。Lモードは言語や理論を司っている部分で、Rモードは非言語的で非理論的なものを司っている部分です。Rモードがよくわかりませんが、例えば、ランチのときに定食屋で流れていた昔の音楽の曲名が思い出せなくて、その夜の晩のお風呂に入っているときに、特にそれについて考えていたわけでもないのに不意に曲名を思い出すようなことってないですかね。それがRモードの成果らしいです。

Rモードとは、過去の経験や記憶非言語的なパターンマッチングによってバックグラウンドで実行してくれるらしいです。どういうことかというと、人間の脳は過去の記憶を実は全て持っていて、Rモードはそれを参照してくれるらしいです。でも、Rモードは言語化が苦手、かつLモードに脳が占有されていないときにしか能力を発揮できないそう。

特にプログラマと呼ばれる人たちは、Lモードが発達しているためにRモードを有効活用できていないと著者は言っています。Rモードを有効かつ強力に活用し、その上でLモードと連携がとれるようになれば、「過去の経験から現状のコンテキストを考慮した上で最適解を高速に導き出す」という達人の魔法が使えるようになる。らしい。

最後に

最終章に印象的な一文があったので。

初心は多くの可能性をはらんでいるが、達人の心には可能性がほとんどない 達人にとって致命的なのは、達人のごとく振る舞ってしまうこと

初心忘るべからず。