「Java を教えるのではなく、"プログラミング" を教えてほしい。オブジェクト指向は教えないでください。」

新人研修というのはひっかかるところか否かなんだけど

先日、SIer の友人が新人研修の講師として Java を教えるというお話を聞きました。会社側からは「Java を教えるのではなく、"プログラミング" を教えてほしい。オブジェクト指向は教えないでください。」との指示を受けたそうです。

http://d.hatena.ne.jp/t2y-1979/20090510/1241958803

確かにプログラミング素人が最初に学ぶ段階で、やれオブジェクト指向だとか、やれフレームワークだとか、って覚えようとしても到底無理な話で、センスがある人とかプログラミングの基礎は理解している(例えば他の言語を少しかじったとか)人とは別です。そして、全くの素人に大して高々1〜2ヶ月の新人研修を行い実践投入をさせるような会社がたくさんあるのも事実ですが。
自分も数年前に新人研修に携わった事ありますが、はっきり言って適正がない人も結構いました。そんな人材をいれる会社だったと言われればそれまでですが、地方の中小なんてどこも似たようなもんでしょう。論理的思考が出来ない人がプログラマを目指しても不幸ですよ。

それはさておき、新人研修とか抜きにしてプログラミングのいろはを教えるならば、そもそもJavaは不適切かと思います。プログラミングを学ぶ上で最初に重要なのは5点です。

  • 順次処理であること
  • 変数の概念
  • 繰り返しや条件分岐
  • 配列やマップなどの基本データ構造
  • 関数の概念

これらを教えるのにJavaってオマジナイが多すぎる上にコンパイルとか余計な事まで覚えなければならないです。そんな事は後から覚えれば良くて、まずはスクリプトをさらっと書いて実行できるべきです。この点、PythonとかRubyとかが適してます。
また、変数ってのが意外と解らない人には解らない概念です。そんな人も対象に含まれている場合は、Excelで集計表とか作ると効果的ですね。変数が値を格納する抽象的な箱ってイメージが直感的に分かるので、よくあるようなイメージ図より解りやすいのです。

追記

「何もできないコーダーを生産しないで欲しい」というコメントがありましたが、全くその通りです。自分も研修時はなるべく実践的なレベルまで覚えられるように工夫しましたが、その時の上司に「そんな事まで今覚えさせても意味ない。どうせ2〜3年もすれば覚えるだろ」と言われたのを覚えています。その会社は辞めましたが、体質は今でも変わらないとか・・・。かなりの新卒と中途を採用しているのに社員数があまり増えていませんもの、様子が伺えます。