Developers Summit 2014 で新卒エンジニア研修についてお話してきました #devsumi

2014/02/13 (木) に開催された Developers Summit (通称デブサミ) 2014 1日目で「新卒エンジニア研修でできることすべきこと」と題してお話してきました。

これはその記録です。

f:id:ryopeko:20140213223854j:plain

(わいふが名札書いてくれました)

はじめに

今回わざわざお時間を割いてお話を聞きにきてくださった方々、デブサミスタッフのみなさま、本当にありがとうございました。

今回のセッションは以下のような内容で話してきました。

一口に新卒エンジニア研修と言っても単に詰め込んで終わり、というのではあまりに勿体無いということを実際のDeNAでの新卒エンジニア研修の事例を紹介しつつお話します。エンジニアに継続的な成長を促すことや自立性を持たせることはとても大変なことです。しかし新卒エンジニア研修ではこの様なエンジニアの素地とも言える部分を育むにはうってつけの場です。
本講演ではDeNAが試行錯誤を繰り返し発展してきた大人数に対する新卒エンジニア研修をご紹介しますが、DeNAの研修は人数によらない研修内容となっているため、来年度の研修からすぐにでも使える内容となるはずです。

とても嬉しいことに私のセッションは満席というだけでなく、当日は立ち見の方もいらしていたという状態でした(感謝)。

このエントリーの最後にスライドを載せておきますのでおおまかな内容はそちらでもご覧いただけます。

このエントリーでは主にセッション後、色んな方から質問を受けたことの一部でセッション内でお伝えできなかったことを、多少補足する形で進めていきます。

質問と伝え忘れたこと

人に物事を教える時に教える側が優れたエンジニアでない場合はどうするべきですか?

これ実はものすごく重要なことです。そのくせ伝え忘れました、すいません。

これは教えられる側からすれば実はすごく瑣末な問題だと思っていて、なぜなら教えられる側は適切な答えやインプットを貰えれば良くて、それを得られる相手であれば誰でもいい訳です。この理屈は裏表が逆で正しく言い換えると、表立ってはスーパーなエンジニアに教えてもらいたいと言いつつも、それは適切な答えを得られるという裏付けがスーパーなエンジニアにはあるということだけだと思います。誰か、もしくは自分がスーパーだと思うラベルがついている人から教わればハズレな答えを掴ませられる確率が低いというものです。

であれば適切な答えを与えてあげればよくて、仮に現在自分で答えを持っていなかったとしても、「君のその考えはとても重要で是非とるべきアプローチなんだけど、今自分は適切な答えを持っていないんだ」と正直に伝えた上で、「ちょっと調べて答えを用意するから君も君なりに答えを導き出してみて」と言って自分は後ほどきちんと調べればいいだけです。そうして後日答え合わせをすると。

なんか一見頼りないことに思えますが、セッション中でもお話したとおり我々の知識技術領域は無限の幅と深さを持っているので、この様なシチュエーションは日々の業務では日常茶飯事だとも言えます。つまり日頃仕事をする上で大事なことを2人でロールプレイするという絶好のシチュエーションです。ここで下手に取り繕うと速攻で新卒氏にバレます。取り繕うというのにもそれなりの知識や経験が必要なんです。正直になるということが信頼関係の構築にも繋がります(でもちゃんと行動しないとダメですよ、行動しないでこういうことばかり言う人はただの無能です)。

また、自分がスーパーじゃないという実感があったとしても自分ネックで新卒氏彼らの天井を自分に合わせる必要はなく、時には自分自身が理想とするエンジニアを演じ、伝えるべきことを伝えるというがとても重要だと思います(acts as 自分がすごいと思っているエンジニア業)。

教える側が理想とするエンジニア像に達していないのであれば、その理想を新卒氏と一緒に指を指して目指せばいいのです。

どうやってレビューでの言動からやばそうなことを察知するのか

これも明示できていませんでした。

この質問は ask the speaker コーナーが終わった後に休憩室をふらふらしていて @igaiga555 さんと まつもとさん、ささださん とお話していたときに出た質問です。

これは色んなパターンがあるのですが、一つ言葉にしやすいものとしては「問題に対する解決案への論理がショートカットされているパターン」です。

例えば問題から結論には5ステップぐらいの論理展開が必要な問題があったとして、その説明が 1 → 2 → 5 と途中が飛んでいる場合です。

この原因もいくつかあって

  • そもそも理解していなくてなんとなく正しい結論にたどり着いている
  • 答えだけを周囲(同期や google 先生など)から得ている

どっちも良くないわけですが、この状態にあるかどうかを見極めるには飛んでいる中間を2分探索して質問を投げていくのが良いです。

そうすれば適切な理解の上結論に至っているかどうかがかなりの精度、かつ省エネで判定できます。

 

これらの質問はごく一部ですが、特に伝えておきたかったものとして補足させていただきました。

