【育成担当必見】エンジニア育成でやってはいけない5つのアンチパターン|300人の育成で見えたこと

こんにちは。株式会社メンバーズの秋野です。
私はメンバーズでWeb・モバイルエンジニアの育成を4年間担当し、累計で約300人ほどのエンジニアを育成しました。ありがたいことに育成したエンジニアの多くが現場で活躍しておりクライアントから評価をいただいております。

最近はDXの文脈もありエンジニア組織の内製化を進めている企業が多く、それに伴ってエンジニア育成についても内製で取り組んでいる企業が多いようです。特に新卒エンジニア育成や中途エンジニアのオンボーディングにおいて、どのような手法が効果的なのか、手探りの状態かもしれません。

この記事では、累計300名のエンジニア育成に携わってきた私の経験と社内アンケートから見えてきた知見に基づき、エンジニア育成でよく陥りがちな3つのアンチパターンと明日から実践できるエンジニア育成の具体的なコツについてまとめてみようと思います。効果的なエンジニア研修の設計や育成カリキュラムの作成に悩む、エンジニアリングマネージャーや育成担当者の方はぜひ参考にしてみてください。

エンジニア育成でやりがちなアンチパターン

まず最初に、私が思うエンジニア育成でよくあるアンチパターンを紹介します。
みなさんはこのパターンに当てはまってはいないでしょうか?

アンチパターン①: OJT中心の育成

私の知る限り、多くの会社ではそもそもエンジニアを育成するための準備ができていないような気がします。その結果ほとんどの会社で育成の1つとして取り入れられるのがOJTだと思います。
ただ私が思うに以下の理由から、OJTはそもそも育成として使うのはとても難しいです。

  1. 適切なタスク選定の難しさ

    未経験者やジュニアエンジニアにタスクを渡す場合、基礎スキルが身についていないと渡すことができるタスクを探すのが難しくなります。場合によってはタスクを細分化して渡せる難易度まで整理する必要があります。

  2. 育成担当者の過大な負担

    プロジェクトの納期に追われながらOJTによる実務指導を行うのは、育成側の既存業務に加えて大きな負担がかかります。結果的にOJTによる育成に対応できるエンジニアが限られ、OJTを行う人が特定の人に偏り属人化に繋がってしまいます。

  3. 成長評価の基準不明瞭

    OJTで育成を行う場合、基本的にはプロジェクト状況に合わせた経験に偏ってしまいます。育成カリキュラムのような網羅的な課題ではないため、成長に対する明確な基準を作るのが難しくなります。結果的に対象者の成長速度や習熟度を客観的に計測するのが難しくなり、スキルの可視化や改善に繋げるのが難しくなります。

もちろん仕事を進める上で現場での作業で学ぶことが多いのには賛成ですし、OJTも補助的な手法としては有効です。しかし「OJTをやっているから育成環境は整っている」と考えるのは、エンジニア育成の理想的な環境を整えている意味とは大きくずれてくるのではないでしょうか。

指導側のOJTに対するアンケート

ここで弊社のエンジニア200人に対してとったアンケートの結果を紹介します。

指導側としてのOJTへの考え

指導側としてのOJTに関するアンケート結果
指導側としてのOJTに関するアンケート結果

現場での育成の課題

現場での育成の課題に関するアンケート結果
現場での育成の課題に関するアンケート結果

これをみると現場で働いているエンジニア視点でも、OJTのみの育成では足りないこと、そしてOJTを行う側のスキルや負担にも課題がありそうだと読み取れます。

アンチパターン②: 資格取得中心の育成

資格取得を育成カリキュラムとして利用することもよくあると思います。
こちらも育成という意味では色々と弱点があります。

まず資格勉強で身につける知識は、実際の現場で使う知識や最新の技術トレンドと乖離した内容になりやすい傾向があります。わたしも経験があるのですが、特に進化の早い技術領域の資格の場合では、試験によってはかなり古いバージョンの知識に偏ってしまい、現場で即戦力となるスキル習得に繋がりにくいことがあります。

