コードキャンプ 取締役/COO 米田氏
米田:今回は様々なテクノロジー企業様にエンジニア育成についてお話しいただいていますが、私からは人材研修・育成サービスを提供する側の目線からお話させていただきます。
すでに皆さんの会社で実施されている事も含まれているかもしれませんが、自社での取り組みの振り返りや、他社での事例を知る機会にしていただければと思っています。
まず私の自己紹介ですが、広告代理店での勤務を経て、ビジネス界で著名な大前研一氏が経営されているビジネススクールで海外MBAプログラムの責任者を務めていました。その後に、コードキャンプを創業し今に至っています。
また、2016年の9月には初めて書籍「プログラミング入門講座――基本と思考法と重要事項がきちんと学べる授業」が出版されまして、プログラミング初心者の方向けの学習の案内本を執筆しました。
おかげさまで書籍は大変評判をいただいており、この前に立ち寄った書店でも平積みされているような状況でした。ぜひご興味がある方はご覧になってみてください。
1万6千人が受講する日本最大級のプログラミングスクール
まず、コードキャンプとは何やっているのか?というご紹介をさせていただきます。
コードキャンプは、プログラミングをはじめとして、テクノロジー全般についての普及・啓蒙から教育、人材輩出をお手伝いする事業を運営しています。
最近は、テクノロジーの中でも特にAIやIoT、ビッグデータといったテーマでの人材育成・事業開発の支援も手がけさせていただいております。
今回メインでお話させていただくのは「CodeCamp」を軸にした日本初のプログラミング家庭教師サービスです。オンライン上で現役エンジニアの指導を受けながらプログラミングが学べるサービスを運営しています。
2016年12月の時点で、1万6000人くらい受講者の方がいらっしゃいます。
教育研修を提供している企業として、我々の中にはかなり膨大な受講者の学習データが溜まっており、今日はそのデータをベースにしてプログラミングの習得についてお話していきたいと思っています。
CodeCampの特徴として、現役エンジニアが講師を担当しているということがあるのですが、現在全国で200名くらいの講師をネットワーキングしています。
プログラミングを学習する方が、質の高い講師から指導を受けられるように現役のエンジニアを集めてマッチングをしています。
カリキュラムは、常に最新の情報を盛り込んだ教材を準備しており、レッスンを修了するには「オリジナル課題」という形で独力でWebサービスやアプリを開発してもらうことで、確実にプログラミングを習得するための研修を提供させていただいています。
「技術研修の時にすべき事、してはいけない事」ということで大きく3つまとめています。他の企業様の講演でも触れられましたが、「自走できるエンジニア」を育成するというキーワードが出てきました。今回は、これを紐解いていきたいと思います。
まず、新卒エンジニアの教育研修においてどこを目標しているかというところが大事なポイントだと思っています。
よくある、人事の方や研修担当者側の視点としては、研修によって新卒エンジニア全員に一定水準以上の技術・知識レベルに引き上げようということを目標とされていて、その企業が目指す新入社員としての最低ラインまでを教え込むところを重視されています。
それに対して、新入社員を受け入れる現場としては「もっと技術力の高い人材が現場に欲しい」、「現場ではそもそも研修で教えた言語を使っていない」、「OJTでやるので教育はほとんどしなくて良い」など多様な要望を抱えています。
そのような状況の中で、集合研修で全ての社員が同じ水準の技術・知識レベルになるように、限られた時間で内容を詰め込んでいくというのは、現実的ではないと思っています。
そこで、研修の目的としておくべきは「自分で学ぶ習慣を持った人達を育成していく」ことだと考えています。
プログラミング習得までにかかる時間は"個人差"が大きい
1ヶ月〜2ヵ月で全新入社員に技術を習得させるというのは現実的に難しいと思っています。この課題に対していくつか提案させていただきたいのですが、1つ目は“早抜け方式の研修”というご提案です。
よく課題として伺うことが、10名以上の新入社員に対して1ヶ月の短い期間で知識を詰め込もうとすると、全員が同じレベルまで知識やスキルを習得して現場に送り出すということは非常に難易度が高いということです。
その結果、現場に迷惑がかかってしまう等が発生するわけですが、逆に期間を引き延ばせば解決するのか?というと、そういう話でもありません。
期間を延ばして3ヶ月間、膨大な時間を費やして研修を行ってみたとしても習得が早い人にとっては暇な時間が増えることになってしまいますし、逆に時間をかければ必ず習得できるようになるわけではない。
原因について掘り下げていくと、同じ新卒社員でもプログラミングの知識レベルやスキルを習得するまでにかかるスピード、得意不得意なことが異なるということです。
この前提条件を理解すると、一律の研修内容で決められた期間中に全ての新入社員を同じ水準までの技術レベルに引き上げることの難しさが理解できると思います。
具体的にデータでも見ていただきたいと思いますが、コードキャンプの研修を受けた方が課題をクリアするまでにかかる時間が人によってどれくらいの差が出るのかというデータです。
課題は、簡単なカウントダウンタイマーをつくるというものです。
実際にこれを解いてもらった結果何が起きたかというと、1回でクリアしてしまう人もいれば22回受けても課題をクリアできない人がいます。
これがプログラミング習得にかかる時間の個人差の実態です。習得までにかかる時間のバラツキは人事や教育担当の方々が想定されている以上に個人差があるということが理解いただけると思います。
なので、新入社員それぞれの知識や理解度が異なることを前提として“研修期間早抜け方式”という形で研修に取り組まれると、いいのではないかというのが1つめのお話です。
"優れたエンジニア=優れた講師"であるとは限らない
2つ目は“優れた講師を用意する”ということです。
凄く端的に言うとエンジニアとして技術力が高い人は、かならずしも初心者・未経験者にとってのいい講師ではないということです。
これは皆さんも感じていらっしゃるかと思いますが、我々も講師を採用するときに重視しているのはエンジニアとしてのスキルよりも、どちらかというと講師としての適性・スキルです。
「優れた講師」とはどういう人なのか?というと、一般的には教育への情熱や育成に関しての専門スキル・知識を有した人が、講師として適切だと言われています。
エンジニアとして技術力が高い人というのは天才肌・センスのような部分や積み重ねてきた経験値に差があります。
初心者がぶつかりがちな壁をあまり経験していなかったり、経験したのが昔であったりすることが多く、初心者の気持ちや置かれている状況が分からないということが起きるようです。
なので、「何でこんなことも分からないの?」など言ってしまうケースがあります。この言葉をこぼした瞬間に学習者との間に壁ができてしまい、新卒の方は段々と質問しづらく、自分の頭で考えづらくなってしまいます。
講師には、その人を引き上げようという思いと、教育するためのスキルを有した人でないと適性が合わないのではないかと思っています。
CodeCampの実績として、200名ほど現役エンジニアの方を講師としてネットワーキングしているのですが、本格的に受講を開始する前に「模擬レッスン」という時間を設けています。
CodeCampでは、講師というのは生徒から選ばれる立場です。なので、受講生は自由に講師を選べます。
講師を並べて比較してみると、受講枠がほとんど埋まっているという方もいれば、逆に生徒から選ばれる回数が少ない方がいます。
講師のスキル差は受講生からの受講申し込み件数と相関がありまして、我々の方で講師のスキルをランク付けをしています。
なので、実際に受講生から選ばれる講師というのはスキルが高い人であるという事が裏付けできるんじゃないかという事です。
必ずしもエンジニアとしてのスキルが高い方が講師として優れているという風には言いづらいということで、教育・研修の担当者は教育スキルや育成にかける情熱で選抜していただけるといいと思います。
新卒研修は技術面、メンタル面のフォローが必須
最後は“個別フォロー”です。
すでにやってらっしゃる方もいらっしゃると思いますが、改めて振り返らせていただきます。
研修でよくある場面として「分からない事はありませんか?」と、講師が質疑応答の時間を作ってもなかなか質問は出てきません。
これは多くの研修現場で見られる光景です。
我々も研修をしていて感じるのですが、受講生は「はい大丈夫です」と言いがちですよね?特に新卒の方はそう返答することが多いと思います。
新しく入ったばかりの会社で、成長が期待されている半面どうしても「わからない」という本音を言いにくい、研修を担当する講師にすら本音を言いにくいというのが実態です。
という事で、個人のフォローをするメンターとして実際に面談を実施しているのですが、そこで初めて本音が出てくるというケースが多々あります。
新入社員の「わかりました」「理解できました」という自己申告は信用できないことが多くあります。
また、技術研修をやっている時に「いま何のためにこの学習をしているのか分っていない」という新入社員も必ず出てきます。
少し脇道に逸れますが、このような課題は必ずしも技術に関する悩みだけではなく、実は今後のキャリアや新しい環境への適応など、研修外の部分で悩んでいたりします。カバーしなければ成長の妨げになるので、フォローすることが必要になってきます。
CodeCampでは、個別フォローの一環として受講生ごとのコードレビューをしています。
新入社員からの自己申告がどれだけ頼りないか?ということですが、課題を出して「私はこの課題をクリアしました」という時点で提出してもらっています。
結果的に何が起きるかというと、課題がクリアできるまでにコードを出し直す回数にかなりばらつきがでます。
実際にカリキュラムの予定通り進められる方はむしろ少数派で1割くらい。9割くらいの方が理解が不十分で、改善しなければいけない点が多くあるという状況です。
なので、研修の内容を「分かっています」「理解しています」という形で、研修後の日報などに書いてもらっていたりすると思うのですが、その日報は疑って見てもらったほうがいいと考えています。
よくある、個人の学習課題がそのままになってしまう理由として「皆が先に進んでいるから聞けませんでした」とか、「研修が進むにつれて周りと差が開いており不安です」とか、「私は本当にエンジニアになれるのか、向いているのか凄く不安です」というような感じで、こういう問題は個別フォローを行っていないと顕在化しません。
という事で、できる限り研修期間中は定期的に1対1の面談やレビューを挟んでいただくといいと思います。
CodeCampの新卒エンジニア向け研修事例
今日は特徴的な2つのケースをご紹介したいと思います。
新卒エンジニア30名、大手IT企業でのJava研修事例
まず1社目が大手のIT企業様です、研修を受ける新卒エンジニアは30名。9月迄の新卒研修を終えて現場に配属後に、CodeCampのプログラミング研修を受けていただきました。内容は1ヶ月間のJava研修です。
以前から抱えられている課題があり、1つが新入社員の知識・経験がバラバラなので個別に対応したいということ、もう1つは一定水準以上の技術レベルにしたいということ、最後はスキルを見える化したいといった課題・ニーズでした。
1つめの新入社員の知識・経験がバラバラという課題に対しては、コースをレベル別に3つ用意しました。完全初心者向けのコースと、Java以外の言語の経験はあるがJavaの経験がない方向けのコース、最後はJava経験者向けという形でいくつかコースを分けてご提供しています。
なので、同じ内容を受講するのではなく、新入社員のレベルに合わせてコースを用意し、さらに進捗にばらつきが出てもいいようにマンツーマンで研修を実施しました。
2つめはすべての新入社員を一定水準以上のレベルにしたいという課題です。
これはよくある話ですが、30名くらいの規模になると2:6:2の割合で8割くらいの方が大なり小なり何かしら躓く傾向があると思います。
その対策として、研修期間中に定期的に理解力チェックや課題を実施し、必ず個別にコードレビューの機会をもうけました。
何割がクリアできていればおおよそOKという考え方もあると思いますが、研修後のレベルを一定に保つため、必ずコードレビューを実施して苦手や弱点の克服を行いました。
3つめはスキルを見える化したいというニーズです。
これは講師がマンツーマンで指導した後に必ず進捗状況のメモを残しています。それを元に客観的な技術レベルを記載してレポーティングさせていただいています。
レポートは、配属の際に配属先の上司や教育担当者に引き継がれ、それを参考に現場で必要な技術の研修や、OJTを行う際の参考にしていただいています。
非エンジニア対象のプログラミング研修、大手ネット系サービス企業
もう1つが大手ネット系サービス企業様のケースです。
最近、ネット系の企業様で、非エンジニアの方もプログラミングを学ばせたいというニーズが多くなってきています。
この場合にありがちな問題として、研修の提供者と受講者の間に温度差があるということです。
提供者側からすると非エンジニアでもプログラミングをある程度はできるようになってほしい、技術を理解してほしいと考えているのですが、受講者側はプログラミングを学習する意欲を持ちづらいという事があります。
「なんで私達がやる必要があるの?エンジニアになるわけではないし」という本音です。
この場合は必ずフォローが必要です。プログラミング研修の実施前にオリエンテーションを挟んで技術を学ぶ必要性や、技術そのものをライトに体験してもらう講座を実施しています。
いきなりコードを書くという研修ではなく、先端技術を使ってサービスのアイデアを考えるなど企画を体験し、その中でテクノロジーやプログラミングに触れて抵抗感を払拭するということをやっています。
プログラミングの研修に入った後は、週1回に個別フォローを実施します。ここでも、技術のことだけではなくメンタリングをしながらプログラミングを学ぶ重要性を伝え続けています。
こちらの企業様は、現場への配属を早期に行いたいということで、研修は現場のOJTと並行して実施しました。
なので、研修期間も基本は1ヶ月という設定でしたが、進捗状況によって柔軟に対応し2ヶ月〜3ヶ月くらいかけてプログラミングを習得するところまで学習していただきました。
このように、企業の課題ごとに実施内容を工夫して最適な研修が実施できるようにしています。
新卒エンジニア研修でやるべき3つのこと
最後に新卒向けのプログラミング研修において重要なことをまとめさせていただくと
1つめ、 習得の個人差が大きいプログラミング研修は早抜け方式。もしくは配属されてもしっかり習得するまで受けられるような状態を作っていただくことがいいと思います。
2つめ、優れたエンジニアではなく、講師として優れた方を研修担当にすること。講師をすることに情熱を持っている方や、講師としてのスキルを持っている人を担当に抜擢していただきたいと思います。
3つめ、個別フォロー、コードレビューを実施すること。特に新卒を対象に研修を実施する場合は技術的な内容だけではなく幅広くフォローが必要です。
入社後にプログラミングの学習を始めて、いきなり挫折を経験するような事が起きます。その時にどのようなフォローができるかが、新卒社員を成長させていく上で重要なポイントです。
本日お話ししたような内容のポイント抑えながら研修を企画していただくと、新卒・未経験の社員をエンジニアへ育てていこう、プログラミングを学習させようと考えられている企業様での研修効果を高めていただけると思います。
ご清聴ありがとうございました。