TO: fkm氏

じゃあ残りの5年間は何してたの?」と言われるような気がするのはσ(・ω・)だけだろうか?

私は高専卒で職業プログラマになりました。
高専時代、入学当初からC言語のプログラミングをはじめ、
3年目にはC++を習いましたね。
学生であった5年間に授業・プライベートをあわせて触った言語は
5〜7くらいでしょうか(C,C++,VB,Perl,JavaScript,Prolog,Z80アセンブラくらい?)
それぞれ1年程度で言語として使えるというレベルになることは可能です(でした)
難しいといわれるCやC++でも言語仕様や環境依存の話を抜かせばその程度のものでしかありません。


言語そのものに対する知識は、言語仕様や環境依存のものを抜かしてしまえば、
そのほとんどがデータ構造の表現方法と制御構文に関するものでしかないのです。
本の学校というところはそれら普遍的な共通して使える知識を教えるものです。
(海外ではベンダー依存のものを教えることも多くあるそうです)
そのため、残りの5年間は「知識」そのものに対してはなんら意味がありません。


では何の意味があるのか?という話ですが、結論から言ってしまえば
言語そのものやプログラミングそのものに対するなんらかの意味づけがあるかと
言われれば、その答えは「ほぼ意味は無い」となります。

「情報系出てるのなら、実装部分よりもっと上の工程をしっかり」が要求されているのであれば、最低ラインがこのくらいなのも十分納得できるが

実装より上の工程について学校は教えてくれるのでしょうか?
少なくとも私の在籍していた高専では教えてくれませんでした。
就職してからも設計について直接教えてくれた人は皆無です。
今私がもつ設計についてのノウハウは、
全て現場で、同僚のプログラマとの議論から得られたものです。


学生生活の中で授業を受け続け、実習を繰り返し、
プログラミングに対する経験を得たとしてもそれがそれほど役に立つでしょうか?
id:fkm氏の学校では設計についてのノウハウを教えていますか?
アルゴリズムとデータ構造の関わりやデザインパターン
最新のフレームワークについての講義がありますか?
デバッグ手法やバグを出さないためのノウハウ
(Effective C++に書かれているような定石など)を教えてくれますか?
実際に使われるものに触れていないのであれば、いくら講義を受けようと
使い物にはならないのが現実です。


とまぁ、学校というものに対して否定的な話を書いてきましたが、
必ずしも否定的なものばかりでもありません。
その1つが卒業研究だったりします。
ある特定の分野の雑多な知識を得られる卒業研究というものは、
直接プログラミングスキルとは関係がないものの、
業務知識と結びつく可能性があるため、場合によっては非常に役に立ちます。


学校という場に限定して言うのであれば、そこでプログラミングスキルを学ぶ
というのは非合理的なのが現実です。
それよりも、数学的な知識や工学的なものの見方、問題を論理的に解決する手法
などを学ぶほうが理に適っているのではないでしょうか?
もし、プログラミングスキルを伸ばすのであれば、
学校という限定された場ではなく、Web上にあまたあるプログラマのコミュニティに
参加したり、自作のアプリを公開したりといったことの方がよほど良いのではないでしょうか?