プログラミング学校を卒業して思うこと その8
自走力はついたのか?
私の卒業した「学校」は、本来エンジニアになるには1000時間かかるところを超短期間(昼のコースでは10週間600時間)で養成するということを売りにしているが、もとより全てをこの期間に教え込むと言っているわけではない。
実際、教材の学習は最初の6週間で終わってしまい、その後は4週間かけて著名物販サイトのコピーサイトを共同開発するということなので、いわゆる詰め込みは最初の6週間しかなく、コピーサイトの開発時点では、基本的に(それまではわからないことがあればいつでも聞けることとなっていた)質問もできないことになっている。
つまり、この4週間は、自分で調べてやれということで、「学校」側は、それを「自走力」をつけるとしている。
しかし、その4週間は、実際のところ、わからないところを然るべき方法できちんと調べてどんどん実装するという理想的なあり方でなく、基礎力がないため何をやっていいかすらわからず、ネットに転がっている情報をコピペし(ご丁寧に、同窓の卒業生が答をそのまま載せていたりする)、動かなかったらなんとなくあちこちをいじってみて、動いたらOKという程度のことである。
したがって、大半の時間は方向の定まらない試行錯誤に費やされており、時間の浪費が甚だしいし、やったことについて理論的なことがわかっていないから、改めて似たようなことを実装しようとしてもできないという皮肉な結果となる。
エンジニアになるための学習とは
もちろん、私も9月から今月12月までの間ずっとコンピュータがらみの学習をしてきているので、この業界で求められる知識や情報が量的・質的にとんでもないものであることは重々理解しているし、そんなものが教室でのいわゆる座学だけでできるとは考えてもいない。
以前「学校」のプログラミング教育についての考え方をスタッフから聞いたことがあるが、「覚えすぎるのは却って良くない」ということらしい。
実際この点については、全く同意する。
「学校」で教えている言語のRubyひとつをとってみても、とんでもなく膨大なシステムであり、全てのメソッドだとかライブラリを一応理解するだけでも極端に時間がかかるだろうし、それを覚えてからでないと開発ができないわけでもない。
そして、開発をやりながら関連する必要な知識・技術を覚えていくというやり方は、必要なことを必要な時に覚えるという意味で、何を勉強するかをうまく限定することができるし、何より開発を通じてその楽しさを維持しながら学習を進めることができる点で、有効なやり方だと思う(実際の開発現場も似たようなところがあると思う)。
ただ、それでもなお、いや、だからこそ基礎的・体系的知識を教授することは必要不可欠なのであって、それなしでは自力で伸びることはかなり困難だ(というか、それならそもそも学校に行く必要がない)。
私自身、コピーサイトを作っているときに関連ドキュメントを読んでみたが、基礎力がないので、最初はそもそも何が書いてあるのかすらわからず、どこを調べて良いかすらなかなかわからなかった。
このように、自走力の名の下に基礎もまともに教えず「突き放す」ことと、基礎力をつけた上で自走させることとは、質的にも学習効率の点でも全く違う。