未経験エンジニア育成のためのチーム運営
はじめに
株式会社div(以下div)で Engineering Manager をしている @mato_kata です。この記事は Engineering Manager Advent Calendar 2019 の15日目の記事です。
今回は、初めてエンジニアになった人「未経験エンジニア」をエンジニアとして育成するのためのチーム運営について紹介したいと思います。
前提知識
divの未経験エンジニアの受入状況
未経験エンジニアとしては現在は主に以下のような人を受けれています。受入体制がある時に受け入れており、いずれも若干名になります。
メンターや弊社スクールではRuby on RailsとJavascript(主にJQuery)を学んでおり、これらの基礎は身についていることを前提にしています。
なお、メンターからエンジニアに異動できるとは限りません。本人の希望に加え、周りの人からトップレベルのメンターであると認められている場合やメンター業務が落ち着いている時に限り、異動できる場合があります。
育成の目標
2〜3ヶ月で工数1週間程度の開発(フロントもサーバサイドも両方)で「楽しく開発できていること」を目指します。
まだまだエンジニアの人数が少ないので1人でヒアリング・設計〜開発〜運用できる必要があるし、何より全体のうちの一部をやるより仕事が楽しい。そのためにサーバサイドとフロントエンドの両方を行っています。
そしてエンジニアとして働き始めて早い段階で成功体験を早く積むことを重視しています。それは成功体験を早く積むとその後は成長しやすくなるからです。
育成のための仕組み
チーム運営
チーム運営として、2人チームの中に新人を1人入れるという小さなチームを理想に運営できるようにしています。つまり2人で1人を育成する仕組みです。またこれによって、コミュニケーションコストが最小となるため、毎朝のデイリースクラムや各種調整が短時間でできるようになります。
またこうした小さいチームのメリットがもう一つあって、それは動かざるを得ない環境になっていることです。
自分自身の経験やエンジニアとしてすごい人を見て気づいた知見ですが、スキルを身につけて成長する目的にしているエンジニアはあまり見たことがなく、単に今いる環境で生き残るために必要だったからスキルを覚えた、ということが多いことです。
これをチームを小さくすることによって実現を目指しています。チームが小さいと初心者だからといって甘えているとチームのパフォーマンスが落ちるため、甘えが許される状態ではないからです。
こうした環境にすることで気づいたら成長していたという状態を目指しています。
ペアプロ
後述するように本などを利用したものも育成の中で行いますが、divではペアプロを重視してます。主に同じチームのメンター役と未経験エンジニア
それはコーディング方法や考え方のレクチャーにより急成長するだけでなく、メンターとして教える側にも知識の定着ができるためです。
またコミュニケーションの促進により、初心者でも中途でも関係なく入社後に一番避けるべき放置を避けることができます。
実際に行っていること
こうした仕組みをベースにして、実際に行っている研修を紹介します。
なおこの研修プログラムはメンター役の人が、未経験エンジニアの方が持つスキルに応じて調整していきます。理由は、画一的な研修によって押し付ける形になるのを防ぐのと、研修を考えることは教えるメンター自身の成長につながるためです。
第1段階
第1段階として以下のようなことをやっています。弊社ではRuby on Railsを使っているため、まずはRubyに対する知識を深めるためにチェリー本による学習やテストコードの学習、ES6の学習をします。
特にテストコートの作成は個人開発やスクールでは徹底的にやることは少ないですが、実は開発現場に入ってから一番書くものはテストコードなことが多いかと思います。
そのため、最初の段階でテストコード(弊社ではRuby on Railsを使っているRSpecとなります)の学習をして、開発で使えるテストコードが作成できるための基礎知識を身に着けます。
なおスクールで学ぶ場合、テストコードの作成を徹底的にやればよいのでは?という意見もあると思います。しかしスクールというのは限られた期間で学ぶものなので、テストコードの作成を徹底的に行うのは難しいだろうと思います。その前に、もっと重要なことを学ぶ必要があるためです。
第2段階
第1段階の学習が終わったら、画面の簡単な改修を行っていきます。ここからペアプロを本格的に行われていきます。
画面改修の開発は成果がわかりやすいので、成功体験を感じやすいものとなります。
第3段階
ここまでで開発に少し慣れてきますので、ここからは差し込み系業務を行って数をこなしてスキルをつけていきます。一度やったことがある人がやっても新しい知見にはなりませんが、未経験エンジニアが行うと知見になるためです。
差し込み業務といっても工数が多いものはなかなか難しいですが、幸い弊社の場合は差し込み業務の多くは簡単なものが多いけど依頼数は多いので、実施可能なものになります。
また工数が多い開発をしている中で差し込み業務が来るのはストレスが高いですが、そうしたものを抱えていない未経験エンジニアは差し込み業務に大して動きやすいという利点もあります。
成果
2018年からだいたいこのスタイルでやってきましたが、これまで全員が成果を出せるエンジニアになっています。さらに、人によっては半年〜1年でリーダーができる人も出ています。
ただ、2〜3ヶ月経過した後がその次の段階にいく育成プログラムが未整備のため、人によって差があるという課題があります。
そのために技術に対する評価制度とそれに向けた学習方法をいま以上に整えるなどして、そうした課題を解決しようとしています。
まとめ
divにおける未経験エンジニアの育成に関する仕組みや具体的な方法について紹介させていただきました。
divでは成果が出ていますが、これは業種や会社の違いによってどうしても状況が違うため、今回書いたやり方でうまくいくものではありません。それでも読者にとって何かの参考になれば幸いです。
未経験エンジニアをエンジニアに育成することは、決して楽ではありません。営利企業である以上、こうした育成を喜んで行う会社というのは、ほぼ存在しないのではないか?とも思います。
しかし現在はビジネス推進のためにエンジニアの力が必要不可欠になったことでエンジニアの必要人数が増加して、エンジニアの採用が難しくなりました。
しかもリーマンショックの頃と違って景気が悪くなっても、人口減に伴う人手不足で採用の難しさは大して変わらないと考えています。
このような状況では経験者エンジニアの採用にこだわるより、育成した方が時間的に早いのではないでしょうか。
エンジニア募集中!
divは業務急拡大中のため、エンジニアを急募しています。
Webエンジニアの募集となりますが、Webエンジニア以外にもデータ分析基盤の管理も兼任でやりたいとか、教育系システムのR&Dをやりたい方も募集しております。
そこで求人への応募だけでなく、まずはカジュアルにお話を聞きたい方も大歓迎ですのでご連絡をお待ちしています。(申込の際にカジュアル面談希望の旨を記載ください)