Classiの新卒エンジニア向け研修について

皆様こんにちは！この記事は[Classi Advent Calendar](https://qiita.com/advent-calendar/2019/classi) 4日目の記事です。
 
新卒の小野優子(@yukoono)と申します。ポートフォリオチームで、高校生がやったことを記録し、振り返るための「ポートフォリオ」の開発を行っております。
 
5月にClassiにjoinして以来、合同会社Fjordさんの「[Fjord boot camp](https://bootcamp.fjord.jp/welcome)」で2ヶ月の研修→社内で2ヶ月半の研修→チームに配属され業務へ、というフローで動いておりました。
今回は社内で受けた新卒研修について書いていきます。
 
# 研修内容
 
株式会社万葉さんがgithub上に公開している、Ruby on Railsのプログラマーになるための教育プログラムを使っています。リンクは[こちら](https://github.com/everyleaf/el-training)。
25ステップ+αあり、エンジニアとしてClassiにjoinした新卒メンバーは、この研修プログラムに2ヶ月程かけて取り組みます。メンターとして、「[ゼロからわかるRuby超入門](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E3%82%8F%E3%81%8B%E3%82%8B-Ruby-%E8%B6%85%E5%85%A5%E9%96%80-%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AEIT%E6%8A%80%E8%A1%93%E8%AC%9B%E5%BA%A7-%E4%BA%94%E5%8D%81%E5%B5%90-%E9%82%A6%E6%98%8E-ebook/dp/B07KQXFF6D)」の著者である[igaigaさん](https://twitter.com/igaiga555)、12/21の[TokyoGirls.rb](https://techplay.jp/event/759089)で登壇される[ただあきさん](https://twitter.com/tdakak)をはじめとした社内のエンジニアの皆様にお世話になりました。
 
### 大まかな流れ
プログラムのステップ3を終えた後、ステップ4で自分が作りたいアプリの仕組みやDB構造を考えます。私の場合は、「暇な時間を使って、普段先延ばしにしていることをやるアプリ」をコンセプトに置きました。利用の流れとしては、
1.     アプリに筋トレや英語の勉強など、「やりたいけれど緊急ではない」ことを登録する
2.     暇な時間ができたら、何分程度暇なのかを登録する
3.     所要時間に合わせて、やることをアプリが提案する
4.     終わった後、記録をアプリに入力し、保存する
 
という感じです。このアプリのペーパープロトタイピングやDB構造案を見せながら、メンターとどう実装するかを相談します。私の場合は最初にやりたいことをかなり盛りだくさんで考えていたため、「まずはやりたいことを登録するだけの、最小の機能で実装してみよう。研修が進むのに合わせて、コンセプトの要素を取り入れていこう」という話になりました。
このようにしてアプリの方向性を決定した後は、研修のステップに沿って実装していきます。方向性がそれぞれ違うため、同じ研修を受けていても出来上がるアプリは人によってかなり違ったものになります。例として、同期の@ruru8は社内で利用できる書籍サービスを作っていました。詳細は22日の投稿をお楽しみに。

### 研修期間中の過ごし方
1.     プログラムに沿って、アプリに機能を実装する
2.     取り組んでいたステップの実装が終わる、または途中でもキリのいい単位で実装が行えたら、Githubの自分のリポジトリにローカルの内容をpushする
3.     見て欲しいところにコメントを書いてプルリクエストを出し、メンターにレビューをお願いする
4.     LGTM(Looks Good To Me…レビューがOKであるという意味)がもらえれば次の実装に取り掛かる。修正が必要な場合は、ローカルで修正を行い、pushして再レビューをお願いする
 
という感じです。
わからないことがあったときは、会社で買っていただいている参考書籍を読むか、メンターや社内の先輩に質問します。参考書籍については[こちら](https://www.wantedly.com/companies/classi/post_articles/166227)にまとめられています。
また、Classiはコミュニケーションツールとしてslackを使っておりまして、個人が分報チャンネルを持ち、困りごとや思ったことなどをつぶやく文化が活発です。分報については[こちら](http://c16e.com/1511101558/)。私も自分の分報である「times_ono」というチャンネルに研修の進捗を書くようにしておりまして、ここで質問するとチャンネルを見ていただいている先輩からよくアドバイスを頂けます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531474/9fa2ee8d-3127-a73d-e789-e3a203b8d320.png)

これはtimes_onoの一幕でして、私がわからない！と言ったことに対して、同期の@hxrxchang君が席に助けに来てくれて、参考になるリンクも貼ってくれたところです。こんな感じで、気軽にSOSが出せて、助けてくれる人が社内にたくさんいる、すごく温かい環境です。
 
### 成果物
出来上がったアプリがこんな感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531474/85ecd449-bce3-e39f-79bd-99915e423580.png)

私はレビューで時間をかけたため、ステップ4で考えていたコンセプトの実現は十分には行えず、シンプルに研修プログラムのステップを進めたアプリ、という感じの成果物になりました。ただ、私の場合はレビューで得た知識が評価され、チームで研修内容の共有会を開かせていただきました。
 
研修のゴールは人それぞれです。私はステップ23まで+研修内容の共有会の開催がゴールになりましたが、今研修中のベトナム人の新卒二人は1ヶ月で早くもステップ25を完了し、オプション要件に取り組んでいます。また、フロントエンドのスキルがあるメンバーはRailsのプログラミングと並行してAngularで画面の作成を行い、操作性に優れた格好いいアプリを作っています。Classiの先輩方に協力してもらい、ユーザビリティテストを行なったメンバーもいます。
 
### 研修を終えて
研修を通して、「プログラマーの仕事の大部分は、人への気遣いである」という感想を持ちました。なぜなら、メンターからの指摘事項のほとんどは、「他のエンジニアがアプリをメンテナンスする時に分かりやすい/後で困らないコーディング」についてのアドバイスだったためです。
 
* こうした方が、他のプログラマーが分かりやすい！
* この方がRailsや他のgemのアップデートに関わらず使える！
* このコメントをつけた方が、レビュアーや他のエンジニアに親切！
 
などのコメントをたくさん頂くうちに、プログラマーの仕事像が「黙々と実装だけ行えれば良い、他の人とは関わらない」から、「他の人へ気遣い、情報を伝達し、理解して貰えるコードを書く」に変わっていきました。この意識は、現在チームで仕事をする上でも、チームメンバーへの気遣いや、伝わりやすいプルリクエストという形で活きています。
 
# 終わりに
この研修について社内の先輩エンジニアに話したところ、「羨ましい」という声を多く頂きました。2ヶ月以上かけてコードの書き方を教えてもらえる機会はとても貴重で、多くのプログラマーは仕事の中でコードの書き方やプルリクエストの仕方を覚えていくそうです。手厚い研修プログラムを組んでいただいたigaigaさん、ただあきさん、わからないところを教えて頂いた先輩エンジニアの皆さん、また充実した研修を受けさせて貰える会社の懐の広さに感謝しつつ、この投稿を締めます。
 
明日の投稿は@onigraさんです。お楽しみに。