専門家になるための意図的な訓練

2024-09-17 hit count image

一生同じことを繰り返しても専門家にはなれません。専門家になるためには意図的な訓練が必要です。

私たちは一生歯磨きをするし、一生呼吸をしますが、歯磨きの専門家でも、呼吸の専門家でもなりません。

このように一生何かをしていても、そのことに対する専門家になれない理由は、その仕事をする動機とやった行動に対するフィードバックが不足しているためです。

何かの専門家になるためには専門家になりたい部分でスキルを向上させようとする動機を持って、スキル向上活動に対する適切なタイミングで具体的なフィードバックを受けて、これを継続的に繰り返す必要があります。

意図的訓練はこのような動機とフィードバックを通じて専門性を向上させる方法です。

妥当性とフィードバック

専門性が形成されるためには動機とフィードバック以外にも妥当性が必要です。妥当性はある作業に因果関係と規則性が存在し、結果に対する予測可能性があることを意味します。

このように妥当性が高い領域は自分がした行動に対する結果を確認でき、これが作業に対するフィードバックになります。

妥当性とフィードバックがある環境では自分がした行動に対する結果を知ることができ、これを通じて学習の機会が与えられます。

空港のセキュリティチェックの調査員は、自分が今日どれだけミスをしたかを知る方法がありません。バッグからナイフや液体物質をどれだけ見つけたかは分かっても、どれだけ見逃したかはわかりません。

空港セキュリティチェックの調査員は妥当性とフィードバックがある環境ではないため、専門家になることができません。このようにフィードバックが不足している環境ではどれだけ長く働いても専門家になることはできません。

ある仕事では専門性が形成される作業と専門性を形成するのが難しい作業の両方が存在することもあります。

医師が患者を診断するとき、間違った診断をしたかどうかを知る方法はありません。そのためこの部分では専門性を向上させるのが難しいです。しかし、手術をするときは手術後患者の状態を見て手術がうまくいったか判断できるため、手術を通じて専門性を向上させることができます。

私が所属している業界が妥当性とフィードバックが不足している業界であるため専門性向上を諦めてはいけません。現在の働き方を変えて妥当性とフィードバックを高めれば十分に専門家になることができます。

妥当性を高めるためには業務で変数を設定し、その変数を修正する実験をしながら規則性と因果関係を見つけようとする努力をしなければなりません。

フィードバックを高めるためには同僚や上司、顧客からまたは自分がする業務から直接フィードバックを受けようと努力しなければなりません。私のような開発者の場合は同僚や上司からコードレビューを受けたり、静的解析ツールやテストコードを通じてフィードバックを受けることができます。

難易度

実力を高めるためには意図的訓練が重要です。1万時間の法則のように訓練の量的な部分を強調する場合は多いですが、質的な部分を強調する場合は少ないです。

意図的訓練の必須条件の一つは適切な難易度です。意図的訓練がされるためには自分の実力と作業の難易度が似ていなければなりません。これはミハイ・チクセントミハイ(Mihaly Csikszentmihalyi)の没入理論とも一致します。

Deliberate practice to become an expert: Flow

横軸はその作業に対して自分が感じる自己実力を言い、縦軸はその作業に対して自分が感じる難易度です。

Boredom ゾーンの仕事は実力が作業難易度より高い領域です。この仕事をすると最初は楽な仕事を担当するため、とても良いと思いますが、少し経つと仕事に対して退屈を感じるようになります。

Anxiety ゾーンは実力より難易度が高い領域です。この領域ではその作業に対して知らないことが多く、自分の実力で解決できない不安恐怖を感じるようになります。

Apathy-Flow ゾーンは難易度と実力がほぼ同じ領域です。ミハイ・チクセントミハイはこの部分で人間が没入を経験すると言います。人間が没入状態になると最高レベルの集中力を示し、パフォーマンスや学習能力が最大になることができると言います。そしてその時最高レベルの幸福感を経験すると言います。

言語学者であるクラッシェン(Stephen Krashen)の入力仮説(i+1 理論)では、学習者の言語レベルをiとすると、ちょうど一段階高いi+1 レベルの入力が与えられたときにのみ言語能力が有意に向上すると言います。

