プログラミングの教育はもっと実戦的に。 | それゆけ西表島

プログラミングの教育はもっと実戦的に。

新人教育やら配置転換教育やら学校の教育やらで、プログラミングそのものを教育する機会は結構多い。ただ、いつまでたっても全網羅型の教育から抜けてないように思う。

マルチスレッドなプログラミングなんて、最初から教える必要があるのだろうか。知識として知っておく必要があるという意見もありそうだが、少しかじったぐらいで本番で利用できる知識でもないので、あえて教えないという選択もありだろう。

網羅的なのを批判する理由としては、英単語といっしょで、網羅的に覚えても頭に残りにくい(忘れやすい)ということがあげられる。ソフトウェアを作るためにプログラミングを教育するのであれば、教育が終わった際に仕事の1つでも任せられるようにならないと、教育時間が勿体無い。

実戦的な教育とは、要するに修了と同時に何かができるようになっている、ある意味訓練に近いものである。型にはめるとも言えるかもしれない。

プログラミング教育は、わりと「プログラムとは何ができるのか」というコンピュータ側の視点で教育することが多いわけだが、ある意味数学の計算問題といっしょで、計算問題はこなせるが文章題になると、どうやって解決すればいいか解らないという話になってしまう。

そうではなくて「この仕様を実装するには何をすればいいか」という目標に対して、順序立てて解説するような実際の仕事の一部分を切り出したような教育を延々繰り返すほうがよいように思う。

この場合、なぜそうする必要があるのかを理解しないままになってしまうこともあるだろうが、目的が「仕事をこなすこと」にあるのだとすれば、それはそれでいいのではないだろうか。後から理解がついてくればなおよしである。

ある意味、プログラマのマニュアル化とも言える。底が浅いので多様な案件で使えないと思われるかもしれないが、1日中どうでもいいようなところで考え込むプログラマは実際問題かなり多い。

出来ることと出来ない事の把握、新しいことへ挑戦させる際の教育、そしてそのフィードバックを繰り返す事でしか、プログラマは成長していかない気がするのだが。

今はまだプログラマ自身の自主的な学習に頼っているが、根本的に教えられる人がいないから、教わる事が出来ない悪循環が業界内を蝕んでいる。プロジェクトに合わせて教育マニュアルを作り、それをクリアしたものからプロジェクトに参加していく、という流れにならないものかなと。

ついでに、教育マニュアル作成専門会社とかが出てくると世の中素敵になりそうだ。