Kaizen Platform で開発組織の部長をしているKawabeです。
今回は、エンジニアインターンの取り組みについてご紹介します。
インターンの取り組みの歴史
Kaizen では創業当初よりインターン生が活躍してきてくれているのですが、開発組織でエンジニアの1人目のインターン生がジョインしてくれたのは2019年でして、実は長い歴史がある訳ではありません。
2017年頃までの採用方針はどちらかというと即戦力重視の傾向があり、開発チームではインターン生の受け入れはしていませんでした。
その後、将来的な開発チームのスケールを見据えて採用方針やチームのあり方を見直し、オンボーディングプロセスの標準化や若手採用の推進、勉強会・読書会などのチーム力強化の取り組みをおこなってきました。
そして2019年にインターン生の受け入れ開始し、2021年現在では4名のインターン生が活躍してくれています。
インターンの働き方・指針
夏季・冬季休暇に短期集中型で参加してもらうようなものではなく、定常的に週に何日か稼働いただくスタイルをとっています。 もちろん時期によって忙しさは変わるので、「卒論・修論前はしばらく稼働を減らしたい」「夏季休暇はガッツリ働きたい」といった変動には柔軟に対応しています。
インターン生を受け入れるにあたっては、極力ほかのエンジニアと同じ環境で働いてもらいたいという指針をもっています。
- 情報の開示レベル、開発プロセスにおいて他従業員と同等にする
- リモートワーク可能(※1)
- リモートワークについては こちら をご覧ください
- 開発ロングミーティング、Kaizen Week (※2)などのイベント参加
- Kaizen Week については 「not 緊急 but 重要」に取り組む1週間 / Kaizen Week #7を開催しました をご覧ください
また「エンジニアも一人のビジネスマンである」という考え方もあり、インターン生は他エンジニアのアシスタント的なものではなく、役割としては他と一緒であり仕事の難易度によってレベルコンディションを調整するようになるべくしています。
※1: 現在はコロナ禍のため当然なのですが、コロナ前もリモートワークをしてもらっていました
※2: Kaizen Week は契約形態に限らず基本は週3回以上稼働している方の参加を推奨しています
使用技術
前提として、 Kaizen におけるプロダクト開発では主に以下の技術を使用しています。
- サーバーサイド: Ruby on Rails
- フロントエンド: TypeScript, React
- 詳しくは React + GraphQL から成る Kaizen Ad のフロントエンド をご覧ください
ジョイン時点の技術力としては、およそ以下の水準で受け入れをしています。
- 情報系科目や個人勉強で、プログラミングの経験はある
- Rails はチュートリアルをやった程度
- プロダクト開発の経験は無し
結果的にではありますが、現在活躍中の4名全員がサーバサイド/フロントエンドの両方とも開発してくれています。 最初はサーバーサイドで小さな改修から始めてもらい、じきにフロントにも手をのばす、というケースが多いです。
これまでインターン生の皆さんにきいた限りでは、どちらかというとフロントの方がより学びたいという意向が多く「画面に直接反映されるのでわかりやすい」「React のエコシステムとその進化が面白い」といった感想でした。
余談ですが、 Rails と React の両方をやらなければいけない、という制約はありません。 他従業員(正社員含む)にも言えることですが、学びたい技術は原則として本人の意向を尊重しています。
- これまで Rails をメインにやってきたけど、 React が思いのほか面白かったのでフロント開発の量を増やしたい
- React はやってみたけど自分には合わないと感じたので、今後はできればサーバーサイドに集中したい
これは、過去に実際にあった一例です。
オンボーディング
最初は一定の学習・キャッチアップ期間は設けますが、小さな改修タスクを実際にもってもらい、メンターとのコミュニケーションを通して改修を進めるOJT形式でおこなっています。インターンチームの体制が整ってきたこともあり、最近ではメインのメンターは先輩インターン生が努めてくれています。
僕自身は「1ヶ月くらいは座学メインでも構わないですよ」と話していますが、小さくても実案件のタスクを解決することを調べる方がドメイン知識のキャッチアップも早くなるということで、OJTメインで始める事が多いです。このあたりのさじ加減はジョイン時点のスキルにも依るでしょうが、基本はメンター / メンティーにお任せしています。
これまでに経験・知識を積んできたインターン生が新しい人に教え、メンターとしても成長する。さらに、これまでメンティーだった人が次は教える立場になる、、そういった流れが出来つつあり、とても嬉しく思っています。
開発の流れ
ざっくり書くと、以下のような流れになります。★がついているのがエンジニアタスクです。 上述したように、他従業員と同様インターン生も一連の開発プロセスを経験してもらっています。
- プロダクトマネージャーが要件定義書を書く
- ★設計仕様書を書く
- ★実装
- ★QA観点の仕様説明書を書く
- QAエンジニアが検証環境で動作確認
- リリース
こういったドキュメントも、メンターや他エンジニアのサポートを得ながら開発する自身に書いてもらっています。 個人開発でコードを書いているだけでは身に付けられない、開発の周辺タスクも経験できることは、これから職業エンジニアになろうとしているインターン生の皆さんにはメリットに感じてもらえているようです。
具体的にどんなものを開発してきたのかや、どんなスキルが身についたのか?といった事を紹介したいのは山々ですが、今後インターン生の皆さんにブログに書いてもらいたいと思っていますので、後続の記事にゆずることにします。
おわりに
インターンチームは今後も仲間を増やしていきたいと思っており、絶賛募集中です。ご興味がある方は、ぜひこちらをご覧ください。
とりあえず話だけきいてみたい、というのも歓迎です!