最後に

実はこれから書くことはデブサミのオーガナイザーである岩切さんにはお伝えしたのですが、ものすごく縁というものを感じたので感謝の意味も込めて書き留めておきます。

 

自分にとってデブサミは数年前に初参加したときに今までの自分の世界をひっくり返し、学ぶことの重要性と楽しさを教えてくれた、いわば今の自分の基礎を成すものです。

そんなデブサミでいつかセッションを持って、デブサミの窓を通して誰かにとって新しい価値を伝えることでデブサミに恩返しをしたいというのは大きな目標のひとつでした。

それが今回、岩切さんがオーガナイザーとしての最後のデブサミで、しかも自分が新卒にものを教え伝え、学ぶことという内容のセッションを持って目標を達したこと。

これものすごく出来過ぎて帰りの電車の中で気がついた時に思わず吹き出してしまいました。

なのでこの気持ちはしっかり書き留めておこうと思った次第です。

 

おまけ

今日のセッションで使ったスライドと、普段スライドを作る前に作成するアウトラインを残しておきます。

どなたかの参考になれば幸いです。

アウトライン

実際のスライドと内容とは多少ズレていますが伝えたいことはほぼ満たしています。

(いつもこの状態を作ってからスライドを書き起こしています)

  • タイトル
  • 自己紹介
  • 新卒研修って何でしたっけ?
  • 世にある新卒研修のイメージ
    • 必要なことはこれとあれとそれとこれと…
      • はわわ
    • よし、終わり!突撃ー
      • 各所「むりむりむりmばたり」
      • メンターの力量に依存してぎりぎりなんとかもしれないがジリ貧
  • 弊社の場合もこれと似たようなことが起きたり起きる要素が揃ってる
    • 今年度の新卒の特徴
      • 未経験者 >>> 経験者
      • 大人数 (今年度70名弱)
    • 教えることたくさん
      • もうほんと無限にある
      • だけど教えるのムズすぎ時間無さすぎ人いない
      • 無理
    • やれる範囲でやりましょう
      • 全然やれていない
      • やる前から投げてる
    • 現場のニーズの変化
      • サーバーサイドだけやってればいいとかいう時代じゃない
      • あれもこれもそれも
      • 成長してくれない!
  • まずは新卒にまつわる問題点を整理、解決策を考えてみた
    • 技術レベルが求める水準に達していない
      • いいから引き上げる
      • 今まで棚上げしていたことをちゃんと教える
      • ここでちゃんと教えないと新卒が現場出て死ぬ
        • むしろこの辺身につけていないで現場に来られるとおれが死ぬ
        • 教え方工夫して理解できるようになるまで諦めないで教える
        • その結果自分が死ぬとしても教えなかったら結局死ぬんだからいいから教える
        • 教えきれなかったとしてもその失敗は来年に生きるはず
    • 研修でやってきた知識が現場で生きない
      • 局所的な知識や技術じゃなくて汎用的なものをちゃんと教えましょう
        • 技術や知識や問題領域は幅広な上に深くて流動的、しかもロールがある
        • なのに局所的なことを教えるのは研修じゃない、研修担当のギャンブルだ
      • 基本の基をしっかり
      • 現場固有の事象を取り扱わない
        • 現場ではやむを得ずこうなってますとかBKは絶対ダメ
        • むしろ理想を刷り込む
          • レガシーに浸る前に理想を刷り込む
    • 現場で教える時間も暇もない
      • 教えなくても勝手に学んでいけるような人材を育てましょう
      • 問題を正しく捉え、立ち向かえる力を養う
      • 目先の技術力より観察眼、応用力を養う
    • 知識や技術は水準、汎用性、応用力で評価される
  • 問題点と解決策を考えたらこれって新卒だけじゃなくて会社全体の課題なんですね、ということに気がついた
    • 誰のための研修なんですか?
      • ✕新卒のため
      • ◯みんなのため
    • 個別の事情に対応すればいい?
      • 無理、変化しまくりだから
      • 既存社員も停滞されてると困る
  • 以上を踏まえて弊社での研修の流れ
    • フェーズは4段階
      • 簡単な座学
      • サービス企画
      • 設計(画面とかDBのおおまかなもの
      • 実装
    • 各フェーズではレビューがある
      • レビューは1時間
      • 各フェーズ大体 5〜7回ぐらい
      • 各フェーズでstep1, step2と分かれている
        • step2ほど詳細に踏み込んだレビューになる
      • 新卒と研修講師の1対1
        • 70名超の個別指導 (小学校1学年の3クラス分!!!)
    • 講師陣
      • 現場のエンジニア3名
        • 今回の研修のために一時的に現場を離れて100%コミット
      • 外部研修講師数名
    • 卒業時期
      • 早抜け方式
        • 早い人は2ヶ月ぐらい
        • 遅い人だと半年 (9月末で全員卒業
    • 研修のゴール
      • 正しく問題へ立ち向かえる
      • 継続的に主体性を持って成長できる
      • 変化に強い人材
  • 研修の進捗と成長度合い
    • 研修が進んでいくと個人の差が徐々に出てくる
      • 経験者未経験者問わず
      • 経験者であろうとも伸び率や未知の領域との向き合い方など
    • 早めに気がつく
      • 成長を促すために打てる手はなんでも打つべき
      • 教え方を工夫しないといけないなら教え方を返る
      • 強みを更に伸ばして弱点を克服させてあげるスタイル
    • どうやって気がつくの?
      • 計測計測ー
      • 想像するよりまずは計測
        • ウェッブサービスと同じやー
      • 各フェーズ各stepにかかっている日数を記録
        • 大体パターンが出てくる
        • 進捗する人が増えてくると精度が高まる
        • 高まるころにはもう手遅れ
      • そこで技術テストをやってみた
        • Perlの筆記テスト
          • PC無し、本無し
          • 簡単なループからオブジェクト指向をしっかり使ったコードの読み取り
          • 脳内コンパイル
            • あー障害対応のときに必要になるやつだ
          • 基本的な知識がちゃんと身についてるか
          • アーカイブに素早く辿り着くためのスキルも必要なんだけどここでは置き
      • 新卒との会話
        • フラッと研修部屋に遊びにいってどうでもいい話をする
        • レビュー時のふとした発言を記録
          • これ結構ばかにならなくて普段どういう考えをしているかが読み取れる
            • こういう発言しちゃうようなのってもしかして着実性無いのでは?とか
          • この前こういう短絡的な発言してきたけど今回はすごい論理的に組み立ててきたり説明するためのツールも工夫してきた
            • すげえめっちょ成長しとるテンションあがる
    • 気がついたらどうするの?
      • 褒められるところはたくさん褒めてあげる
      • 良くないところは改善を促す
        • 促すことにより成長や進捗を加速させる
      • 改善は最初は自力で
      • 改善してこないようなら手助けしてあげる => フォローアップ
  • フォローアップ
    • 今年度最大の発明
    • フォローアップとは
      • 毎日 or 隔日で講師との 30 分間の 1 on 1
      • プログラミングのハマりどころ解決
      • 問題解決手法のトレーニング
      • 議論のトレーニング
      • 成長促進のための徹底した振り返り
      • etc…
    • 大事なこと
      • 良い所を伸ばして良くないところを改善する
      • ひとりひとり丁寧に
      • 一筋縄ではいかないのでひたすら工夫
      • 改善したらフォローアップは卒業
      • 最終的に自信をつけさせる
    • フォローアップビフォアアフター
      • ビフォアー
        • 暗闇の中ゴールの場所もわからないのに目隠し耳栓している状態
          • 何がわからないかがわからない
          • 何がわかったかわからない
          • 何のために自分が今やっていることをやっているのかがわからない
        • 敵の強さがわかんない
          • Lvわからないのにバラモスと戦っている
          • 倒せるかどうかもわからない
            • 死んで気がつく
      • アフター
        • 本質を見抜く力
        • 自分のたどってきた道のりを正しく把握している
        • 間違った道に入ったことを検知できる
        • ゴールまでの距離
        • 敵の強さがわかる
        • 敵を分断して戦える規模にしてから戦える
    • 効果
      • フォローアップを受けた人のほとんどが急激に成長
      • 時間と人員が許すなら全員にやっても良かった
      • ただ自分の弱い面と向き合い続けるってすごくしんどい
        • 結局は本人の意志に頼るところ
        • 無理強い良くない
  • 今年度研修の総括
    • 現場アンケートより
      • 主体性向上
      • 基礎的な技術力向上
      • git, github ネイティブ
        • 去年すごく苦労した
      • 切り込み力
        • 問題へ立ち向かい切り開いていくエピソード多数
    • 所感
      • アンケート通り
      • サービスを作る楽しさをもっと教えたかった
        • もっと自分で考えに考え抜いたものを形にすることもやってもよかった
        • レビューコストが爆発するという問題点がある
        • 研修とは別のアプローチが必要か
      • 自身の力を伸ばすことを優先して新卒同士で相談、協力させることができなかった
        • 実は何もできるようになりませんでした、というのを避けたかった
  • まとめ
    • 組織のニーズも大事だが、変化の激しい組織のニーズに応えるのは大変
      • 応えると2年後には陳腐化してる恐れがある
    • 基本的な技術力向上はとても役に立っている
    • 新しい技術も本質的な知識が備わっているので吸収が早い
    • 人にフォーカスすることにより人材の柔軟性を高めたら組織にフィットしやすくなった
    • 組織の型にはめて人材を育成するより変化に強い
    • 特に弊社のような事業領域が広く変化が激しいところには有効
スライド