よく寝てよく寝る

寿司と猫と布団が好きです

2018年度新卒エンジニア研修が終わった

2019年1月いっぱいで(私の)エンジニア研修を全て終えることができました。やった〜〜〜!!!
せっかくなので、全体を振り返ったり、学びと感想を書き留めたりします。
数年後の自分が見返して初心に帰るかもしれないし、学生さんや今後の新卒が見て参考になるかもしれないし、社の先輩方が見て「今年はこんなことやったんやな〜」と知ってもらえるかもしれない!そうなってほしい!

2018年度の研修について

今年度の研修についてはテックブログとか前回のブログとかでも書いているのですが、
今は通年採用化への過渡期で、エンジニア研修のやり方も内容も例年と比べかなり変わっています。
みんなで集まって決まったカリキュラムを決まった期間内に実施するのではなく、
新卒一人ひとりのやりたいこと、配属後のお仕事などを考慮したカリキュラムを組んでその人のペースで進めるような方針でした。
(ちなみに私はWeb開発研修→インフラ研修→モバイル研修という、例年のエンジニア研修とだいたい同様の内容をやるということに決めました。)

私の1年上の先輩までは6月頃〜12月末までエンジニア職みんなで同じ研修を受けていて、 私は入社前にその様子を見ていた(私もそうやってみんなでやるのだろうと思っていた)ので、入社後に研修のやり方が変わる、と言われた時はとても動揺しました。ただでさえエンジニア職が(自分含めて)2人しかいないのに、1人で研修やっていって大丈夫なのか?と不安でいっぱいだったのでした。(あとはいろんな部署で体験させてもらえるサイクルOJTが楽しみだったのもあります。)
また、個人で研修を進めることで、もし研修をやる中で困ったりつらくなっても誰とも気持ちが共有できないんじゃないかと思ってました。今考えれば完全に心配しすぎなんですけど。

実際は、困ったことはSlackで質問したり、お隣でメンターをやってくださった @_shiro16 さんに相談したり、
つらくなったら1年上の先輩エンジニアである @shizuchan さんとの面談で聞いてもらったりしたので、挫折せずに無事研修を終えることができました。
改めて、研修に関わってくださった皆様、ありがとうございました。

このような個人向けの研修がベストかどうか?は私にはよくわからないですが、
私のために研修内容を考えたり、実際に教えてくれたりした人がいるのは確かなので、とても嬉しいし、ありがたいことだな〜と思います。

エンジニアの同期( @mrtc0 )が結局研修をどうやったのかとか全く知らない…。
Railsのカリキュラムを同時にやっていたところまでは把握しているけど、今何してるのか全然知らない。
とりあえず自分が終わったので良しとします(良いのか?)

そんな感じで、研修を終えたので2月からはもともといたWebチームで本格的に開発業務をやっています。
まだたいしたことはやれていません。生物で例えるなら細胞分裂してるあたりです。(?)

全体の流れ

あらためて、いつどんな研修をやったのかを書きます。

Web開発研修

6月下旬から9月いっぱいまで、約3ヶ月くらいやっていました。
詳細はテックブログに書いたんですけど、株式会社万葉さんが作った新人研修用のカリキュラムを使わせていただき、基本的なRailsアプリケーションを1人で作り上げるというのをやりました。
一番学びが多かったなあと感じたのはモデルやテーブルの設計で、レビューをいただきながら考えられたのが、実際の業務に近い感じがしてよかったなあと思っています。部署内外のいろんなエンジニアがレビューしてくださったことも、普段体験できないことなのでめちゃくちゃ貴重な機会だっだなあと思います。 あと、気持ち的に一番時間がかかったのはメソッドの名前つけるところでした。
他称命名大好きおじさんに相談し、良い名前とはなにか?を考えながら決めました。絶対的な正解はなくて、チームで話し合って決めることの大切さを学んだ気がします。

だいたいの話はテックブログで書いたので割愛します・・・

作ったものはこちら -> GitHub - tsumichan/todo-app
特にプルリクやレビューコメントが最高なのでぜひ見てください。

