コンピュータサイエンスやりたい!プログラミングやりたい!
みたいなことを言う高校生が世の中にはいっぱいいるようです。
それは素晴らしいことだなあと思う一方で、彼らは進路選択を間違わないと良いな、と思います。

僕のように、思考停止で大学に進学するべきではないからです。

プログラミングやりたいのなら、「大学」以外にも「専門学校」「独学」「弟子入り」等の選択肢があります。思考停止で大学に進学するべきではないです。

fd9cb1fd


ところで、僕が大学を卒業して10日が経ちました。
まだ記憶に新しい内に、大学でコンピュータサイエンスを学ぶメリットとデメリットについて書いてみます。
普通はメリットとデメリットを分けると思いますが、今日は交互に書きます。


メリット①アルゴリズムを学べた

クイックソートだのダイクストラ法だの、「これ学んだから何になるの?」というアルゴリズムは、独学ではまずやらないでしょう。
僕は、役に立たなそうなものを学ぶのが嫌いなので、独学でプログラミングを学んでいたらこれらの基礎アルゴリズムについて考えることは無かったでしょう。
が、このような根幹のアルゴリズムと、その評価方法を学んでおくことは大変ためになることです。

後々、自分で書いたプログラムの誤作動に対して解決法を組み立てたり、より効率の良い書き方をするのに役立ちます。
コンピュータサイエンスの根幹を強制的にやらされるのは、メリットでした。
今考えると、とても役に立っています。



デメリット①ただの写経の時間があった

最初から最後までさっぱり分からないのに、とにかく課題をこなさないといけない科目がありました。
ハードウェア設計言語のVerilogの講義は、僕にとっては写経の時間でした。
適当に他のコードから関係ありそうなものを切り貼りしたり、友達のコードを移したりして課題を乗り切りました。
結局、Verilogの文法はおろか、ハードウェア設計言語って結局ナニ?とかそういうレベルの理解です。
ああ!時間ムダにしたなあ!



メリット② プログラミングの土台を学べた

メリット①と似てます。
僕の初めてのプログラミングは、大学2年生の時で、C言語でした。
結構しつこくC言語をやらされました。
C言語は、基本中の基本の言語です。それゆえに、普通の人が学んでもあまり大したものは作れないです。アプリ開発とかがしたければ、もっと便利な言語がたくさんあります。

僕自身、自分で好き勝手に学んでいたら、C言語はあまりちゃんとやる機会が無かっただろうと思います。
しかし、この基本言語をきちんとやったのは、大きな収穫でした。
これをやったお陰で、プログラミング全体に関する根本的な理解ができました。
何かおかしなことがあった時も、基本に立ち返って考えれば、大体どこをいじるのか分かるものです。

僕のあらゆるエンジニア作業において、このC言語の経験が役立っています。



デメリット② 実用的でないプログラムをたくさん組んだ

「シェル(ユーザからのコマンドを解析して、実行するプログラム)を作成せよ」というような課題が出て、必死にそれに取り組んだりしました。
それはそれで勉強になったんですけど、作っている間僕はずっと思っていました。

シェル、作らなくてももうあるじゃん!

僕が作る必要はありません。プロが作ったバグの無いシェルがあるんだから、何故僕がバグだらけのボロボロのプログラムを組まないといけないのか。

もちろん学習効果を狙ってのことなのですが、それでも少しさびしかった。
どうせなら、何かの役に立つプログラムを組みたいな、と思ったものです。



メリット③ 友人と話しながら学べた

この要素はとても大きかったです。
ちょっとした時に、情報工学ジョークで盛り上がったりしたものです。

図書館で座席に荷物が置きっ放しになっていた時

A「おい〜!誰だよmalloc()しっ放しの奴!」
B「ふざけんなよ!ちゃんとfree()しないと!」
A「なー。メモリがオーバーフローしちゃうよ」

という会話をしたものです。
こういう軽口を叩く喜びがあるから、人は学びを頑張れるんだろう、と思います。



デメリット③ 自分のプロジェクトへの意欲が下がる

「大学でプログラム書いたから、まあ自分の趣味のプログラムは今日は良いかー!」という発想になることが多く、結局自分が本当にやりたいエンジニア的案件は進みづらいです。
自分のプロジェクトをやる、という強い意志は減ってしまいますね。



以上、大学でコンピュータサイエンスを学べて良かったこと悪かったことを列挙してみました。
個人的には、自分でプロジェクトを進めながら学べる人は大学に行く必要は無いと思います。
が、コンピュータサイエンスの根幹を自然に学べたのは、大学に行ったメリットかな、と考えます。

プログラミングしたい高校生の、進路選択の一助となれば幸いです。



twitter: http://twitter.com/kenhori2

よろしければフォローお願いします。