$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

「リファクタリング・ウェットウェア」を再読した

最近、学生時代よりも学習時間を取れなくなっていて、このままだと新しいことが身につかなくなっていっていくのではという危機感があった。またメンターをするにあたって、人の学習モデルをある程度理解しておいて、アドバイス出来るようにしたいという思いもあった。そこで、昔読んだ「リファクタリング・ウェットウェア」に、学習に関することが書いてあった記憶があったので、さらっと再読した。

[asin:4873114039:detail]

この本は、人間の脳について研究していた著者が、脳の働き方などについて解説し、その上で脳を活かすためにはどのようにしたら良いかについて解説している本。脳をハックするということを題材にしているのが面白い。

この本を読むと、人間の技能習得モデルとか、より良い学習の仕方とか、直感をうまく活かす手法とか、そのようなことを学ぶことが出来る。一度でも読んでおくと、今後の学習が効率的になるので、読んでみると良さそう。

昔の感想とかはブログを書くことによって「教える」 - $shibayu36->blog; とか、リファクタリング・ウェットウェア読んだ - $shibayu36->blog; とかに書かれている。


今回再読したら、次の点が印象に残った。

  • ドレイファスの技能習得モデル
  • 効率的な学習の手法
  • 散歩の手法
  • 書籍から学ぶためのSQ3R

ドレイファスの技能習得モデル

この本では、ドレイファス兄弟による、人間の技能習得過程についてのモデルについて解説されていた。これは、ある人の「技能ごと」に初心者・中級者・上級者・熟練者・達人という段階に分け、それぞれの段階ごとに適切な対処や学習法を適用するという考え方だった。詳しくは エンジニアの技能レベル〜ドレイファスモデル〜 にいい感じにまとめられていたので、こちらを参照。


実際、人に仕事を任せたり仕事を教えたりする時に、その人の今の能力を何も考えずに同じような任せ方をするとうまくいかないことがある。例えば、新しく入ってきた人にいきなり丸投げすると途方にくれるとか、逆にベテランに事細かに指示して任せるとモチベーションが高まらないとか。このような問題に遭遇しないために、ある程度人間の技能習得モデルのようなものを知っておくと、適切な任せ方を知ることが出来るかもしれない。

同様に、自分が学習をする時も、自分のある能力の現段階の技術レベルをモデルに従って理解しておくことで、その段階に応じた効率的な学習を検討できるように思った。


今回のモデルとは違うけど、似ているモデルである「発達の4段階」というのを「1分間リーダーシップ」という本で昔読んだ。こちらも同様に参考になりそう。詳しくは以前の目標と発達度によってリーダーシップを使い分ける - 「1分間リーダーシップ」読んだ - $shibayu36->blog; というブログ記事を参考。

効率的な学習の手法

この本には効率的な学習の手法についても言及があった。それによると、学習するときは、まず学習したい分野の実践を経験し、その後に体系的に書籍や授業、セミナーなどで学ぶと良いらしい。


ここで自分の大学時代を思い出してみると、そのころはプログラミングという経験を一切したことがなかったので、コンピュータサイエンスを学んでも何一つ理解することができなかった。しかし、今仕事でいろいろ経験した段階で、もう一度授業でならったことを思い出してみると、すんなり理解できることが多い。

つまり何かの知識を言語で学ぶ場合には、一定の経験が必要なのでは無いかと感じる。これは最近本を読んでいる時にも感じていて、本を面白いと感じるときは、基本的にその関係のことを昔経験している場合であることが多い。


こう考えると、まず何も経験せずに書籍やセミナーで学ぼうとするのは間違いだろう。資格とかを取得するときも、経験なしに受けるよりは、経験したことに関する資格を取るというのが学習には役立ちそうである。そこで、まずは手を動かしたり、実践に投入されていて、そこで疑問に思ったことを書籍などで学習すると良いのではと思った。

散歩の手法

エンジニアをやっていると、ずっと悩んでいた問題が、帰り道で歩いている時とかシャワーをあびている時にいきなり思いつくという経験をすることがある。そのようなことを能動的に起こすための散歩の手法が書かれていたことが面白かった。

本によると、次のような手順で散歩すると良いみたい。

  • 今解けない問題を全て紙に書き出す
  • その中で簡単そうなことを心に留める
  • 心に留めながら、そこまでその問題に集中せずに、ぼんやりと散歩をする
  • 解決策を思いついたらメモをする

ここでのポイントは、散歩中はそれについて考えすぎてはだめで、頭に留めておく程度にすることらしい。本当に効果があるかは分からないけど、とりあえず騙された気持ちで試してみるかなと思った。

書籍から学ぶためのSQ3R

書籍から効率的に学ぶためのSQ3Rという手法が紹介されていた。その手法は以下の手順で本を読むと良いとされている。

  • 調査(Survey) : 全体の要旨をつかむため、目次と各章の要約を流し読みする
  • 質問(Question) : 質問点を書き出す
  • 読書(Read) : 全文を読む
  • 復唱(Recite) : 要約し、ノートに書き、ポイントを自分の言葉でまとめる
  • まとめ(Review) : もう一度読み、さらにノートに書き出し、仲間と議論する

