ローファイ日記

出てくるコード片、ぼくが書いたものは断りがない場合 MIT License としています http://udzura.mit-license.org/

第二新卒研修をしていた

雇用流動情報の季節ですが、いかがお過ごしでしょうか。雇用流動と間接的に関係のある記事を書きます。

標記の通り、研修をしていたのでその内容をまとめたり振り返ったりする。

思ったより長くなったぞ...


背景とか

がっつりとしたWeb開発の経験は無いが、情熱があり、コミュニケーション能力など基本的な能力が高そうな、年齢の若い方が応募されたので、いわゆる「第二新卒」と言う扱いで研修を前提に採用した。で、その研修のカリキュラムを主にぼくが考えて実施していた。

といっても、今までに積み上げてきた新卒向け研修のカリキュラムやノウハウを眺めてエッセンスを抜き出すみたいな感じだった。

ただまあ、一ヶ月でコンパクトに集中してやるなど、新卒研修とは違った部分もあるので、振り返ったり、今後も同じようなパターンに対応できるよう記録を残していこうと思う。

第一週

よくある人事的なチュートリアルグループウェアの使い方とか)のあと、ペパボのサービスの概要とかをざっくり話した。特に福岡支社での仕事なので、東京のサービスはイメージしづらいかなと思って、どんな技術とか、どんな人がつくってるとか、そういう話をした。

そのあとはこんな感じだった。

ターミナル環境の構築

Web系スクリプト言語OSSで戦うことになるので、そういう文化をまずは身につけてもらおうと思った。我々のIDEはターミナルとエディタである。多分。

具体的には、ターミナルを一緒に触りながら、以下のような設定をした。

それぞれがどのようなツールなのかの概要を説明しつつ入れていった。

ついでに、OS Xのキーストロークがデフォルトだと遅くてつらいので、 How to increase keyboard key repeat rate on OS X? - Ask Different にある感じのdefaultsを設定した。

ちなみに新卒向けには、読書会の時間が取れたので「はじめてUNIXで仕事をする人が読む本」を読んでもらってたりした。

はじめてUNIXで仕事をする人が読む本

はじめてUNIXで仕事をする人が読む本

Git の使い方

いろいろとつまずくと思うので、時間をかけて基本的な操作を教えた。

具体的には、ポエム的な文章をGitリポジトリで管理してもらって

  • ファイル追加
  • コミット
  • push
  • pull
  • tigのインストール
  • ブランチの作成
  • コンフリクトの対応

などをしてもらい、最終的にはポエムに追記をしてもらうプルリクエストを出す、と言う所までペアプロ的に教えた。

教科書としては、「入門Git」の2、4、5章あたりをあらかじめ読んでもらってから、具体的にはこういうことだよ〜みたいに示した。

入門Git

入門Git

Rubyの基礎

メイン教材は Rails Tutorial を使う。なので最初は Ruby を触れるようにした。

Ruby徹底攻略」のはじめてのRubyの記事を読みながら進めてもらった。メタプログラミングとか、まあ、難しいところもあったけど、一応一通り説明はした。

Ruby徹底攻略 (WEB+DB PRESS plus)

Ruby徹底攻略 (WEB+DB PRESS plus)

第一週はかなりがっつりとやったように見えるが、まあ、集中的にやったのは二日ぐらい。

第二週

この辺からRails Tutorialを読み進めてもらった。

で、新卒研修でもそうだけど、基本的に英語版を読み進めてもらった。理由は、英語に慣れてもらうと言うか、英語のドキュメントでも逃げずに読み進めてもらう癖を付けてもらいたかったから。とはいえ、そもそも英語の文章にはそこまで抵抗が無かったようだったが。

はじめのほう

Rails Tutorial、最初の方に重要なトピックが固まっている。なので、

  • MVCってなんすか?
  • RESTってなんすか?
  • ActiveRecordってなんであんなにコード書かないで済むんですか?
  • Asset Pipelineって要るんですか?

みたいな話をRailsおじさんスタイルで説明した。なんか、Railsの歴史とかやや横道にそれたこともしゃべった。

あと、RubyGemsってなんだよ!と、Bundlerってなんだよ!という2点については、非常に重要で引っかかる箇所の割に説明が薄かったので(まあそういうとこはやってる前提のチュートリアルなのだろうし)、別途手を動かしてもらいつつ教えた。たとえば、Gemfileの中身を変えてrequireはうまくいくか試すとか、*.gemのファイルを解凍して何が入ってるか見てみるとか。

この辺は以前 やわらかRuby と言う教材をつくっていて便利だったので、これを見つつ進めた。

夕会の導入

ぼくも、もちろん別のギョームを進めながら研修をしていく必要があったので、このへんから一日の流れを以下のようにした。

  • 午前中〜お昼過ぎはRailsTutorialや、その他の用事を行う
  • 16:30から一時間夕会を行う。その日分からなかったことについてまとめて聞いてもらう。ぼくが説明する。
  • 17:30から30分、日報のほかに、その日やった技術的な内容をメモでもとにかくまとめてもらい、その内容は研修用のIssueを立てて毎日追記してもらう

「夕会と言うかたちで同期的に説明する」のと、「日報Issueへのコメントというかたちで非同期的に説明する」の両方を導入したのは、理解を深めるうえで良かったんじゃないかと思う。口頭でないとピンとこない内容もあるし、コードを示した方が早いこともあるのでこんな感じで。