インフラ研修

10月から12月まで、2ヶ月間やっていました。
インフラ研修の話は前回もちょっと書いてますが、Web研修で作ったRailsアプリを自分で立てたサーバー上で動かす(そのために必要なものを用意したり設定したりする)のをやりました。
この時は、メンターの @_shiro16 さんだけでなく、 @yano3 をはじめ基盤チームの方々にもお世話になりました。ありがとうございます!!

この話前もどこかに書いたかもしれないんですが、研修の中で一番難しくてつらかった(気持ち的にも技術的にも)です。
この期間が一番有休使ってるのでそういうことです(何が?)
言い訳じゃないのですが学生時代専攻は情報系じゃなかったし、Linuxコマンド全然知らないし、とにかく基礎の基礎が足りてなかったなあって思います。
今年の半年間の目標にLinuxの資格取るって設定したんですけど明らかに順番間違ったな感がすごい。
なんかハマって質問しにいくとコマンド一発で解決して、お騒がせしてすみませんでしたとなったし、「このコマンド知らなかったの!?」という反応をされたことが多々あって、墓があったら葬られたいくらいでした。

わからないことがあったらすぐ質問できる環境があるし、うまくいかないことがあるのは初めてだしそうだね〜という感じなんですけど、
「なんかうなくいかなくて、自分で考えてみたけどわからなかった/解決できなかった」という経験が最悪なほど心にくるものがあり、それが発生するたびに病んだ。今思い出しても泣ける…。

でも辛いばっかりじゃなくて、自分がやりたかったとおりに動かすことができた瞬間はとても嬉しかったし、
知識が増えること、わからなかったことを理解すること、ちょっとずつできることが増えることは楽しくて、やるぞーって前向きな気持ちになれてたなあと思います。(ブラック企業に洗脳された人みたいな文章になっちゃった)

あと、研修終わってサービスの開発業務をやるようになってから、インフラ研修かめちゃくちゃ役に立っているのを感じます。
研修のためにサービスが動いているのと同じような環境(Nyah)を用意していただけて、そこで作業ができたことと、
研修をやりながら「実際はこのサービスではこういう構成になってるよ」「あのサービスではこういう方法でやっているよ」というのを一緒に教えていただけたことが特に(サービスの業務をスムーズに進めることにおいて)良かったな〜と思っています。
正直インフラ研修の間に全てを理解できたわけではないので今でもインフラよくわからん!となって質問することがあるのですが、
インフラ研修のときの経験と学びのおかげで理解のスピードがぐっと上がりました。最高ですね!

モバイルアプリ開発研修

年明けから1月末まで、ちょうど1ヶ月間やりました。
サービスのAPIを使ってデータを取得し、それを表示する、というのをやりました。
インフラ同様、モバイルアプリ開発の経験が無だった & Swift全然わからないという感じだったのでとっても不安だったのですが、iOSチームの @unnnyong さんがほぼペアプロで隣で見守ってくださったこともあり、心は結構平和でした(よかった)

モバイルアプリ開発研修では具体的に以下のような流れでやりました。

  1. 最初にAppleが提供している本を読んで、Swiftがどういう言語なのか?を知る
  2. アプリのライフサイクルのお話と、プロジェクトファイルの構成を見ながら「これはこういうファイルなんだよ〜」という話をしてもらう
  3. 開発環境のセットアップ
  4. ViewController を作る
  5. APIクライアントを作る
  6. 受け取ったレスポンスから必要なデータを取り出して表示する

Appleの教科書でSwiftについての基礎は理解したのですが、Foundation や UIKIt、 構造体などの
Rubyにはない概念は理解するのに時間がかかってしまいました。
iOSチームの皆さんを拘束して(物理じゃない)質問しまくったり、 @shizuchan さんから「Swift実践入門」の本をお借りして、わからなかった概念だけ検索して逆引き辞書のように使ったりして理解するようにしました。
あとは、どのコードがどういう処理をしているのか?をしっかりコメントに残すことで、言葉にできるまで理解する&翌日の自分がわからなくならないようにする、ということができました。
コードレビューのときにコメントも一緒に見てくれて、間違った理解をしていたところを指摘してもらえたのも最高でした。

