Masteries

技術的なことや仕事に関することを書いていきます.

新人研修に正解などない, あるのは真っ直ぐに走り続ける新人達だけだ

皆様こんにちは. 最近「きんいろモザイク」という合法麻薬にずっぽりハマっている@__papix__です.

さて, ご存知の方も多いとは思うのですが, 3月頃からGaiaXの2015年度の新人エンジニア研修のカリキュラム作成とかに従事しておりました. エンジニア研修の様子については, 会社のエンジニアブログでも何度か紹介しているので, ご覧になって頂いた方も多いのではないでしょうか.

gaiax.hatenablog.com

gaiax.hatenablog.com

GaiaXの新人エンジニア研修は, この規模(エンジニアの採用が毎年3〜6人程度)の採用の割には, かなり力が入っているなあと(個人的に)思っています. かく言う私も昨年, 当時GaiaXにいた@yuukigoodmanさんの指導下で5月〜6月の2ヶ月間にわたる新人エンジニア研修に挑戦していた訳ですが, エンジニアとしての基礎力の強化はもちろんのこと, まだ会社で導入され始めたばかりの技術に挑戦したりしつつ, メンターレビューを通してエンジニアとしての強みや弱点と向き合う事も出来ましたし, やはりあの2ヶ月の経験は1年経った今でも生きているなあ... としみじみ思います.

特にGaiaXのような, 新人エンジニアを技術力ではなく総合的なポテンシャルで採用する企業の場合, 入社時の技術力には大きな差や, 偏りがある場合が多いです. そのような会社では, 配属後に良いスタートダッシュが出来るよう, 新人エンジニアの基礎力を底上げする新人エンジニア研修は, かなり重要度が高いように思います.

新人エンジニア研修の難しさ

実際に, 何かしらの新人研修に携わった事のある方ならわかると思うのですが, 新人研修の実施は非常に難しい所があります. 特に新人エンジニア研修の場合, 研修実施時の技術の流行(傾向)や, 1年間の会社の技術力の進化, そして入社したエンジニアの現時点のスキル, 配属先の都合など, 多くの要素を織り交ぜてカリキュラムを構築しなければならないので, その難しさは段違いだと思います.

タイトルにも書きましたが, まさに「新人研修に正解などない」訳です. 例えば, 去年成功した研修カリキュラムを翌年そのまま実施したところで, 同じような成功を成し遂げることが出来るか, というと難しいと思います. 前述の通り, 1年間で技術の流行や傾向は大きく変わっているでしょうし, 同様に会社も変わっているはずですし, そもそも入社するエンジニアメンバーのスキル構成も違うからです. なので, 一部の研修カリキュラム(例えば, エンジニアとしての基礎力を強化する部分)については年が変わっても流用出来ると思いますが, 研修カリキュラムの大半は, 毎年毎年調整していく必要があると思います.

目的から落としこむ

新人エンジニア研修を実施するにあたって, 毎年「調整していく」部分を考えるにあたっては, しっかりと研修の目的を定めておくのが大事だと思います. 実際に, 今年の研修も, 「研修が終わった時に, このようなエンジニアになっていて欲しい!」というゴールを最初に定め, その目的に必要な(役立つ)カリキュラムを作っていく, という方針にしました.

こうして出来上がったゴールが, 「自走し次世代を担うエンジニア」でした.

"自走し次世代を担うエンジニア"

GaiaXという会社は, かなりボトムアップで仕事を進めていく会社だと思います. そのため, エンジニアにも指示待ちではなく, 常に自ら事業やチームの問題点を見つけて, 提案し, 解決していく姿勢が求められています.

与えられたカリキュラムをこなすだけでは, この姿勢は定着することはないと思います. そこで今回のエンジニア新人研修では, 現状(自分自身が今持っているスキルや, GaiaXの一員として今後求められる技術要素など)から課題を見つけ, 目標を設定し, 自分が中心となって取り組んでいくようなカリキュラムを設定することにしました.

また, 「自走」という言葉の中には, 「自発的かつ継続的な成長」という意味合いも含めています. 事業を作り, 運営していく為に必要な技術要素の選択肢が増え続けている今だからこそ, 「事業に必要な技術だからやる」のではなく, 興味を持った技術があればまずは挑戦してみて, 自らの糧にしていくという動きが大切だと思います.

更に, その得た知識を自分だけの範囲に留めるのではなく, 事業に活かせるものがあれば活かし, 得た知見については社内に共有して, 全社的な成長につなげていく, という動きを作っていかなければ, と思っています. それは, 今後社内の各事業が更に成長していく為には, それを支えるエンジニアチームも同様に成長していかなければならないと感じているからです.

2年目の自分達もそうですが, 若いエンジニアには積極的に最新技術を吸収し, 事業に反映しながら, 先輩後輩問わずチームのエンジニアを「成長させられる」ようになって行きたいと思っています. 「次世代を担う」という言葉は, このような意味合いを含んでいる訳です.

「自走」する為のカリキュラムと資料作り

