プログラミングも同じで、初めからプログラミングに特化するより、数学、国語といった基礎をしっかり磨くことが大事だろう。この議論は目新しいものではなく、もう中年といっていい私が小学生の頃に聞かされたフレーズで、今改めて目にすると妙なデジャブ(既視感)を感じてしまうフレーズだ。
私がまだ幼い小学生のガキだったころ、電気屋の店頭には百花繚乱といっていいほど多くの8bitパソコンが並んでいた。もちろん当時の懐具合では購入するようなことはできなかったけれども、それこそ「マイコンBASIC Magazine」をはじめとしたコンピューター雑誌などが書店に並んでいたこともあって、情報源が少ないなりに学んでいたというか好奇心をぶつける格好のターゲットになっていた。
もちろんそんなことは当時関わりを持っていた教師達には理解されるはずもなく、10歳そこらのガキがコンピュータにうつつを抜かす様子はひたすら奇怪に思われていたように思う。色々議論を試みるが結局のところ二言目にはそれこそ
コンピュータよりも先に国語、数学だ。と繰り返し言われていたように思う。ここまでくると反論しても無駄なことは幼い私でさえも十分理解できたのでそれ以上何も言わず、現実世界での私とコンピュータの世界での私とが同居している状態だった。掛け算の順序がどうこう言っている一方で変数がどうの、バネとおもりがどうこう言っている一方で重力加速度がどうのとかそういうことを考えていた。
その結果優秀かどうかは別として私のようなエンジニアができあがってしまったわけだが、学校教育とは全く関係ない部分での当時の体験は今のエンジニアとしての仕事にも大きく影響を与えていているように思う。
特に義務教育の現場では、基礎学力の定着のために進度がゆっくり目であったり、学習指導要領に沿った教育を行うことが前提になっている。そのため、クラスの全員がある程度の水準に達することが目標に設定され、その目標があるが故なのか、上位学年での内容は基本的に知らないことになっていて、生徒が下手に習っていない漢字や公式を使うと理不尽に怒られるということがあったり、ひたすら計算ドリルや漢字の書き取りをやらされるということがあったことを思い出す。
これは言ってみれば「これはできないとダメ」という点で、罰系の学習過程と言ってよいのではないだろうか。社会的な要請もあるけれども「人並みに生きるためにせめて○○高校××大学に」といったそういうニーズは学校教育の中でどんどん膨れていって、気がついたら学校で行われる教育では罰系の学習過程が肥大しているのではないだろうか。小中学校でPCの使い方を教えるようになった時には正直「俺達のフロンティアは刈り取られてしまった」というガッカリした印象を持った。
結局のところ、スマホアプリ私塾や私の幼い時の体験のようなものは、余計なものであるかもしれないけれども、「好奇心を満たす」という報酬のために突き動かされた報酬系の学習過程でその価値は小さいものではないと信じている。
先にあげた 優れたIT技術者を育てるには でも出てきたピアノ演奏の話は非常に面白い例えだと思うのだが、
これは、ピアノの演奏に喩えると分かり易い。ピアノの演奏技術を習得するのには、少なくとも数年、多くは10年以上といった極めて長い時間が掛かる。初めは両手の10本の指を均一化するために、退屈ではあるが、指の運動(ハノンピアノ教則本など)、スケールの練習、アルペジオの練習などを延々と続けなくてはならない(これはプロになっても続く)。 そのあとで、漸く、曲らしい曲を弾くことができるのである。初めから曲を弾くことは効率的な演奏技術の習得には繋がらない。という点には全く同意できない。ピアノ教室でハノンを罰系の学習過程よろしくひたすらやらせていたら生徒がいなくなって早晩その教室は潰れてしまうだろう。実際にはハノンもやるけれどもバイエル( 最近ではバイエルにも批判がありバーナムなどが採用される例があると聞く ) やブルグミュラー、ソナチネアルバム、ソナタアルバムと習熟度に応じたテキストを採用し、発表会のステージにも立たせて技術だけではなく経験や楽しさも一緒に教える例を多く耳にする。罰系、報酬系のそれぞれの学習過程をバランスよく取り入れて、その時々に必要な課題を見出すということがなにより重要なことではないだろうか。
ITの世界での問題はピアノでいうバイエルやブルグミュラーに相当する定番の良いテキストや学習メソッドが存在しないことだろう。ITの世界全体の変化が激しい事情も考え合わせれば無理もないことかもしれないが、その代わりに報酬系の学習機会には積極的に参加してみても良いのではないと思う。勉強会やセミナー、Google code jam や Google Developer day の devquiz などのプログラミングアルゴリズムコンテスト、A3 Together などのより実践的なアプリコンテストなどに参加し、そして足りない部分を課題と見据えて鍛錬する、そういった姿勢が優秀なITプログラマを生み出す根源ではないかと思う。
プログラミングの罰系の学習過程はコードを書く過程でコーディングスタイルやデバックなどでいやでも経験させられるだろうから、ピアノのハノンに相当するのは、あえて言えば「たくさんコードを書く」ということに尽きるのだろう。
IT プログラミングというのは学校でマス教育的な手法で身につくようなものではなく、楽器演奏のような一種師弟的な部分で育まれる部分が多いアーティスティックな「もの作り」の要素が強いのではなかろうか。