これを見たら、意外と今の自分の読書のやり方は悪くなかったんだなーと思った。今の読書の方法は 先に疑問を考えてから本を読む - $shibayu36->blog; とかに書かれているのだけど、

  • 目次を読んで疑問を書く -> 調査と質問に該当
  • 復唱 -> 読書ノートに該当
  • まとめ -> ブログに書くに該当

今の読書法になぜなったのか覚えていないのだけど、もしかしたら昔この本を読んだ記憶が残っていて、だんだんこの手法になっていったのかもしれない。まあ、今の手法で良いということも分かったので、このまま続けていきたいと思う。

まとめ

リファクタリング・ウェットウェアを読んで、参考になったことをまとめてみた。脳の仕組みを学ぶという点でけっこう面白いので、読んだことない人は流し読みでも良いので見てみると良さそう。

読書ノート

  • ドレイファスモデルは「技能ごと」に適用するモデル 6 ☆
    • 技能ごとに初心者〜達人まで
    • 同じようなことが1分間シリーズにも書いてあった記憶
  • ドレイファスモデルの初心者から達人までの5段階 6-12
    • 初心者・中級者・上級者・熟練者・達人
    • 初心者にはレシピが必要
    • 中級者は全体像を見たがらない
    • 上級者は問題解決ができる
    • 熟練者は自己補正が可能
    • 達人は直感で動く
  • ルールは達人を破滅させる 14
  • 初心者は曖昧さがない明確な指示が必要 16
  • ドレイファスモデルにおける技能習得段階の図 17
    • 直感 <-> ルール
    • 特定部を重視する <-> 全てを考慮する
    • システムの一部 <-> 遊離した観察者
  • 技能レベルの引き上げに役立つ一番の方法は、中級者の周囲に優れたお手本を配置すること 23
    • 命令に従っている中級者から、自身で問題解決できる上級者に引き上げる方法
  • 音楽習得の秘訣は、模倣・同化・革新の3段階を経験することであり、これは全てに通じる 24
    • 守破離も同様
    • まずは真似、それを自分の中に定着させ、さらに模倣を超える
  • ドレイファスモデルで重要なのは、「ビギナーにはコンテキスト(状況)に依存しないルールが必要だが、達人はコンテキストに依存した直感を使う」という認識 30
  • 脳には線形の処理方式であるLモードと、非同期で全体論亭な方式であるRモードがある 37
    • Rモードは直感、問題解決、創造性
    • Lモードは細部に目を配り、うまく仕上げる力を与える
  • Lモードの特徴は言語的・分析的・象徴的・抽象的・時間的・論理的・係数的・論理的・直線的 47
  • Rモードの特徴は非言語的・総合的・具体的・類推的・非合理的・空間的・直感的・全体論的 49
  • プログラマーにとってはLモードが重要に見えるが、Rモードも非常に重要 52
  • 学習するときは、まず経験し(Rモードを使って学習し)、その後に知識を付ける(Lモードを使って学習) 72
    • RモードからLモードへの流れを作る
    • 昔読書して理解できなかったが、それに関係する経験をしてからもう一度読むと、非常に理解できる、みたいなものかな?
  • 散歩の手法 92
    • 帰り道とかシャワーを浴びている時に、はっとアイデアを思い出すようなことを引き出す方法
    • 今解けない問題を全て紙に書き出す
    • その中で簡単そうなことを心に留める
    • 心に留めながら、そこまでその問題に集中せずに、ぼんやりと散歩をする
    • 解決策を思いついたらメモをする
  • 人間の思考のバグ 107
    • 認知バイアス : 考えが横道にそらされてしまう
    • 世代的類似性 : 時代の影響を受けてしまう
    • 性格的傾向 : 性格によって思考が影響される
    • ハードウェア的バグ : 脳の古い部分が、より優秀な部分より優位に立ってしまう
  • 人の性格的傾向を知るための四つの指標 126
    • 外向か内向か
    • 感覚(実用性や事実重視)か直感(想像力や創造力)か
    • 思考(ルールに基づく)か感情(ルールに加えて、感情的影響を考慮)か
    • 判断的態度(早く結論を出したい)か知覚的態度(観察を続ける)か
  • 一定の状況で自分は取らない態度を相手が取った場合、相手がおかしいという問題ではなく、性格的指向の不一致によるものもある 128
  • RモードからLモードの流れを作る学習法としては、全体論的に経験を積むところからはじめて、それからより定型的な訓練で技術を習得していく方法にうつり、学習を実り多きものにしていく方法 134
  • 「SMART」な目標とは 144
    • Specific(具体的)、Measurable(測定可能)、Archievable(達成可能)、Relevant(適切)、Time-boxed(期限を定める)
    • 「私がいつまでに何をおこなう」を明言する 146
  • SMARTな目標を、いろんな期間で立てる 149
    • 現在からすぐ、翌年まで、5年後まで、など
  • 学習のタイプには、視覚型、聴覚型、身体感覚型の三つのタイプに大別できる 152
  • 書籍からはSQ3Rの手法で学ぶ 161
    • 調査(Survey) : 全体の要旨をつかむため、目次と各章の要約を流し読みする
    • 質問(Question) : 質問点を書き出す
    • 読書(Read) : 全文を読む
    • 復唱(Recite) : 要約し、ノートに書き、ポイントを自分の言葉でまとめる
    • まとめ(Review) : もう一度読み、さらにノートに書き出し、仲間と議論する