...というわけで, このように定めたゴールを踏まえつつ, 必要なカリキュラムと資料を構築していく事になりました. 大まかにフェイズを分けると, 「序盤」, 「中盤」, そして「終盤」の3つに分けられる構成になりました.

序盤

新人エンジニア研修の序盤は, 「エンジニアとしての基礎固め」として, Perlを軸にしつつ, Webアプリケーション開発に必要な要素に取り組むようなカリキュラムを準備しました. 冒頭で紹介した, Mobile Factoryさんとの合同技術研修もその一環です.

この領域については, 今年はなるべく座学形式を取らず, それぞれのペースで進めていく方針を採用しました. 座学形式にしてしまうと, 講師をアサインしなければなりませんし(Perl入学式で講師業は慣れてはいますが, 大変なので, なるべくやりたくないというのが正直な気持ちでした!!!), 何より入社時点で持っているスキルや得意分野が異なる新人エンジニア達の学習速度を同じスピードに抑圧してしまうのではないか, と考えたからです. また, 提供した各カリキュラムについて, それぞれの新人エンジニアが「ここは得意なので, 少し軽めに...」とか, 「苦手な分野だから, しっかり読んでおこう!」とか, 自発的に考えて取り組んでくれたら... という意図もありました.

...但し, 講師が直接指導しない分, 新人エンジニアが資料単体でもしっかり学べるよう, 懇切丁寧に作らなければなりません. 座学形式では口頭で補足出来る部分を, 全て資料に落とし込もうと考えた結果, 資料の分量がとてつもない事になってしまいました...

$ wc -m *.md */*.md
     788 README.md
   11501 bitbucket.md
   12615 ci.md
   12592 exception.md
   20400 git.md
    9350 homebrew.md
   18379 oop.md
   18543 orm.md
    1865 perl.md
    1846 tdd.md
   16599 test.md
   17874 validation.md
   10105 webapp-test.md
   15449 amon2/1.md
   20717 amon2/2.md
   17357 infrastructure-as-code/ansible.md
   15067 infrastructure-as-code/serverspec.md
   22849 infrastructure-as-code/vagrant.md
  243896 total

...何と言いますか, 結果として, 「座学形式の方が楽だったのでは?」という気もします.

ですが, 後方互換性の強いPerlという言語を軸にした資料を構築している為, あと数年は最新の知見にあわせた加筆修正だけで, 概ね使いまわせるのではないかと考えています(この辺りは, Perl入学式の知見が強く活きています. Perl入学式も, 基本的には1年目に使った資料をベースに加筆修正だけで開催し続けていけているので...).

ちなみにこの資料は, YAPC::Asiaのタイミングに合わせて公開したいと思っております! お楽しみに(?).

中盤

序盤で得た知識を中心に, 更に発展的, 応用的な内容に取り組んでいきます.

フロントエンドのUI/UXについての考え方や, 品質保証(QA)についての講義を開催したり, ここまで学んできた技術要素を組み合わせて, 実際に1人でWebアプリケーションを開発してみたりといったカリキュラムを用意しました. また, 「自ら課題とゴールを定めて, 技術的な挑戦を行う」カリキュラムも, この時期に開催しています.

終盤

新人研修の集大成です. ここまで学んできた知識を元に, チームで1つのプロダクトを開発する研修を行います(現在進行形).

ここまでの研修は基本的にはそれぞれのペースで(1人で)進めているので, この研修ではチームメンバー(同期)とのコミュニケーションが大切になってきます. 会社に入社する, ということはチームの一員として働くということなので, スクラムマスターである先輩社員からアドバイスを受けつつ, それぞれの強みを持ち寄っていかにして良いプロダクトを作っていくか, という所に取り組んでもらっています.

まとめ

...という話をベースにした, GaiaXにおける新人研修の取り組みや, そこから気付かされた「知の高速道路」の重要性とか, そういうのに関するアレコレな話をYAPC::Asiaでしたいと思っておりますので, 興味のある方ははてブ等宜しくお願い致します.

yapcasia.org

この記事では, 「こういうカリキュラムを実施した」という概要だけにとどめていて, 詳細であったり, 「実際にどうだったか?」という反省や, 「来年に向けた課題は?」というところについては, トークが採択されていればトーク本編で, 採択されていなければ... どこかの機会で発表しようと思っています.

余談

...でまあ, 「ぶっちゃけた話, どうなん?」という話はあると思います. ここで話したのは, 「こうなったら完璧だな...!」という, 新人エンジニア研修の理想像であって, 実際の新人エンジニア研修の全てが上手く行っている訳ではありません(だいたい自分のせい).

ですが, タイトルにも書いた通り, どうしようもない先輩に指導されているにも関わらず, 何だかんだで新人達は新人エンジニア研修という課題に対して, 「真っ直ぐに走り続けて」くれています. そのお陰でこの数ヶ月, 当初自分が想定していたよりも, エンジニアとして強く大きく成長しているなあ, というのはとても強く感じています.

本当に, 素晴らしい後輩達だなあ... と思いつつ, 「俺も負けてられんな!」と気合いを入れたり, 焦ったりしている, 今日このごろなpapixなのでした.