勉強が出来ない奴はプログラマになれ!(バカだからできる勉強法)

 実際にプログラミングの講師をしている人間として言わせてもらえれば「それは正しいが、危険」かなーと。


 プログラミングは勉強しなくてもできます。
 だって、プログラミングができるってことは「プログラミング言語が使える」ということで、それはつまり日本語や英語を使うのと同じだから。
 サンプルプログラムを参考にして、コーディングコンパイル→実行→デバッグ→修正、をひたすら繰り返していけば、理解できなくてもなんとなくプログラムを組めるようになります。
 しかも、プログラムは「コンパイル」と「実行」という二つのステップが存在します。日本語とか英語の場合、それを伝える「相手」がいないと練習になりませんが、プログラムは、文法的に間違っていればコンパイラが指摘してくれ、バグがあれば実行時に分かります。その点で、プログラミング言語は独習に向いています。
 だから、ただひたすらプログラムを組んで、いわゆる「手が憶える」状態を作り出せれば、勉強なんかしなくったってプログラムは作れるようになるわけです。


 ただ、それってすごく危険なんです。
 たとえば、データベースを扱うプログラムを作る場合、生徒には必ず「SQLインジェクション」について説明します。
 検索単語をそのままSQLに埋め込んじゃ駄目だよと、Statementインターフェイスは使わずPreparedStatementインターフェイスを必ず使いなさいと、事件の事例がこれだけあるんだよ、と口を酸っぱくして言うわけです。
 このようなことは、手当たり次第プログラムを組んでいる人は知らないでしょう。
 また、C言語であればメモリについて完全に理解していなければバグの温床を生み出すでしょう。スクリプト言語であれば「普段実行しない、テストでも実行しない箇所」にバグを埋め込んでいることに気付かないかもしれません。また、全体的にプログラムを見る目がなければスパゲッティコードを編み込んでしまうことでしょう。
 プログラミングとは、なんとなく作るものではなく、全て論理的な裏打ちがなければいけないのです。それは、医者が「この前この薬あげたら治ったから今度もこれあげる」ではなく「『根拠に基づいた医療』に則って薬をあげる」のと同じです。


 とか言いたいんですが。
 まぁたった半月Java研修しただけで現場に送り込むこの業界でこんなきれい事通用しねー(爆)。Javaプログラマーの中でポリモーフィズムをちゃんと理解している人がどれだけいるか。30%もいないんじゃないかな……。
 なので、結局教える現場では「理論より実践、とにかく手が憶えるようにしましょう」を優先しちゃいます。それに、理論だけ分かってたって現場じゃ使えないしね。「完全に理解していて5日で作れる人」よりは「なんとなくだけど1日で作れる人」の方が現場では重宝されます当然。
 まぁどうせ、医者だってEBMしてる人がどれだけいるか、って気がするし、安全に対価を支払わない日本では気にしなくていいんじゃないかなー。おしごとないよー、という方はJavaScriptなりPHPなりPerlなりを一年間コーディングしまくって手に憶えさせれば晴れてあなたもプログラマー*1

*1:しかし単価の面で中国に勝てないので結局職にありつけない罠。