クムクムの原点でもあるプログラミング学習方法「写経型プログラミング学習」とはどんなものか?をご紹介します。
写経型プログラミングが生まれた経緯
グループ会社であるIT系システム会社(株式会社キヤミー)と京都大学喜多一教授とが、2年間の共同研究を行って多くの論文や技術参考書を残した学習方法です。喜多教授によって命名されました。
株式会社キヤミーでは1993年頃より多くの技術社員が必要となったことから、短期間で技術者を育成するカリキュラムと方法が必要となり、独自の方法を開発しました。
それは、まったくの未経験者をたったの3ヶ月間でC言語から当時開発の中心であったVC++のプログラマーに育成するというものです。
写経型という命名の由来は、学習期間、座学などいっさいなくひたすら写経のように教科書を写し取っていくというやり方を基本とするからです。
なぜこの方法によって短期間にプログラマーが育成できるのか?しかも出来上がる質はかなり高く、一定のレベルを超えた実践的なプログラマーが出来上がるため、喜多教授と学術的な研究を行いました。
具体的な方法
1.C言語のマスターと根性試し
写経開始
まずはこれ、柴田望洋氏著 新明解C言語 とC言語を入力実行できるコンピュータを学習者な用意します。そして、この教科書を1日8時間ひたすら頭から最後まで入力しては実行を繰り返します。この学習のポイントは、質より時間を優先します。大凡1日8時間×7〜10日程度を目標に毎日繰り返します。
この期間見極める事は、この期間をやり通せるか?という事です。
プログラマーに最も大切な要素は、1人でコツコツと進めて、1人で悩み、1人でやり切るという姿勢です。
プログラミングは誰に学ぶものではなく、誰に育てられるものではありません。ひたすら自分で自分を鍛えるしかないものです。
個人差がありますので7〜10日という期間を設けてますが、最大でも10日です。それ以上は疲れるだけで無駄です。
1冊、全てを理解しマスターする必要はありません。まずは全てを通して書き写し、どこにどんな事が書いてあったのか?をなんとなく覚える事です。
腕試し卒業
とりあえず終わりましたら、1-2問のプログラムを作成していただきます。大凡、一問大体1日でできる程度のボリュームです。
この問題は、カンニングOKです。今まで勉強し写経した教科書使いまくりOKです。また、もちろん自分で本屋さんに行ったりインターネットで調べてもOKです。ただし、納期優先です。決めた時間内にできるところまでやる!事が最も大切なことです。
期限になったらできたところまでをチェックします。できていなくてもOKだしできていてもOKです。
ただしできていなかった場合、内容によってはその場で不合格となり学習から外される事になります。つまり、終了!さようならです。見極めポイントは、経験者から見て、この先可能性があるかどうか?という微妙な判断ですが..
2.VC++開始
この頃、1993年頃は主流がVC++でした。最近ではC#やJAVAかもしれません。Pythonもありかもしれませんが、どうせなら、スクリプト言語より、まずはコンパイル言語をしっかりやった方があとの応用にはいいかともおもいます。以下のVC++を教育対象言語に置き換えていただき流用していただければ同じだと思われます。
キヤミーでは
①VC++とWindowsAPIでの開発
②VC++とMFC
③VC++実践、応用
と三部構成で全てを3ヶ月程で完了します。進め方は最初のCと同じです。
ひたすら入力し真似をします。入力しては動作させるだけです。そして①、②、の各区切りで見極めテストが行われます。
このころの見極めテストで不合格になってさようならをする人はほとんどいません。出来の良し悪しははありますが、ほとんどの人は、70-80点レベルで超えていく事ができます。
すごい事ですね!未経験者が1.5ヶ月後にはVC++とWindows APIのプログラミングですから..,
③を完了したら最後は卒業問題です。
3人(キヤミーの学習は3人1チームで構成していました)に対して口頭による開発課題が与えられます。口頭による課題は、その場で質問はOKです。こちら側もあえて曖昧に話をします。
質問をすることは、実は、仕様確認のヒアリングになるからです。
その後、A3用紙の表一枚に提案書を書いてもらい、3人それぞれにプレゼンをしてもらい、3人の中で最も優秀な提案をみんなで決定し、卒業課題とします。
提案後、残り2週間ほどでの開発期間でのスケジュリングと、そのスケジュールに見合う仕様の見直しも全て学習者同士で決めていきます。
これが写経型プログラミング学習です。
写経型学習のポイント
この学習のポイントは、”自分の力で全てをやり通す”という事です。
そして、講師は”教えない”という事です。講師は見極めや、学習者のモチベーションを上げるファシリテーターとしての役目なのです。
たまに、あまりにひっかかって前に進んでいない場合などは個人的に引っ張り上げたり、教えたりすることはありますが、基本的には教えない事です。
この学習を受けた卒業生は、全てを自分でやりきった自信がつきます。全く何も解らなかった自分が、誰にも教えられずに、自分で全てを乗り越えられた自信がつきます。
この自信はプログラマーにとって一番大切な、言語に左右されない本当の力をつけた技術者となるため、どんな現場でどんな難問を与えられても乗り越える事ができる強い技術者になります。
「これできますか?」
「はい、やったことはありませんが、とりあえず2-3日いただければ、期待にお応えできるレベルになるかどうか不安ですが、やってみることはできます」
私たちが一番大好きな言葉を喋るプログラマーが出来上がります。