そこに仁義はあるのか(仮)

略してそこ仁!

初心者から達人までの道を学ぶ「リファクタリング・ウェットウェア 〜達人プログラマーの思考法と学習法〜」を読んだ

人の学びの過程や効果の高い学習方法が知りたくて「リファクタリング・ウェットウェア」を読みました。
この本では、ドレイファスモデルによって技能の習得レベルを5段階にわけ、その最上位である達人になるための道のりを示してくれています。達人までの道のりは遠い(本によると、最低10年は努力する覚悟が必要!)ですが、明日から始められる一歩から書かれています。人の思考方法など、「なるほど、確かに。」と思うような内容もあり、読んでいて面白かったです。

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

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

  • 作者:Andy Hunt
  • 発売日: 2009/04/27
  • メディア: 単行本(ソフトカバー)

📖 目次

  • 1章 初心者から達人への道
  • 2章 脳の構造
  • 3章 Rモードへの転換
  • 4章 アタマをデバッグ
  • 5章 意識的な学び
  • 6章 経験の積み重ね
  • 7章 集中のコントロール
  • 8章 達人になってから

1.2 ドレイファスモデルの5段階

ドレイファスモデルでは技能ごとに習得レベルを5段階評価に分類しています。ほとんどの人は中級者に位置しています。この本ではこのモデルの達人に向けて進んでいく方法が記載されています。

初心者はルールに基づいて自分たちのパフォーマンスを改善できました。ところが、達人に自らが作ったルールに従わせて見たところ、パフォーマンスは著しく低下してしまいます。初心者はルールに、達人は直感にしたがって行動するのが、パフォーマンスが最も出る方法です。

  • 初心者
    • 従うべきルールが与えられれば、ある程度効果的に仕事を遂行できる。
    • うまくやり遂げる能力が自分にあるかどうかを気にしている。指標になる経験がほぼないので、自分の行動の全てに関してうまくいくかの検討がつかない。
  • 中級者
    • 決まったルールから少しだけ離れられるようになる。独力で仕事ができるが、問題解決にはまだ手こずる。
    • 全体的な理解はしておらず、理解したいとも思っていない。
  • 上級者
    • 独力で問題に対処でき、それまで直面したことのない新しい問題の解決方法を考え出せるようになる。
    • 指導力があり、臨機応変な対応ができる。チームの指導者的役割を担う傾向にある。
  • 熟練者
    • 技能を取り巻くさらに大きな概念の枠組みを探索し、理解しようとする。単純化しすぎた情報には苛立ちを覚える。
    • 経験と判断力があり、適切にコンテキストにレシピを当てはめることができる。
    • 他人の経験からも学ぶことができる。ケーススタディや失敗したプロジェクトの噂話を聞いたりするだけで、そこから効果的に学べる。
  • 達人
    • 絶えず物事を行うより良い方法を模索している。膨大な経験があり、それを上手に引き出してぴったりの状況で応用できる。
    • 「理由があってそうする」のではなく、「直感」に従って何かをする。直感的に振る舞うので、他のものからは魔法使いのように見える。
    • 全人口の1%〜5%

5.3 プラグマティック投資計画の作成

自分のなりたい目標を決めたら、その目標を達成するための計画を立てていきます。計画を立てるにあたって重要な点は以下の通り。

  • 具体的な計画を立てる
    • 時間軸に沿って様々な段階の目的を考えだす
      • 現在(すぐにでもできること)
      • 翌年の目標
      • 5年後の目標
  • 多様性を持たせる
    • プログラミング言語や環境、技術、業界、非技術系の分野などをうまく組み合わせる
  • 受け身にならず、積極的に投資する
    • 「フィードバック」が重要
    • 常に現在に照らして計画の良し悪しを見極め、進行状況を現実的に評価する
    • 以前は考えなかった新しい要素を追加したり、良い結果の出ていない計画を取りやめにしたりする時期かもと定期的に見直しをする
  • 定期的に投資する
    • 最低限の時間を定期的に投資すると決める。

