読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

22. 一万時間の訓練 Jon Jagger:『プログラマが知るべき97のこと』

以下の記事は,オライリージャパン社から出版された

プログラマが知るべき97のこと』

の中から1つのエッセイを選び,

そのエッセイを,クリエイティブコモンズ3.0の条件の元で転載したものです.

Creative Commons ― 表示 3.0 アメリカ合衆国 ― CC BY 3.0

本書の内容は,オープンソースモデルに従い,

ほぼ無制限で利用が可能です.

クリエイティブ・コモンズ表示3.0の条件下で,

自由に使用することができるのです.

つまり,どのエッセイも,

著者の名前を明記すれば,自由に転載,改変が可能であるということです.

ーー"はじめに"から抜粋 pXII


もし,他のエッセイを読みたい場合には,

記事末のリンクを辿るか,

以下のリンク先のTwitterアカウントのつぶやきからお探し下さい.

Twitter Account: 97 Things Bot



また,元の英文によるエッセイを読みたい方は,

こちらを参照して下さい.

Contributions Appearing in the Book - Programmer 97-things


22. 一万時間の訓練 ジョン・ジャガー (Jon Jagger):『プログラマが知るべき97のこと』:

「集中的訓練 (Deliberate Practice: DP)」

という言葉があります.

集中的訓練は,ただ課題をこなすだけのものではありません.

課題を終わらせるためだけに課題をやっているのだとしたら,

それはまったく集中的訓練とは呼べないでしょう.



集中的訓練の目的は,

あくまでも自らの能力を高めることにあります..

いわゆる「スキル」や「テクニック」を身につけることが目的なのです.

集中的訓練において重要なのが

「反復」です.

身につけたい能力をいくつかの小さな要素に分割し,

その一つ一つについて反復訓練をし,

習熟度を高めていきます.

つまり,「反復の反復」が必要になる,

ということです.

ゆっくりと,能力全体の習熟度を望ましいレベルにまで引き上げていきます.

集中的訓練の目的は習熟度を上げることであり,

個々の課題,作業をこなし,完了させることではないのです.



代金をもらって開発をする場合,

その主たる目的は,製品を完成させることにあります.

集中的訓練の場合にはそうではなく,

自分の能力を高めることを主たる目的とします.

両者は本質的に違うものです.

まず自分に問うてみてください.

普段,仕事での開発作業に費やしている時間はどれくらいですか?

それに対し,

自分の能力を高めるのに費やしている時間はどのくらいですか??



果たして,

「エキスパート」

と呼ばれるだけの能力を身につけるには,

一体,どのくらいの量の訓練が必要なのでしょうか.

それについては次のようなことが言われています.



・Peter Norvigは,

 

「何かのエキスパートになるには

 約一万時間の訓練が必要である」


 と述べている.

 いわばこの一万時間というのが「マジックナンバー」ということになる.

(引用元の文章のリンク:Teach Yourself Programming in Ten Years

  その日本語訳のリンク:Teach Yourself Programming in Ten Years 日本語訳)

 
・Mary Poppendieckも著書

『リーンソフトウェアの開発と組織開発』

 の中で,

 

「どんな専門的職業であれ,
入念に計画された,
集中的な訓練を最低10000時間積み重ねることで.
専門家になる」


 と書いている.



専門的な技術や知識は,

ゆっくりと徐々に身につくものです.

一万時間が通過した途端,

急に身につく,というわけではありません.

それでも,ともかく一万時間やる,ということが大切なのです.

ただ一万時間といってもそれは膨大な時間です.

週に20時間なら10年かかることになります.

「一万時間努力したはいいけど,

 結果,自分にはエキスパートになる素質がないと

 わかるだけかも知れない」

そう心配する人もいるでしょう.

しかし,そんな心配はいりません.

エキスパートには必ずなれます.

何かに秀でた人間になるかどうかは,

ほぼ自分がなろうとするかどうかで決まるのです.

すべてはあなたの意思次第なのです.

過去20年間に及ぶ調査でも,

ある知識や技術が身につくかどうかは,

大部分が,訓練に費やされた時間の長さで決まる,

という結果が得られています.

天賦の才能はさほど重要ではないのです.

Mary Poppendieckは次のように述べています.


専門家のパフォーマンスを研究している人たちの中では,

もって生まれた才能はあるレベルを超えると大きな意味を持たなくなると

意見の一致をみている.

プロスポーツ選手になろうと思った場合,

確かに最低限の才能は必要だ.

だがその後,勝ち抜いていくのは,

もっとも厳しい練習に耐えた人たちだ.

訓練をする時に,

自分にとって楽にこなせる課題にしても,

あまり意味がありません.

楽にできないようなことを課題にすることによって,

初めて意味があるのです.

Peter Norvigはそれについて,

次のように言っています.



集中的訓練は,

