以前、名古屋のこわい人とか、エンジニアの先輩方とかと一緒に、仕事とエンジニアについてみたいな話をしたのを思い出したので、時間が経っていますが書いておく。
特に、このニュースが出てたので関係ありそうだなと。(話したのはこのニュースが出る前だったけど)
昔のエンジニアと今のエンジニアに対して
「昔のエンジニアの方が優れている」みたいな話があったりするけれど、そんなことは無いんだろうなと思ってます。
- 昔はエンジニアの数自体が少なかったので、情報系の人間しか就職しなかった。いや、就職できなかったのかもしれない。
- それが今だと、需要がある。だから、みんな就職できる。
- 需要がまだまだあるから、今度は情報系以外の人間も採用しだす。
- 出来る人の質が昔と今で変わらなくても、それよりも質が下のものを作る人がいっぱい入ってくる。
- 全体の質が低くなるように見える。
- 質の高いものを作る人がだんだん入らなくなることで、「まだまだ人が足らない!」と言ってくる
- もっと質の低いものを作る人が入って、全体の質が低くなり…
この無限ループ。
最近ではこんなニュースもありました。
人が多くなることでの弊害
人が数多く入ると、質の低いものに合わせて、ものが作り出されると思ってます。
だって、質が高いものの考えに質が低いものしか作れない人はついていけませんが、質の低いものの考えには、誰もがついていくことができる。
多少はコーディング規約などで質を底上げすることはできるかもしれないですが、元々の質の高さには追いつかないはず。
また、それを人の数で補おうとしても、それだけコミュニケーションチャネルが増えてしまうので、余計にややこしくなってしまうのは有名な話。
プログラミングを教えるべきなのか
それでは、根本的な質の底上げを行うために、社会人になるまでにプログラミングを教えるべきなのでしょうか。
私は、プログラミング"も"教えるべきだと思います。
プログラミングを触れる機会すら無いのは良くないと感じています。
「社会人になってからプログラミングに初めて触れて、自分には合ってないと思った」という話はよく聞きます。
これは向き不向きの問題なのでしょうがないのでしょう。ただ、それを社会人になってから(就職してから)気付くのはあまりにもったいないです。
と同時に、本当は向いているにも関わらず、触れたことが無いから現在もプログラミング関係の職に就いていない人もいるはずです。
そのような機会損失を減らすためにも、プログラミングは教えるべきです。
ただし、冒頭に紹介した記事に書いてあったように「日本史なんか教えなくて良い」とまでは言えません。
プログラミングよりも教えるべき内容
前項に書いたように、プログラミングを教えるべきと書きましたが、それよりも教えるべき内容があると感じています。
それは、アルゴリズムです。
極端なことを言ってしまえば、プログラミングはプラグラム言語によって変わってきます。
プログラミングは、普通の言語(英語とか中国語とか)でいう、単語みたいなものです。英単語を極めたからといって、中国語も喋れるようにはなりません。
それよりも、普通の言語での文法のような、プラグラム言語間で多少の違いはあるが殆ど変わらないものがアルゴリズムだと思います。
これを学ぶ機会が圧倒的に足りないから、質の悪い成果物が出来上がってしまっている気がします。
それは、まるで "I piano play like" みたいな文章が乱立しているようなものです。
しかも質の悪いことに、Javaなどのポピュラーな言語は、ある程度崩れても動いちゃうのです。
学ぶ機会は与えられているが…
実は、アルゴリズムの考え方に近いことを既に教育に組み入れられていると思います。
それは、以下の二つ。
- 中学数学で学ぶ「図形の証明」
- 高校数学で学ぶ「数学的帰納法」
これらはアルゴリズムと似たような考え方を持っています。
しかし、現在の教育では残念なことになっています。
- 丸暗記に近い教え方をしている
- 図形の証明という範囲で収まってしまい、物事の遷移についてまで結び付けらていない
- 義務教育外のため、「数学的帰納法」を学ばない人が多い
これは、プログラミング以外にも言えることですが、数学を単なる一教科としか捉えられていない現状では、せっかく学んだことを実社会と結び付けられず、受験のための教育にしかならないと思います。
この部分さえ変われば、単に「日本史なんて教えずプログラミングを!」なんて言わなくても、三木谷さんや夏野さんが欲しがるような人材がきっと育ってくれますよ。