6.3 失敗を活かす

達人になる上で大切なのが経験を積むことです。経験を積むには失敗を恐れず学びに活かす必要がありますが、あるアイデアを探求し、発明し、応用すると言っても、それが自分自身、自分の所属するチームや組織にとって安全でなければ試せません。
何かを試行するには以下に挙げた条件を満たす必要があります。

  • 自由に試行できる
    • 最適な解決方法が複数ある場合にはやっぱり両方試したい。時間的に余裕がないなら、両方のプロトタイプだけでも作って試してみよう。見積もりの際にはこのような過程を必要な時間として確保する必要がある。また、この試行がチームメンバーに悪影響にならないよう取り計らわなければいけない。
  • 安全な状態に戻れる
    • 実験がうまくいかなかった時に安定した状態に戻れて、そこからもう一度トライできる。目指すのは最終的にうまくいくこと。
  • 以前のあらゆる状態を再現できる
    • 今までの開発工程中の任意の段階のプログラムを再稼働しなければならない。去年動作していたバージョン、または先月動作していたバージョンを今稼働させることができる?
  • 進展していることを証明できる
    • フィードバックなくして前進はありえない。試行は代替案よりもうまく動作した?どうしてそう言える?プロジェクトは進展している?先週よりも今週のほうが多く昨日が稼働している?

ソフトウェア開発であれば、上記の条件を満たす環境はバージョンコントロール、ユニットテスト、プロジェクト自動化で実現できます。

8.1 効果的な変化

個人も組織も変える(変わる)ことはとても大変で複雑なことです。本当に効果の上がる変化を実現する上で役立つことを紹介します。

  • 計画を立ててから始める
    • 一定期間のおおまかな計画を立て、その実現を目指して努力する。どれだけ実行できたかを記録し、努力が足りないのではと思ったら記録を見て検討する。意外に成果は上がっているかも。
  • 敵は過ちではなく無為無策
    • 失敗は恐れなくていい。
    • 無為無策が危険。
  • 習慣づけには時間が必要
    • 新しい習慣を定着させるには最低でも3週間は必要。
  • 信じれば実現する
    • 我々の思考が脳内の配線を物理的にかえ、脳内の化学物質の作用を変える。変化は可能だと信じる必要がある。
  • 次の一歩は小さく踏み出す
    • 実行できそうなちょっとした目標を掲げ、達成できたら自分にご褒美をあげよう。そしてそれを繰り返す。

💬 まとめ

一部抜粋してご紹介しましたが、この他に集中をコントロールする方法や効果的な読書方法など、様々な達人までの道のりが書かれていました。
私も、まずは書籍の内容のうち、以下を試してみようと思いモレスキンのノートを買ってみました。モレスキンのノートは2年前くらいまで使っていたのですが、最近のメモは全てEvernoteにとっていました。Evernoteは全文検索できてとても便利ですが、改めてノートを見返してみるとノートを使っていた時の方が雑多な内容も気軽に書いていて、書籍の内容をやってみるのにちょうど良いと思いました。

  • アイデアを書き留める
    • いつもノート(できれば無地のもの)を持ち歩き、これを使って気ままにいたずら書きやマインドマップ作成、メモなどをする。
  • モーニングページ
    • 直感、問題解決、創造性を司る脳の機能を活かせるようになるため、朝一番に思いつくままノートに3ページ書く。
  • ToDoリストの作成
    • コンテキストスイッチを無駄に切り替えないために、頭の中のリストを動的に更新するのをやめる。
  • プラグマティック投資計画を作成する

これから自分がどういうスキルを習得したいのか、そのためにどうやって一歩一歩進んで行けば良いのかをきちんと考えてみようと思います!

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

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

  • 作者:Andy Hunt
  • 発売日: 2009/04/27
  • メディア: 単行本(ソフトカバー)