新人研修で学ぶ
月刊「Windows Server World」の連載コラム「IT嫌いはまだ早い」の編集前原稿です。もし、このコラムを読んで面白いと思ったら、ぜひバックナンバー(2009年5月号)をお求めください。もっと面白いはずです。
なお、本文中の情報は原則として連載当時のものですのでご了承ください。
■□■
新入社員と言えば新人研修だが、では「新人研修」とは何だろう。今月は新人研修について考える。
●新人研修の内容
あなたが学生なら想像してほしい。また、あなたが社会人なら思い出してほしい。新人研修で何を習うか、あるいは何を習ったか。
一般的な新人研修は、会社概要に始まり、マナー研修を含む基礎研修から専門教育(エンジニアなら技術教育)へと続く。中途入社でも会社の業務についての簡単な研修はあるだろう。技術者向けの専門教育もある。しかし、基礎研修は新人研修特有のカリキュラムだ。
基礎研修は、短い場合で1日で済ませるところもあるが、多くの場合は2、3日かけることが多いようだ。ここでは言葉遣いや敬語、電話の取り方、名刺交換の方法などを学ぶ。基礎的なマナーについてきちんと学ぶ機会は少ない。軽視せず真面目に受けてほしい。
もっとも、服装はともかく、敬語の使い方まで身に付くはずはなく、しばらくは「御社に行かせていただきます」のような、あまり美しくない敬語が飛び交う(*1)。一部の外資系企業ではこの段階で英語研修が入ることもある。もちろん、敬語以上に身に付かない。それでも知識を修得しておかなければ行動できるはずがない。
エンジニアの場合はそのあとで技術研修に入る。たいていは「コンピュータ入門」「ネットワーク入門」から始まって、システム管理やプログラム言語を学ぶ。
昔は多くのOSがあったが、現在ではWindows系、Linux系、UNIX系のいずれかに大別される。独自OSを使っているところは少ない。
プログラム言語には流行がある。20年前はCやCobolが人気だったが、その後Visual Basicが流行した。言語仕様が単純なので、プログラム開発の基礎を学ぶには便利だったからだ。続いてJavaがブームとなり現在に至っている。ここ数年はC#も増えている。技術研修は数週間以上、会社によっては数カ月続く。「エンジニアの新人研修」と言えば、この部分を指すことが多い。
技術研修が終了し、ひと通りの基礎知識が身についたら、現場に配属され、先輩社員から実務を通してトレーニングを受ける。これをOJT(オンザジョブトレーニング)と呼ぶ。OJTまで来れば形の上では一人前だ。先輩社員がついているとは言え、お客様の仕事を担当する以上、失敗したら会社の責任になる。
●新人研修の問題点
新人研修で学ぶことの大半は他では学べない。たとえば服装。ファッションが多様化し「スタンダード」の概念が崩れているが、ビジネス上重要な役割を果たす人の多くは年長者である。服装で印象を悪くしては損だ。ビジネスにおける服装は、自分のためではなく相手が抱く印象を良くするための道具である。自己表現は休日だけにしよう。
以前、筆者は「スーツに白い綿ソックスは駄目だと言われましたが、本当でしょうか、何か書籍に書いてありますか?」と突き上げを食らった。ビジネスシーンに限れば本当だしマナーに関するたいていの本にもちゃんと書いてある。そんな疑問が出ること自体に面食らったが、質問せずに不満をため込むよりは、質問した方がずっといい。質問に答えてもらうことで納得できるし、納得したものは身につきやすい。
それでは技術研修はどうだろう。プログラム言語の文法も知らずに、プログラマとして投入するわけにはいかない。また、OSの基本的な操作も知らずに運用管理の仕事ができるはずがない。技術研修は絶対に必要だ。現場で基礎技術を教えるのは負荷がかかるので、新人研修でまとめてもらうと現場としてはありがたい。しかしここで恐ろしい問題がある。
新人研修で習うプログラム言語やオペレーティングシステムが現場で使われているとは限らない
学生の方や、40歳代以上の方は信じられないかも知れない。昔は、自社で利用しているプログラム言語は1つか2つに限られていたので、新人研修で全てをカバーすることも不可能ではなかった。
しかし、現在では主要なものだけでもJava、Visual Basic、C#などがあるし、場合によってはPythonやRubyといった新しい言語も使う。古くからあるCobolも現役だし、C++やCだって死んではいない。しかも、さらに新しい言語も登場しつつある。新人研修で現場のあらゆるニーズに応えることは不可能だ。
そこで新人研修では、プログラム言語ではなくプログラムの作り方の本質だけを教えようということになる。しかし、現実はそんなにうまくは行かない。何がプログラム言語固有の問題で、何が言語に依存しない本質的な問題なのかを識別するのは新入社員には無理だ。
システム管理者も状況は似たようなものだ。昔は、会社ごとに使っているOSは決まっていた。しかし、今は1つの会社でWindowsもLinuxもサポートするのが普通だ。ところが、技術が高度化しているため、新人研修の時間内で全てのOSを教えるのは難しい。不可能ではないが時間がかかりすぎる。
新人研修のカリキュラムを考える側(筆者もその1人だ)は、技術の本質的な部分と、OS固有の部分を分離して教材を作成している。しかし、演習では特定のOSの特定のプログラムを使う以上、完全な分離は難しい。
一部の企業では「人事部が企画する研修には期待していないで、配属後に独自に研修を行う」という状況が生まれているらしい。まるで大学と産業界の関係である。しかし、これは人事部にとっても、現場にとっても、もちろん新入社員にとっても不幸なことだ。
●技術研修の心構え
実は、技術研修期間についても最近は短縮傾向にある。景気後退により、新入社員を早く現場に投入し、利益を上げたいという事情はもちろんある。しかし、それだけではない。現場に必要な技術範囲が広すぎるので、新人研修では本当に必要な部分だけを扱い、あとは現場で身に付けさせるようになっているようだ。
OJTは基礎技術を学ぶのに必ずしも効果的ではないので、配属後の研修は外部の教育機関に委託することが多い。この場合、1日あたり5万円程度になってしまうので、10日で50万円にもなる。それでも社員の時間を割くよりは効率的だという判断だ。
OJTをこなしながら基礎技術を教える会社もある。この場合は、入社2、3年目の社員が教育担当になることが多いようだ。人に教えることは自分の勉強にもなるし、年齢が近い方が会社生活の相談もしやすいからだろう。新人研修全体を先輩社員に任せる会社もあるという。相談役としてマネージャがついているとは言え、思い切った企画である。
基礎技術研修を受けるときの心構えは2つある。1つは、プログラム言語やOS固有の技術と、一般概念を厳密に区別することである。先に、それは難しいと書いたが、難しくてもやらなければいけない。担当講師は十分注意しているはずだが、つい混同してしまうことがある。そういうときは受講者が講師に注意を促して欲しい。
もう1つは積極的に質問をすることである。これは新人研修に限らない。質問をしない講義では、その価値は半減する。質問しないのだったら、参考書でも読んでいれば良い。
同じ時間と場所を共有するのは、質問をして、それをクラス内で共有するためである。質問を遠慮することはない。もし質問しにくい雰囲気があったとしたらそれは講師の責任である。質問は、質問した人の他、同じクラスの他の人の役にも立つ。そして講師にとっても役立つ。筆者の勤務先はITを中心とした教育サービスを提供している会社である。社内用の講師評価リストにはこんな項目がある。
質問を歓迎しているか
(*1)ここは「御社にお伺いします」だろう。謙譲語が使いこなせれば上品で洗練された印象を与えることができる。謙譲語は語尾変化ではなく単語そのものが違うことが多いので使いこなすのも難しい。
■□■Web版のためのあとがき■□■
プログラム言語によって思考スタイルが変化する、ということは確かにある。
たとえば、筆者が最初に本格的に学んだプログラム言語はLispである。Lispを使う時は、アルゴリズムが自然に再帰的になってしまう。
しかし「言語によって思考が規定される」というのは半分間違いである。Lispで再帰的なアルゴリズムが自然に思いつくのは、データ構造が再帰的だからである。再帰的なデータ構造を処理するのに再帰的なアルゴリズムを使うのは当然である。何しろ「アルゴリズム+データ構造=プログラム」なのだから。
だから、プログラム言語を学ぶときは豊富なデータ構造を持つ言語を選んだ方が良い。幸い、JavaやC#など、近代的なプログラム言語はすべてデータ構造を定義できる。学習時には、アルゴリズムと同じくらいデータ構造に注意してほしい。
ところで、自分戦略研究所の旧会議室に、筆者が立てた「はじめて本格的に修得したプログラム言語は?」というトピックがある。非常に多くのコメントがついているので、よかったら読んで欲しい。
2003年当時、Javaは少数派だった。現在の盛況ぶりを見ると隔世の感がある。選択肢から漏れたことを今では深く反省している。