専門技術を身につける上でかかせないものだ.

ただ反復訓練をすればいいというわけではなく,

自分の現在の能力を少し超える課題に取り組むことが重要である.

それで自分の限界を引き上げるのだ.

困難な課題に挑戦し,

その結果をよく分析し,

何か失敗すれば修正する,

その繰り返しである.

また,Mary Poppendieckも次のように言っています.


入念に計画された訓練では,得意なことに取り組むのではない.

自分を鍛え,少なくともまだ得意ではないことに取り組むのである.

楽しいとは限らない.

集中的訓練とは「学び」です.

新しいことを学んで自分を変え,

学ぶことで自分の行動を変えるのです.

日々の努力を続けなくてはなりません.

さぁ,始めましょう.



■著者データ

[ジョン・ジャガー (Jon Jagger)]

フリーのソフトウェアコンサルタントであり,

トレーナー,プログラマ,メンター,

そしてエバンジェリストでもある.

専門は,アジャイルソフトウェア開発

(開発手法そのものだけでなく,

 アジャイル手法に関わりの深い人たちについても詳しい)

テスト駆動開発UML,デザイン解析,オブジェクト指向

中括弧({})を使う言語(C#C++Java)など.

プロの技術者ではあるが,

それとともに単なる「マニア」の側面もある.

UK C,またあまり熱心ではながUK C++の委員で,.

C#ECMA標準策定委員会の議長,

そしてプリンシパルUKエキスパート,

(Principal UK Expart 略すとPUKE=吐くになる!)

でもある.

Average Time To Green ゲームの考案者でもあり,

また執筆活動にも熱心で,

Webサイトや雑誌への寄稿も多い.

『ステップバイステップで学ぶMicrosoft Visual C# .NET実践講座』

原著

Microsoft Visual C# .NET Step by Step』

C# Annotated Standard』

という二冊の共著者.

美しい妻Natalieと,

Elie, Penny, Patrickという

3人の子供たちと共に暮らす.

淡水釣りの熱心な愛好者


関連記事

1.分別のある行動 Seb Rose:『プログラマが知るべき97のこと』 - MY ENIGMA

2.関数プログラミングを学ぶことの重要性 Edward Garson:『プログラマが知るべき97のこと』 - MY ENIGMA

3.ユーザが何をするかを観察する (あなたはユーザではない) Giles Colborne:『プログラマが知るべき97のこと』 - MY ENIGMA

4.コーディング規約を自動化する Filip van Laenen:『プログラマが知るべき97のこと』 - MY ENIGMA

5.美はシンプルさに宿る Jorn Olmheim:『プログラマが知るべき97のこと』 - MY ENIGMA

6.リファクタリングの際に注意すべきこと Rajith Attapattu:『プログラマが知るべき97のこと』 - MY ENIGMA

7.共有は慎重に Udi Dahan:『プログラマが知るべき97のこと』 - MY ENIGMA

8. ボーイスカウト・ルール Robert C. Martin:『プログラマが知るべき97のこと』 - MY ENIGMA

9. 他人よりまず自分を疑う Allan Kelly:『プログラマが知るべき97のこと』 - MY ENIGMA

10. ツールの選択は慎重に Giovanni Asproni:『プログラマが知るべき97のこと』 - MY ENIGMA

11. ドメインの言葉を使ったコード Dan North:『プログラマが知るべき97のこと』 - MY ENIGMA

12. コードは設計である Ryan Brush:『プログラマが知るべき97のこと』 - MY ENIGMA

13. コードレイアウトの重要性 Steve Freeman:『プログラマが知るべき97のこと』 - MY ENIGMA

14. コードレビュー Mattias Karlsson:『プログラマが知るべき97のこと』 - MY ENIGMA

13. コードレイアウトの重要性 Steve Freeman:『プログラマが知るべき97のこと』 - MY ENIGMA

14. コードレビュー Mattias Karlsson:『プログラマが知るべき97のこと』 - MY ENIGMA

15. コードの論理的検証 Yechiel Kimchi:『プログラマが知るべき97のこと』 - MY ENIGMA

16. コメントについてのコメント Cal Evans:『プログラマが知るべき97のこと』 - MY ENIGMA

17. コードに書けないことのみをコメントにする Kevlin Henney:『プログラマが知るべき97のこと』 - MY ENIGMA

18. 学び続ける姿勢 Clint Shank:『プログラマが知るべき97のこと』 - MY ENIGMA

19. 誰にとっての利便性か Gregor Hohpe:『プログラマが知るべき97のこと』 - MY ENIGMA

20. すばやくデプロイ,こまめにデプロイ Steve Berczuk:『プログラマが知るべき97のこと』 - MY ENIGMA

21. 技術的例外とビジネス例外を明確に区別する Dan Bergh Johnsson:『プログラマが知るべき97のこと』 - MY ENIGMA