次に資格取得そのものが目的化し、表面的な知識しか身につかない可能性がある点です。極端な話、過去問対策や試験テクニックに習熟すれば、内容を深く理解していなくても合格できてしまうことがあります。これでは、エンジニアとして本当に必要な思考力や問題解決能力といったスキルが身についているのかを正確に測ることは難しいでしょう。

そして、あまり議論されているのを聞いたことがないのですが、資格取得による育成の最も見過ごされがちなデメリットだと思うのは、どこの会社でも同じ内容を個人任せで自習してもらうことになりやすいことです。自社独自のエンジニア育成ノウハウや他社との差別化といった、内製育成を行う本来のメリットである「競争優位性の高い育成手法の確立」に繋がりにくいことです。

事業内容や技術スタックに最適化したエンジニアを素早く育成できれば、優秀な人材確保や組織全体の開発力強化において大きな強みになります。しかし資格試験頼みで個人の自学自習に任せてしまうと、自社独自の育成文化や強みを作る機会を失ってしまう可能性があります。

アンチパターン③:動画教材などいつでも誰でも学習できる環境を用意して満足してしまう

動画教材をいつでもみれるように準備する会社もあると思います。動画教材は質の良いコンテンツをいつでもどこでも見ることができ、最初はとても良いアイデアに感じます。

しかし、実際に導入をしてもほとんど利用されないのが現状ではないでしょうか。

冷静に考えれば当たり前なのですが、そもそも現代では手に入れたければ個人でも優れた教材を簡単に手に入れることができます。無料で手に入る教材もたくさんあります。その状況で学習をしていない人は会社で環境を整えるだけでは学習をしないと思います。

効果的な学びに関するアンケート

ちなみに上記の話についてですが、弊社内のアンケートでも似たような結果が出ています。

効果的だった学び方

効果的な学びに関するアンケート結果
効果的な学びに関するアンケート結果

こちらのアンケート結果からは資格取得や動画教材の活用は効果的な学びだと感じられていないことがわかります。

※ 効果的な学びについては後述するのでここでは割愛します。

アンチパターン④: ずっと一人で学習をする育成

次に紹介するアンチパターンは育成の取り組み方についてです。
エンジニアの育成は最低でも4名くらいの複数人で行うことをお勧めします。

実は先ほどのアンケートにあるのですが、他者からのレビューや他者への説明は効果的な学び方の上位に入ります。
つまり、複数人で同じカリキュラムを行ってお互いにレビューや説明をする環境をととのえるのはとても効果的だということです。

もしエンジニアが一人しかいない場合は、先輩がレビューをしたり、先輩に説明をする時間を設けると良いかもしれません。

アンチパターン⑤: ”技術育成”のみの育成

エンジニアは一般的に専門職のため、ビジネススキル育成をエンジニアに行うイメージは少ないと思います。

しかしDXが叫ばれる現代、余程大規模なシステムの開発でもない限りはエンジニアはたくさんの人と仕事を進める必要があります。
また多くの会社では開発はチームで行うと思います。
場合によってはプロジェクト管理も求められると思います。

エンジニアにとって基礎的なビジネススキルは必須のスキルです。
弊社の仕事でもコミュニケーション能力の高さを褒められるエンジニアはたくさんいますし、逆にスキルがあってもコミュニケーションがうまくいかずに活躍できないこともあります。

エンジニア自身は、技術に集中したいと思いますが、企業としては基礎的なビジネススキルの育成は必須だといえます。

ちょっと横道:エンジニアはアンチパターンで育ってきた?

ここまでの話を聞いて「いやいや、自分はこのアンチパターンで育ってきた。これでもエンジニアは育つよ。」だったり「今やっているのがまさにアンチパターンだが人は育っている」と感じた人もいるかもしれません。

