みなさん,こんにちは。
シンノユウキ(shinno1993)です。
先日、私が所属しているコミュニティ、「ノンプログラマーのためのスキルアップ研究会」の定例会が行われました。テーマは「向こう3年のスキルアッププランを考える」でした。
それに際して、効率的なスキルアップの方法について、LTを行いました。今回は、それに用いたスライドを紹介するとともに、その内容についてテキスト情報をベースに解説していきたいと思います。
スライドと合わせてブログ本文をご覧いただくことで、さらに理解が深まるかと思います。
スライドはこちら!
試合と練習はどちらが大事?
スキルアップのためには、試合と練習のどちらが大事か。これについては、以前より議論が続けられてきました。
数多くの試合をこなし、場数を踏んでいくことでスキルアップしていく。実践こそがすべてだという試合派と、自分の苦手な箇所を修正したり、繰り返し練習することでスキルアップが目指せるという練習派。どちらの意見ももっともらしく、議論だけでは正解が見つけられない状態でした。
1万時間の法則
こういった議論の糸口には、「1万時間の法則」という概念がありました。聞いたことがあるという人も多いことでしょう。この法則は、 マルコム・グラッドウェルが『天才!成功する人々の法則』の中で述べたもので、簡単にいうと。どんな才能や技量も、一万時間練習を続ければ“本物”になる!ということが述べられています。
様々な偉人も、大変なことを成し遂げるためには多くの時間を費やしてきたので、みなさんも一流になりたければそのくらいやりましょう、というのが1万時間の法則です。
1万時間費やしてもプロもいればアマもいる
しかし、1万時間を費やしてプロ級になる人もいれば、アマチュアレベルで終わる人もいます。2005年に400人以上のチェスプレイヤの練習習慣を調査した研究では、チェスに1万時間程度の時間を費やした人であっても、グランドマスター(チェス選手の最高位のタイトル)の人もいれば、アマチュアレベルの人もいました。
費やした時間は、同程度の1万時間程度です。先ほど紹介した1万時間の法則に照らしてみれば、両者とも一流になれるはずです。しかし、片方は超一流、もう片方は2流。どのようにしてこの差が生じるのでしょうか。
”意図的な練習”がスキルアップの鍵
その差が生じた理由。それは”意図的な練習”にありました。意図的な練習は以下のように説明されています。
個人のスキルの特定の側面を効果的に改善することのみを目的とする、一般的には指導者によって設計されたもの。
翻訳)http://calnewport.com/blog/2010/01/06/the-grandmaster-in-the-corner-office-what-the-study-of-chess-experts-teaches-us-about-building-a-remarkable-life/
先ほど紹介した研究では、この意図的な練習に費やした時間が、グランドマスタレベルの者とアマチュアレベルに甘んじた者とでは大きな違いがありました。アマチュアレベルの者が意図的な練習に費やした時間が1,000時間であるのに対して、グランドマスタレベルの者は、なんと5,000時間費やしていました。約5倍ですね。
意図的な練習のみがチェスのレートを説明
さらに、先の研究では、チェスのレートを従属変数とし、チェスのレートに関係すると考えられる様々な要因を独立変数とした重回帰分析を行いました。その結果、意図的な練習に費やした時間のみがチェスのレートを有意に説明しました。その割合は約40%。意図的な練習こそがスキルアップに重要なのですね。
以下に、重回帰分析の結果を簡単にグラフ化したものを紹介します。
他にも変数はありましたが、特に影響の大きいものを抜粋しています。意図的な練習に費やした時間がチェスのレートに与える影響は、試合に費やした時間のおよそ2倍。理論上、試合を2時間するのと同様の効果が、意図的な練習を1時間するだけで得られるということになります。
適切な難易度と即時のフィードバックが重要
意図的な練習の効果を説明してきましたが、その意図的な練習には以下の2点が必要になってきます:
- 適切な難易度
- 即時のフィードバック
行っている事柄を意図的な練習とするためには、この2つが揃っていなければなりません。
まず1つ目、適切な難易度について。それが、難しすぎても簡単すぎてもいけません。自分の知っている事+少しの新しい知識で行える難易度である必要があります。
2つ目。それに関する即時のフィードバックが必要です。自分が行ったことが正解かどうか。どこが間違っていてどこが正しいのか。こういったことをすぐに認識する必要があります。
意図的な練習の際には、この2つが揃っている必要があります。
プログラミングに例えてみる
では、この2つの視点で、プログラミングのスキルアップについて考えてみましょう。以下のような表になります。
プログラミングに関する3つの作業を、適切な難易度と即時のフィードバックといった観点から評価してみました。
まず技術本の写経について。自分の実力にあった書籍を選択することで適切な難易度のものを選択できます。また、書籍と見比べることで、すぐにフィードバックを得ることができます。つまり、技術本の写経は意図的な練習に当てはまるといえるでしょう。
それと同様に、コードレビューを受けることも意図的なスキルアップに役立ちます。自分のレベルにあった適切な指導を受けることができますし、自分の書いたコードに対するレビューがすぐにもらえます。そういった意味で、コードレビューを受けることは意図的な練習に当てはまるでしょう。積極的にダメ出しを受けていく姿勢が意図的な練習には必要になります。
それに対して、実務でのコーディングはどうでしょうか。これは職場によってまちまちなのかもしれませんが、いつもいつも自分にあった適切な難易度のコーディングができるとは限りません。上級者が簡単な実装しなければならないかもしれませんし、初心者が自分のできる範囲から逸脱したコーディングをする場合もあるでしょう。フィードバックもすぐに貰える場合は少ないでしょう。そういった意味で、実務でのコーディングは意図的な練習からはかなり遠い場所にあると言わざるをえません。
参考文献
- Charness, Neil, et al. "The role of deliberate practice in chess expertise." Applied Cognitive Psychology 19.2 (2005): 151-165.
まとめ
今回は、LTで話した、意図的な練習について、ブログにまとめてみました。スライドと合わせてブログ本文をお読みいただくことで、さらに理解しやすくなるかと思います。