はじめはペアプロで説明されるがまま、完全に受け身でコードを書いていたのですが、
やっていくうちに少しずつ自分でコードが書けるようになったり、「ここはこういう書き方の方がいいですかね?」「これは同じような処理なので抽象化したいのですが」「エラー発生時はユーザーが不安にならないような見せ方にしたい」という感じで自分から提案したりすることができるようになっていました。
これは最後の1週間くらいの話なんですけど(泣)

もうひとつ良かったことは、ペアプロの良さを感じることができたということです。
Web研修までは、わからないことがあった時、何がわからないのかとか、逆にどこまでわかってるのかとか、いろいろ考えて脳内シミュレーションして完璧!ってなったら質問していましたが、
ペアプロだと頭に浮かんだ疑問をすぐに口に出せるので、疑問に思ってから解決するまでのスピードが早くていいなあと思いました。
整理させてないまま喋っちゃうので混乱することもあるけれど、思ったことがそのまま伝わるので、自分の頭の中だけでぐるぐる考えることが減って気持ち的にもスッキリできました。多分私にはそっちのほうが合っているんだと思います。

iOSアプリについては、ずっとWebエンジニアとしてやっていたらほぼ知ることがないと思うので、
本当に貴重な体験をさせてもらえたのだなあとありがたい気持ちを感じています。

業務始めて2週間経って感じたこと

上記のカリキュラムを終え、実際の開発業務をやり始めて2週間くらい経っているのですが、
現時点での感じたこととか難しいなと思っていることも書いておきます。

チームのこと

研修は1人だったので、(ほぼ)初めてのチーム開発です。
とりあえずやり方が全然わからんという感じで、最近はみんなと同じことを見よう見真似でやるみたいなことをやっていました。
けど2週間でだいぶ流れが理解できてきたので、あとはそのスピードに乗っかってついていく感じなのかなあと思っています。

チームにはいろんな人がいて、複数人で一緒に仕事をするのは大変なんだなあと感じることもあります。良いことも悪いことも。
それぞれのメンバーの得意なこと、苦手なことが見えてきたし、逆に、チームの中での私の強みや反省すべきところを認識できるようになってきました。
こういうとき、福岡での職種合同研修を思い出します。そしてまた「研修って最高だなあ」となります!

チーム開発に関して、現時点で一番怖いのはレビューです。自分が他人のコードをレビューできないというのもあるけれど、自分が書いたコードに対してレビューがつくのが怖いというのもあります。
内定者アルバイトしてたときはレビューが怖すぎてお腹痛めてた(実話)。
研修で「レビューは議論だ」「レビューは提案だ」というのを学んだので今はそれほどじゃないんですがまだコメントついてると冷や汗かきます。

お仕事のこと

研修ではいろんなことをやったけど、それがそっくりそのままいつもの業務と同じってわけではないので、
学んだことを応用してやっていかないといけないのは、慣れるまでは難しいなと思いました。
数学で公式を学ぶけど、試験のときは公式を答えるのではなくて公式を応用して解く、というのと似たような感覚です。

これは多分、長くやっていくうちに自然とできるようになったりわかるようになったりすることで、
今は私が赤ちゃんだから難しいと感じるだけかもしれません。
チームのメンバーも「これは難しい」と言ってるのを見て、「これは本当に難しいことなんだ」と理解することもあります。

私はビビりでなんでも後ろ向きに考えて口から漏らすので(良くない)、 これからたくさん取り掛かるであろうお仕事たちを怪物のように思っていますが
同時に、(私にとって)未知であるお仕事にワクワクする気持ちもあります。
喉元過ぎればなんとやらと言いますし、最初はつらいけど最初は誰でもそういうもんなんだよなと思いながら、赤ちゃんよりももっと大きくなれるように毎日頑張ろ〜!と思って明日も会社に行こうと思います。

おわり