もちろんOJTや資格取得だけで一人で成長する人もいると思います。
例えばTech企業のエンジニアなどであればそもそも自分で成長できるような人が集まっているのかもしれません。ひと昔前であれば、エンジニアは意識して目指す職種だったと思うので、このやり方でも成長できるエンジニアは多かったかもしれません。

しかし現在では、自分で目指してエンジニアになったのではなく、流れでエンジニアになった人もたくさんいると思いますし、あらゆる企業でエンジニアを育てることになれば、完全未経験の人やモチベーションがない人も育成対象になると思います。

そうなると、すぐにOJTを行ったり資格や書籍だけで学ぶような最低限の育成ではエンジニア育成の成功は難しいと思います。基礎知識を入れ、コードを書いて、チーム開発を経験し、プロダクト開発にチャレンジさせるなど「エンジニアは順を追って体系的に育成する」という意識転換がこれからのエンジニア育成には必要だと感じます。

エンジニアをうまく育成するコツ

ここまでは、私がエンジニア育成に対して感じるアンチパターンを紹介しました。ではどうすればエンジニア育成はうまく行くのかという話が必要なので、私が考えるエンジニア育成についてここで提示してみます。

エンジニアをうまく育成するには2つのフェーズが必要です。

フェーズ①:体系的なカリキュラムで基礎を身につける

効果的なエンジニア育成の第一歩は、やはり体系化された育成カリキュラムを用意し、未経験者やジュニアエンジニアが段階的に基礎知識や開発経験を積めるようにすることです。理想としては、学習ロードマップとしてカリキュラムの一覧を作り、無理なくステップアップできる順番に整理することです。カリキュラムを順に進めるだけで必要な開発スキルを少しずつ、かつ着実に学習できる内容にすることがポイントです。

それぞれのカリキュラムにおいて、理解度を測るためのテストやレビューを導入することは、学習の質を担保する上で非常に重要です。さらに、各モジュールの学習にかかった時間を記録することで、カリキュラム自体の改善に役立てることができます。

弊社はWebエンジニアの育成が多いので以下のように、実践を重視したカリキュラムを整理しています(一部抜粋)

  • Webの基礎知識(動画と書籍でインプットして、オンラインテストで理解度チェック)
  • Linuxの基礎(書籍でインプットして、実機演習を含むテストで理解度チェック)
  • Git, GitHubの基礎(社内開発環境でハンズオン形式での環境構築)
  • 初めてのプルリクエスト(Linuxの問題をといてプルリクエストを提出し、メンターからのコードレビューを初体験)
  • コーディングの基礎(Webページを実際に作りながら、HTML/CSS/JavaScriptを実践的に経験する4段階ステップ)
  • アルゴリズム実装(基礎的なアルゴリズムの実装ができるように、オリジナルの課題に挑戦)

このようにテストやレビューやハンズオンを組み合わせることで、受講者のスキル習熟度を正確に把握し、スムーズな学習の流れに乗ってカリキュラムを進められるように設計しています。ゼロからエンジニアを育成するための重要な基盤です。

フェーズ②:実践的なアプリ開発を経験する

ある程度基礎技術が身に付いたら、実践的なアプリ開発を経験すると良いと思います。
例えば社内向けの業務改善ツールなどがいいかもしれません。
また社内で協力を仰いで、毎日プロダクトを使う人が必ずいる状態を作ればユーザーの反応も見ることができ、開発のモチベーションにも繋げることができます。(研修者が利用する日報ツールなどはよく案として採用されます。)

このように実践形式の開発を行う研修は技術的にもモチベーション的にもとても効果的です。しかし気をつけなければならないのは、基礎がない状態で実施してもほとんど効果がないことです。

過去に私も試してみたのですが、基礎がない状態の場合は行き当たりばったりで理解していないコードを書いて問題が多発するだけで、意識的に計画を立てて行動することができずに失敗に終わることが多いと感じます。

まずはこの2つのフェーズを軸にして、育成を設計するのが良いと思います。

