新人に習得させたいスキル・知識の膨大さがネック
こんにちは。本日は「エンジニア育成の生産性を高める新人教育の仕組み」という題で発表させていただきます、株式会社万葉の大場寧子と申します。よろしくお願いいたします。
自己紹介いたしますと、ツイッターなどはnay3というアカウント、GitHubは3を取ってnayというアカウントでやっております。プログラマー歴は30年くらい。中学生のころに始めました。現在は10年以上Rubyプログラマーをしています。基本的にRuby on Railsエンジニアとして働いてます。あと、株式会社万葉という受託開発会社の代表取締役社長をしております。
私自身が現役のITエンジニアかつ社長ということなので、エンジニアではありますが、採用、教育、評価などにも携わることが非常に多いです。採用や教育、評価については社内制度を作っていて、内容も把握しています。総じて「仕組みを作る」というようなことを、何でもやっていますね。
弊社は、2007年の4月2日に私と大学のサークルの後輩である女性の2人で設立しました。当初からRuby on Railsを使った受託開発を中心にやっております。現在23名が在籍していますが、エンジニア内での男女比が12:7と、女性エンジニア比率が業界内の平均的な水準より高めなのも弊社の特徴の1つです。
さて、本日は何をお話しするかというと、採用、教育、評価の中の教育の一部である新人教育についてです。具体的には「入社した人(エンジニア)ができるだけ早く社員と同様のパフォーマンスを出してくれるようにするにはどうするか」ということで、我々が行っている取り組みをご紹介したいと思います。
そもそも新人エンジニア、特にプログラマーの教育の課題は何かといえば、私も常々感じていますが「それが難しいこと」でしょう。なぜ難しいかっていうと、いろいろなことを習得させたいからです。
習得させたいスキルとしては、まず基本的な知識とか、Railsであればどんなメソッドが呼べるかとか、いろんな設計の定石とかがあります。あとツールとか、開発手法文化みたいなものへの知識も必要です。もちろんコードを読む力、書く力も必要ですが、これには結構時間がかかるかなと思います。
「いかに早く全体像を理解するか」というような力も必要になります。我々プログラマやエンジニアは、基本的に問題解決が仕事のメインになると思うんですが、問題解決以前に「問題を正しく理解する」「問題のいろいろな側面を全部見る」ことができないと、解決方法が偏ってしまうためです。
それから、実際に問題を解決する力。これも自分の知識や経験、スキルだけを使ってやみくもに解決しようするのではなく、例えば人に尋ねてみたり、そもそもその問題を解くのを止めてみたりと、いろんな方法がある。そういったことを総合的にできるようにしていく必要があります。
また、エンジニア特有かもしれませんが、スキルや技術、知識が常に変わっていくので、全ての情報を得た中でプレイすることって、あまりできないんですね。自分の知らない単語、知らない技術、新しいものが次々出てきますから。これに対処するためには、ある種のストレス耐性――知らないこと耐性――がないとつらい。ですので、そのへんのさばき方を伝えることも必要です。
あと、この前のセッションで及川さんもおっしゃってましたが、ソフトウェアは1人ではなくチームで開発することになるので、「一緒に働く人に力を出してもらう」「コードレビューでお互いを助け合う」ための力がすごく求められるかなと思います。
ただ、こういった力の多くは座学で“ドリルを解けばできる”といったものではなく、自分で経験しないとなかなか身につきづらい。その上、ある程度時間もかかります。だからといって、5年、6年とじっくり熟成するのを待つっていうのも大変。なので、「一定のスキルを少しでも早く習得してもらうにはどうればよいか」ということを考えてやっています。