教育学では認知負荷理論(Cognitive load theory)という理論があります。この理論は学習時に不要に認知的な負担を与えると何もかも正しく学習するのが難しいという理論です。例えば微積分のように難しい概念を自分がよく知らない言語であるドイツ語で学ぶと、微積分自体よりも他のことにエネルギーを奪われ学習効率が下がります。逆に英単語を覚えるときは母音を隠して覚えるとより難しくなって逆に記憶が長持ちするという研究もあります。

このような研究結果を通じてわかる重要な事実は実力を向上させるためには適切な難易度が必要であるということです。

もし自分が業務時間中に不安や退屈を感じる場合、これは実力を向上させる環境にいないということです。問題はこのような環境に慣れて行動が習慣化されるとこのような認識自体もうまくいかないということです。

これはAn examination of the practice environments in figure skating and volleyball: A search for deliberate practiceの研究結果から確認できます。

地域大会レベルの選手と世界大会レベルの選手の2つのグループを比較しました。まず、1日の練習が終わった後、簡単なアンケートを通じていくつかの質問をしました。その中の1つが今日の練習中トリプルアクセルを何回ほどしたと記憶しているかという質問です。2つのグループの回答には大きな違いはありませんでした。しかし、2つのグループの実際の練習シーンを録画して分析した結果、世界大会レベルの選手は地域大会レベルの選手に比べて何倍も多く、トリプルアクセルを練習していました。地域大会レベルの選手は自分たちがすでに慣れて自信を持っている’芸術的表現’などの練習に時間をさらに費やしました。その後トリプルアクセルを多く練習したと勘違いしました。

この研究結果からわかるように人間は自分の置かれた環境に慣れ、慣れた環境では自己認識をうまくできなくなる。

意図的訓練

私たちはミハイ・チクセントミハイの没入理論を基に意図的訓練をすることができます。

Deliberate practice to become an expert: Deliberate practice

上の図のように私たちは合計4つの意図的訓練をすることができます。

  • A1: 実力を下げる
  • A2: 難易度を上げる
  • B1: 難易度を下げる
  • B2: 実力を上げる

この意図的訓練は実力を向上させるためには必ず行わなければなりません。そうでないと自分の実力は向上せず、フィギュアスケートの研究結果のように実力が向上しているという錯覚に陥る可能性があります。

A1: 実力を下げる

作業の難易度はそのままで、自分の実力を下げる意図的訓練方法です。例えば、体力トレーニングをするときに、腕や足に砂袋をつけて運動することです。

私のように開発者であれば、自分の開発を効率的にしたり、より便利にするためのツールを使わないことで、意図的訓練を行うことができます。例えば、ESLintやPrettierなどの静的コード解析ツールをリアルタイムで使用せずにコーディングするか、よく使うIDEやテキストエディタ以外のツールを使用するか、マウスをよく使う場合はキーボードだけで開発するか、デバッガを使用せずに開発するなど、開発の便利さや効率性のためのツールを使わないようにして、自分のスキルを下げて意図的訓練を行うことです。ツールがいつもしてくれたことを自分の力だけで解決しなければならないため、以前よりも多くの考えをするようになり、集中力が高まります。

A2: 難易度を上げる

自分の実力はそのままで、作業の難易度を上げる意図的訓練方法です。

1965年にサンフランシスコでの戦いがブルース・リーがウェイトトレーニングに弾みをつけるきっかけとなった。当時、ブルース・リーは人々にクンフを教え始めた時期であった。伝統的な武術をしていた人の一人がブルース・リーが西洋人を教えると聞いて挑戦しに来て、ブルース・リーの妻リンダ・リーがそのシーンを目撃した。”約3分間続いた。ブルースはその人を地面に倒して言った。 ‘今、降参しますか?’ するとその人が ‘降参します’ と言った。そうして彼ら一行はサンフランシスコに戻った。しかし、ブルースは非常に怒っていた。3分以内にその人を倒せなかったからだ。それからだった。ブルースは自分の身体的健康レベルと武術スタイルに疑問を抱き始めた” - How Bruce Lee Changed the World, Discovery Channel, 2009.