フェーズの設計が完了すると次はフェーズをどのように運用するのかという話が必要です。
ここからは私が感じる育成のコツをご紹介します。

コツ①:チームでカリキュラムをすすめる

カリキュラムが整ったら、そのカリキュラムをチームで進めるようにするとさらに効果的です。アンケートにもありますが、効果的な学びの上位に「他社からのレビューを受ける」「他者に説明をする」が入っています。チームで同じカリキュラムを進め、必ずチーム内でレビューや教え合いが発生するようにすれば、学びの質は大きく向上します。

他にも週ごとに振り返りを行う、他のチームと話すタイミングを作る、などコミュニケーションを取ることを意識したイベントを行えば、モチベーションの維持にもなりますし、より良い方法を自分たちで見つけながら成長してくれます。

コツ②:ライバルを作る

適切な競争はモチベーションにつながります。
定期的にプログラミング実装競争やミニハッカソンなどを開催すれば、メンバーのやる気に火をつけることができるかもしれません。

また普段のカリキュラムの進捗報告などもやっておくと、チームや個人ごとに進捗を意識するようになるので、自然と軽い競争意識が芽生えます。こうなるとプライベートの時間でも学習を始めるようなメンバーも出てきて、研修に活気が生まれます。

注意しなければいけないのは過度な競争になることです。
進捗を意識しすぎるあまり、中身がない学び方をしてしまったり、周りに教える時間を取らなくなったりすることがあるので、あくまで適切な競争意識が大切になります。

過度になりすぎないように注意しながら、競争が起きる仕組みを取り入れると良いと思います。

コツ③:様々な方法でカリキュラムを準備する

学び方には個人差があり、万人に効果的な学習方法は存在しません。
例えば、書籍での学習が適している人もいれば、動画での学習が効果的な人もいます。
ワークショップ形式で学ぶことで理解が深まる人もいれば、テスト形式での学習によって知識が定着する人もいます。
学習効果を高めるためには、カリキュラムにおいて多様な学習方法を提供することが有効です。

弊社では、課題図書と併わせて関連動画のURLを提供し、理解度を確認するためのテストを実施するカリキュラムがあります。他にも開発手法に関するカリキュラムではワークショップの後にテストを行うことで、実践的な理解を促しています。

このように、多様な学習方法を提示することで、学習者は自分に最適な学習スタイルを選択し、より効果的に学習を進めることができます。

コツ④:新しい技術を採用する

エンジニアは技術に対してのモチベーションが高い人が多いです。よって新しい技術を積極的に採用することは育成のモチベーションをあげるためにとても重要です。
ソフトウェアエンジニアであればプログラミング言語や利用ツールはとても重要な要素だと言えます。

その意味で、育成担当には「新しい技術を覚えること」や「ツールの導入などの社内的な動きができる」ことが求められます。

知っていることを教えるのではなく、同じエンジニアとして一緒に学んでいく姿勢と適切なマネジメントスキルが育成担当には求められると思います。

また基礎がある程度できてきて、社内ツール開発など実践的な研修になってくると、様々なツールや技術を取り入れようとするメンバーが現れます。可能な限りYESと答えて好きなものを使える環境を整えてあげると、想像を超えるような学びをしてくれるかもしれません。

コツ⑤:明確で難しい目標

最後に最も大事な要素として、明確で難しい目標を立てることが必要です。
基礎に関しても、実践アプリ開発に関しても、「いつまでに」「何を」終わらせるのかを明確にする必要があります。

そうでないと、研修という環境もあり緊張感のないだらけた雰囲気になってしまう可能性があります。

またある程度難しさがないと、締め切りに対して余裕があるメンバーが集中力を欠いて他のことを始めてしまい、締め切りいっぱいまで時間を使ってしまうことになります。

ある程度難しくて達成感を味わえる難易度にすれば、どんどん次の課題を求めてカリキュラムの進捗がとても早くなる傾向があります。

