見出し画像

万葉の新入社員教育用カリキュラム

こんにちは、nay3です。前回の「本当はわかっていなかったリモートワークのこと」から少し話題を変えて、今回は、万葉のエンジニア新人研修で活用している教育カリキュラムについてご紹介したいと思います。

教育カリキュラムとは

この記事を読まれている方の中には、万葉が2017年から公開している、Ruby on Railsや周辺技術を習得するための 新入社員教育用カリキュラム をご存知だったり、ご利用いただいている方もいるかもしれません。

この教育カリキュラムは、RubyWorld Conference 2017にあわせて公開したものです。当時の発表資料はこちらです。

教育カリキュラムを作るに至った経緯については、この発表資料にも載せています。簡単に言えば、次のような課題を解決して、教育効率を改善するためでした。

  • 新人教育をOJTに頼っていると、新人ごとに経験する内容がバラバラになってしまい、統一的・網羅的な教育ができない

  • バラバラな課題を使って教育していると、教える方も毎回大変

どう活用しているか

万葉では、エンジニアが入社すると、経験者かどうかによらず研修期間を設け、研修を進めてもらいます。研修ではいくつかのメニューをこなしますが、その中で主要な位置を占めているのがこの教育カリキュラムです。

新人には、「サポーター」と呼ばれるお世話役が1〜2人ついて、研修だけでなく、会社のさまざまな決まりごとを伝えたり、ツールの使い方を教えるなど、様々な面でサポートをします。

研修の運営・管理は、「教育ロール」と呼ばれる社員たちが管轄しています。教育カリキュラムのメンテナンスも、この「教育ロール」のミッションの一つです。

「教育ロール」と「サポーター」が定期的に連絡をとりあって、個別の研修の進行状態の把握、課題の発見、仕組みの改善などを自律的に回しています。

教育カリキュラムの効果

教育カリキュラムを作ってからは、非常に安定して新人教育ができるようになりました。教育効率が良くなったことに加えて、次のような効果も生まれました。

  • レビューを通じて、先輩社員と新人社員が交流できる

  • Ruby、Rails、自動テストといった技術はもちろんのこと、エンジニア同士のコミュニケーションや仕事の進め方について、万葉らしいやり方を伝えられる

  • 自分が教わった経験を活かして、比較的社歴の浅い先輩社員も教える側に回ることができ、教えることでスキルを伸ばしたり、教育負荷の分散に貢献してもらえる

レビューの重要性

教育カリキュラムの実施において、もっとも重要な要素はレビューだと思います。

一人でカリキュラムを進めていくことが基本的な練習になるのはもちろんですが、万葉で進めている研修の様子を見ていると、流れるレビューコメントの量と質に驚かされることがしばしばあります。

興味深かったので、レビューのコメントを分類して、どんなレビューがされているのかを分析してみたことがあります。分析結果は、Rails Developers MeetUp 2019 で発表しました。発表資料はこちらです。

詳細については、ぜひ資料をお読みいただければと思います。この分析を通じて把握できたのは、次のような点でした。

  • コーディングスタイルについてのレビューが相当多いので、Lintツールの導入などで効率化する余地がある

  • ドキュメンテーションなど、コミュニケーションについてのレビューが相当多い

  • レビューには会社の価値観が現れる。万葉の場合は、「品質を良くする」「開発時の行動」「わかりやすくする」「変更しやすくする」に関するレビューコメントが目立つ

万葉の開発スタイルは、チーム内のコミュニケーションを重視していますが、それがレビューの傾向にも現れていました。

結果として、新人は研修で開発時のコミュニケーションについて学び、万葉らしい仕事の進め方を把握した上で、プロジェクトに入ることができているように思います。

レビュアーをランダムアサインする

前述のとおり、レビューは研修の中核をなす重要な要素ですが、一つ問題がありました。

基本的に、レビューは全社員の中でできそうな人か、「サポーター」が行うというルールで運用していたのですが、なかなかレビューをしてもらえなかったり、同じ人ばかりがレビューすることになりがちという部分が難点でした。

レビューする側の心理としては、レビューをしたくないというよりは、「そのレビューを自分がする!」と決めて時間を割くということの踏ん切りがつかず、ためらってしまう、保留しているうちに忘れてしまう、という傾向があったようです。

そこで、2021年3月から、万葉では、新人研修のレビューに「ランダムアサイン」を導入しました。

これは、GitHubのコードレビュアーの自動アサイン機能によって、予め登録されているレビュアー候補者リストから、2名をランダム選出する仕組みです。

これによって、新人がレビューをリクエスト・催促するための心労と、レビューが終わるまでの待ち時間が軽減され、多様性のあるレビューを安定的に実現できるようになりました。自発性に頼り、結果的にレビュー参加が偏ってしまっていた導入前までのやり方と比べて、サステイナブルな仕組みになったと感じています。

研修メニュー改善の取り組み

現在は、教育カリキュラムに関連して、いくつかの改善活動を社内で進めています。

Ruby研修

Ruby on Rails は Ruby で動くフレームワークなので、Ruby on Rails でアプリケーションを開発するということは、Rubyを書くということでもあります。しかし、Rails ばかりをやっていると、素の Ruby についての理解があやふやのままになってしまうという心配があります。

弊社では、Ruby研修については、通称 "Ruby Silver"(Ruby Association のRuby 技術者認定試験)を受けてもらうことで一定の担保を図ってきました。最近では、それに加えてRubyの研修課題を作り、いきなりRailsだけを学ぶと不足してしまいがちなスキルを補おうと試みています。

RuboCop設定の改善

2019年のレビュー分析の結果を踏まえて、研修でRuboCopを使うように変更しました。ただし、現状ではRuboCopの設定内容が仮のままとなっていて、万葉の推進したいコーディングとは異なる内容が意図せず強制されてしまう場面がたまにあります。

そこで、現在、設定の改良を進めています。

Rails7対応

現状の教育カリキュラムは、Rails7で実施・検証済みではありません。実は、弊社内では、今まさにRails7でのはじめての実施が行われている最中です。

その研修結果を踏まえて、Rails7で進めやすいように、カリキュラムの内容の改良を図っていこうとしています。

まとめ

本記事では、万葉が公開しているRailsの新人研修カリキュラムや、それを使ってどのように研修を進めているかをご紹介しました。

次回は、数多く研修を進める中で言語化されてきた「万葉が新人エンジニアに期待する習慣や考え方」についてご紹介してみたいと思います。


株式会社万葉ではエンジニアの採用を行っています!
https://everyleaf.com/we-are-hiring