ブルース・リーのように、自分の実力が高すぎると相手との戦いが簡単になることがあります。このとき、3分以内に勝つなど自分だけの制約を追加することで作業の難易度を上げることができます。

優れたプログラマーはこの方法をよく使っています。例えば、1日で開発するように言われた仕事を1時間で完了する方法を考えるとか、UIの反応速度を速くするためにプログラムをリファクタリングするとか、毎日1つのバグや問題を見つける代わりに2つを見つけるように努力するとか、新しい言語でコーディングするなど、意図的訓練を行うことができます。

他の方法では、公式的にはしなくてもよい業務を自分の意志で追加することがあります。例えば、自分の業務を改善するためにリファクタリングを行ったり、自動化テストを追加したり、自分だけのツール(方法)を開発することです。

A2の方法では特に自分だけのツールや方法を作ることが非常に重要です。認知心理学では相手の専門性を素早く把握する方法の1つとして、他の人よりも仕事をより効率的に、効果的に行うために自分だけのツールや方法があるのか質問する方法があります。よくある繰り返しパターンを把握し、分析して時間が足りない中でも時間を作ってツールを考案し、作成しなければなりません。このようにツールを作ると既存の難易度よりも高くなり、これによりスキルが向上します。また、このように作成したツールが自分の業務をより効率的で効果的にしてくれるため、自分の専門性を高めるのに大きな助けになります。

B1: 難易度を下げる

難易度が実力よりも高い場合、難易度を下げることで意図的訓練を行う方法です。高い難易度の課題を自分の能力で作れる代替機能を開発するか、より簡単な小さな課題に分割して処理する方法です。

この方法を使うときに注意すべき点があります。実力と難易度は常に変化するということです。昨日までうまくいかなくて悩んでいた問題が今日急にうまくいくようになったり、簡単な課題と思っていたがバグが発生して難易度が急激に上昇することもあります。また、自分が試みた方法が間違っていて難易度をあまりにも高くしてしまうこともあります。

そのため、この方法は柔軟に使う必要があります。作業難易度が高くて低い難易度に分割したら、それが簡単すぎて退屈を感じる場合、また難易度を上げたり、実力を下げたりする必要があります。作業をする際に実力が上がって難易度が簡単になった場合はこれに合わせて再調整する必要があります。

B2: 実力を上げる

実力より難易度が高い場合、実力を上げる意図的訓練方法です。

実力を上げるためには次のような方法があります。

  • スタディグループ
  • 教育

しかし、この方法は長期的な方法です。現在の難易度が自分の実力より高くて、実力を上げるためには時間がかかりすぎます。そしたら、短期的に実力を上げる方法には何がありますでしょうか?

短期的に実力を上げるためには、社会的アプローチ、ツール的アプローチ、内観的アプローチを使うことができます。

社会的アプローチは自分よりも優れた専門家の助けを借りることです。優れたメンバーにペアプログラミングを提案したり、インターネットで検索したり、コミュニティに投稿して助けを求めたり、公式ドキュメントを参照する方法などがこれに該当します。

ツール的アプローチはツールの助けを借りることです。より良いデバッガ、自動統合ツール、コード分析ツール、オープンソースの使用などがこれに該当します。

内観的アプローチは似てる問題を解決した経験を思い出して比喩的に問題を解決する方法です。

リーダーができること

リーダーはチームメンバーに実力に合う適切な業務を与え、チームメンバーの状態を把握しながら、前述の意図的訓練方法を適切に使えるように助ける必要があります。しかし、これは理想的な状態であり、これを実行することは非常に難しいです。

そのため、リーダーはチームメンバーが個人でこのような意図的な訓練の方法を実行できる環境と能力を作ることが重要です。

日常での意図的訓練

意図的な訓練は業務だけでなく、日常生活でも適用できます。このように一つの領域での教訓を他の領域に適用することを心理学では学習転移と言います。

皆さんもこのような意図的訓練を業務や日常生活に適用して、業務の専門家、生活の専門家になってみてください。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

アプリ広報

今見てるブログを作成たDekuが開発したアプリを使ってみてください。
Dekuが開発したアプリはFlutterで開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。

Posts