とにかく、「分からないことを聞きやすく」するため、窓口をきちんと用意した。

あと、夕会で時間が余ったら、「俺はこういうことを考えてRailsのコードを書いてる」とか、「Rubyな人はこういう感じで設計してる」みたいな余計っぽいおじさん話をなるべく披露することにした。おじさんの価値観を押し付ける、とかでなくて、こういう背景でそうしている、と言うのが分かる感じを心がけた(うまくいっていたかは謎...)。

結局Rails Tutorialを教材に選んでいるのも同じようなモチベーションからで、Ruby on Railsのエコシステムには少なくとも一定以上成功している方法論が詰まっているのは間違いない、その方法論と背景をまずはしっかり身に付けてもらう、というところを重視している。

業務では、Railsももちろん触るけれど、一緒にPHPのコードなんかも把握できてほしい。それとともに「理想的な方向」を教え込んで、古いコードも理想に近づけられるベクトルで考えてほしい、という感じだった。

第三週〜第四週

二週目と同様、夕会駆動でRails Tutorialを読み進めてもらった。

ペースが良いので、Rails Tutorialでカバーしきれない感じの座学も何回か実施した。

プロビジョニング入門

サーバプロビジョニングの概要、必要性、Puppet/Chef/Ansibleの違い、みたいな話をした。正直に言うと @tnmt さんが去年つくった資料をそのまま使った。便利だった。

セキュリティ概要

当社のセキュリティエンジニアの力をお借りして、セキュリティインシデントが起こる背景、どういう内容が起こりうるのか、起こるとどうなるのか、その対策、みたいな話をしてもらった。

その後、そのエンジニアが用意した DVWA - Damn Vulnerable Web Application を使って、XSSやOSコマンドインジェクション攻撃などを実践してもらって理解する、というワークショップをした。

ER図をつくるワークショップ

データベース設計、個人的に非常に大事にしていることもあって、少し早く入社したもう一人を巻き込んでワークショップをした。

楽々ERDレッスン 第1回:「お持ち帰りご注文用紙」編:CodeZineの内容をまずは一緒にやって、そのあと一枚の模造紙を 3 * 2 に分けて、制限時間(10分ぐらい)内に各自でER図を書いてもらい、採点・講評(5分ぐらい)をする、というのを3問実施した。

楽々ERDレッスン (CodeZine BOOKS)

楽々ERDレッスン (CodeZine BOOKS)

講評のときに、色々DB設計的に大事な与太話ができたので、なかなか良かった気がする。

Backbone.js 入門

当社ではムームーメールを始め、いくつかのサービスでBackbone.jsを利用してるので概要を...教えたかったが...

やや時間が足りずにいい感じの資料がつくれず、Backbone.js TutorialsのBeginnersの内容を説明したあとは、公式のToDoCoffeeScriptで書き直したものをぼくがプルリクエストにしてそれを見て自分でいじってもらうと言う感じになった。補習したいかな...。

プルリクエスト

あと、3章からは一つのアプリケーションを作っていく形になるので、章ごとに、プルリクエストをつくってもらうやり方をした。

章ごとにExerciseがあるけど、それもプルリクに入れてもらうことにした。で、レビューの形で答え合わせをしたり、解説をしたりした。

Tutorialは結局9章が終わる直前ぐらいまで進んだ(思った以上にペースは良かった)。残りは、8月以降、隙を見てやってもらうと言う感じで...。

いちおう、9章ぐらいまでできていれば、Railsのコードは読めるぐらいにはなってるんじゃないかなあと思う。

KPT

研修も無事一ヶ月終わったので振り返りをした。

TRYとしては、タイミングが合わずにやれなかったけどレゴスクラムをそのうちやりたいとか、一週間毎に研修スプリントをまわして軽く振り返りつつの方が良かったかも? みたいな話が出た。

この後は、普通にエンジニアみんなを巻き込んだ勉強会として、パーフェクトRuby on Railsでも読もうとか、Swiftでテトリス作りつつアプリー技術に触れようとか、そういう話をしている。

パーフェクト Ruby on Rails

パーフェクト Ruby on Rails

総括

第二新卒研修と言うことで初めてな感じだったが、自分の業務もある程度やりつつ一定の成果は出せたかなーと思っている。まあ、やっぱりそもそも飲み込みの早い方だったので楽だったと言うのはあるかも...。

うまくいった要因として、ほかにはペパボの新卒教育の積み重ねと、エンジニア同士が積極的に教え合うと言う文化は大きかったんじゃないかと思っている。

特に新卒教育。教えていて/教わっていてどうだったかと言う過程を全部GitHubのIssueに記録していることもあって、ぼくは今年からしか関わっていないとは言え全貌を把握しやすく、今回カリキュラムを考えるのにあたっても特に負担は感じなかった。本当に便利ノウハウである。

* * *

第二新卒研修の内容を記録に残した。

ウェブをやってみたい・サービスをつくりたいと言う情熱を持っていたり、力をつけたいけれど、今の環境では成長ができないんじゃないか...みたいにくすぶっている若い方の間で、ペパボと言う選択肢が目に入る感じになれば幸い。たとえば、SIerで手取り15万でExcelにエビデンスを貼付け続けていて辛まっている方など、いかがでしょうかね。