これはマネジメントの基本ではありますが、育成でも非常に大事なポイントであり、育成を行うものとしての腕の見せどころだとも思います。

ここまでのフェーズとコツをまとめると以下の図のようになります。

エンジニア育成の2フェーズと5つの実践ポイント
エンジニア育成の2フェーズと5つの実践ポイント

エンジニアの育成担当になった人が知っておきたいこと

最後に、私なりに育成担当に求められる心構えについて紹介します。

① エンジニアリング以外で苦労することが多い

意外かもしれないのですが、まずはエンジニアリング以外で苦労することが多いということです。おそらく育成担当になる方の多くは、元エンジニアだと思うのですが、現場のエンジニアに求められるスキルと、エンジニア育成担当に求められるスキルは結構違います。

エンジニア育成では、当たり前ですがマネジメントスキルが求められます。相手に合わせて指導方法を変えたり、目標を提示しなければなりません。また上でも書いたように、ツールの導入なども行いますし、社内のイベントなどがあればその対応も行うことが増えると思います。育成対象者のプライベートな相談をされることもありますし、勤怠や体調などの課題を抱えたメンバーの指導をすることもあります。そういう意味では、労務ルールの把握も必要です。

育成対象者にとっては、育成担当は全てにおいてのお手本です。
言葉遣いや身だしなみ、チャットツールの使い方や会社のイベントや施策に対する取り組み具合などあらゆる面で育成担当の行動がお手本にされます。もちろんコードの書き方もです。自分自身が、会社に求められる理想的なエンジニアとして振舞えなくてはいけないため、現場とは求められるスキルが大きく変わると思います。

② エンジニア組織のことを知る

エンジニア育成は、複数のエンジニアをマネジメントするという意味ではエンジニアの組織運営を行う面もあります。全てをオリジナルで考えるのは負担が多いため、他社のテック企業の組織運営の話などを知っていると非常に有効な武器になります。

また私の経験としては、特に日本の企業の話をすると身近に感じる分、話を聞いてもらいやすいと感じます。日本には技術で世界をリードしてきた企業がたくさんあり、それらの企業の創業話などは、現代の若者にもすごく刺さると感じます。自身の勉強にもなりますし、人を惹きつけ、モチベートさせるネタにもなります。ぜひ組織の視点からもエンジニアリングを学んでみてください。

③ 自社のエンジニア組織の基盤を作る

エンジニア育成は、エンジニアを育てるだけではありません。
自社のエンジニア組織の基盤を作る仕事だともいえます。
例えば育成をすることで、社内にコードの書き方、レビューの観点などの共通認識が生まれます。これによりどのチームに参加しても対応できるエンジニアが生まれやすくなります。

逆にいえば明確なルールやポリシーがない育成をしてしまうと、社内で技術に関する共通認識を持つという大事なメリットを享受できなくなってしまいます。

自分なりに自社のエンジニア組織のポリシーを考え抜き、そのポリシーを実現するこだわりのある育成が必要になると思います。

まとめ

ここまでエンジニア育成の様々な話をしてきましたが、私自身まだまだトライ& エラーを繰り返している段階です。またあくまでメンバーズでの育成における成功例の紹介になります。おそらくそれぞれの企業ごとに適切な学び方があると思います。

ぜひこの記事も参考に、皆さんの自社に最適なエンジニア育成環境を見つけてください。

この記事が役に立ったと思ったら、
ぜひ「いいね」とシェアをお願いします!

リンクをコピーXでシェアするfacebookでシェアする

この記事を書いた人

秋野郁実
秋野郁実
2015年にメンバーズに新卒で入社。エンジニアとして複数のクライアントワークを行ったのち、メンバーズのエンジニアの育成担当へ。これまでに300人以上のエンジニアの育成にかかわり、現在はモバイルアプリの開発支援を行うCross Appllicationカンパニーのカンパニー社長も担当。
詳しく見る
ページトップへ戻る