VTRyo
Web Engineer / Bloger / Podcaster / Eventer
https://vtryo.me
どもー。Ryoです。マツリカではエンジニアをしています。
簡単に経歴を紹介します。
- 2015 心理学科卒
- 2015 (SES企業)インフラエンジニア
- 2017 (Web系企業) AWS系クラウドインフラエンジニア
- 2018 (株式会社マツリカ) SRE & CRE Team
これまで所属した会社では基本的に分業制だったこともあり、インフラ基盤担当時はその部分しか担当しませんでした。
スキルスタックはクラウドインフラ関連に偏っています。
マツリカにはSREとして入社し、ある意味でSREチーム立ち上げをしました(専任がいなかったので自分が専任になっただけ)
好きなツールはAnsibleです。
マツリカでのこれまでの業務内容はこちらです。
詳しい経歴はWantedlyプロフィールか、もしくは私のポートフォリオを御覧ください。
なんでも何も、僕が望んだからです、はい。
前職時代の転職理由は『今後はインフラ以外もやりたいんですよー』だったので、弊社の開発言語であるRubyによるプロダクト開発にも触れさせてもらえるようになりました。
とはいえ、バックエンド自体は素人同然。プログラミングスクールに通ったわけでもなく、これまでプログラミング経験があったわけでもありません。(Progateで全コースやったくらいで、あとは要所要所を押さえて学んでいたくらい)
さらに、マツリカという超成長期の企業フェーズでは育成枠がありません。
そんな僕がバックエンドへの挑戦ができるのは、SREとして一定以上の機能を果たしている(はず)実績が関係していそうです。
直近での開発体制は、以下のようになっています。この体制は直近のものであり、開発リソースは柔軟に変更されます。(フロントエンド開発が中心の時期はフロントエンド、バックエンド開発が中心の時期はバックエンド、へ人的リソースが割かれます)
このように、どこのチームでも兼任が発生していることが功を奏し、僕はインフラ基盤の面倒を見ながらバックエンドへの挑戦が実現しています。
これならエンジニアとしての幅が広がりそうです。
Ruby on Railsを業務でなんとか触れながら月日が経つこと5か月頃。
応募者用にトライアル課題を自作したという一報が入りました。
「このトライアルができれば、ウチのSensesの開発もスムーズにやっていけるスキルを判定できる想定」
なるほど。ならできないとどうなるのだろう?
できなければRails入門者クラス、ということになります。
不採用ということではなく、単にそれに応じた給与テーブルになります、ということです。
簡単にマツリカのトライアル課題を説明してみます。
【目的】
開発能力を確認したいときに実施する課題です。
マツリカのメインプロダクトである、Sensesの構造に沿って作成しています。
あくまでマツリカで開発業務が遂行できるかを確認するものであり、一般的なスキルチェックではありませんのでご注意ください。
もちろんできなければ絶対に不採用というわけではありません。
他で通用しないレベル、という意味にもならないです。
【課題遂行によって判断されること】
・バックエンドレベル(一般的な基準ではなく、あくまでマツリカ内部で仕事をする基準)
レベル1: サポートありでバックエンド(Ruby on Rails)のPull Requestを出せる
レベル2: サポートなしでバックエンド(Ruby on Rails)のPull Requestを出せる
レベル3:
・Railsアプリケーションのチューニングができること
・Bullet、Newrelicなどのプロファイラを用いて定量的な指標を元に最適化することができる
・Railsアプリケーションのコードレビューができる(リリース可能判断できる)
【課題概要】
主に実施してもらう課題はふたつ。
1. 失敗しているRSpecを通すこと
2. パフォーマンスチューニング
【進め方】
課題の進め方は、Slackで質問してくれてよいです。
WIP状態のプルリクエストを作成して相談していただいても大丈夫です。
【課題1】
これができれば、マツリカではバックエンドレベル2と呼ばれるランクです。
以下のファイルでpending
状態になっているテストが通るように実装を修正してください。
・spec/models/issue_spec.rb
・spec/requests/issues/index_spec.rb
実際のコードはここでは伏せます。
【課題2】
これができればマツリカでは即戦力級のバックエンドレベル3と呼ばれるランクです。
パフォーマンスの悪い /issues 処理をチューニングしてください。 高速化の方法は自由に選択してもらって構いませんが、既存のRSpecのケースが通るように修正してください。
実際のコードはここでは伏せます。
README.mdには、非常に丁寧にかつ親切な説明が記載されていました。
ローカル開発環境を構築してスタートするのですが、docker-composeによる起動方法が書かれているので楽ちんです。
RSpecを見ていきます。確かにpending状態になっている部分があるので、そこを解除してテスト実行。すると、期待した値は確かに得られませんでした。
これを修正し、テストを通るようにするのが課題というわけです。
しかし、初見でいきなり諦めるほど生半可な気持ちでバックエンドやりたいなんて言っていません。
プログラミングできなくて諦めること計2回。3回目の正直で本気でアプリケーション開発ができるようになるべく覚悟をきめた!
トライアル課題がなんだ!僕はもう入社しているんだ!Sensesの実際のコードだって何度も見ている!
おなじデータ構造だろ!?いけるいける!
RSpecが通らないのはModelの実装がきっとおかしいと睨んだ僕は(READMEにspec/models/issue_spec.rbを見ろって書いてあるけど)、Modelを覗きました。
おお、確かになんか処理が抜け落ちているではないか!
これだ……!ここを正しく実装すれば……行ける!!
全然だめでした。トライアル課題、ひとりでやれるほどレベルが上がっていませんでした。
いやわかってますよはい。僕のレベルはバックエンドレベル1なんですよ。それはもう自他ともに認定済みです。クラウドインフラからの挑戦なので、結構たいへんであります。
ただ、忘れていませんかね?
いつからひとりで解決しなければならないと錯覚していた?
ということで、マツリカではわからないことはどんどん質問してOKです。
CTOに限りません。マツリカのエンジニアはみんなフルスタックに近い状態な上に、他企業でならエースを任される人材ばかりです。
また、READMEにも質問OKと書いてあります。
課題を進める上で、不明点などあればSlackで質問してください。WIP状態のプルリクエストを作成して相談していただいても大丈夫です。
これは、業務を進める上で非常に重要です。不明点をそのままにして進捗がないほうが困るのです。
質問力も同時に見ているというわけです。
同時に、回答者との相性もトライアル挑戦者には確認してもらうことができます。
だから、わからないことを恥として放置するほうが悪!!
これまで、マツリカの先輩たちは丁寧に回答してくれました。ああ素敵。
心理的安全性が高い。
打ち切りみたいな書き方ですが、僕はトライアル課題をまだ続けています。
工数的には完全に目標値オーバー感はありますが、この課題を解くこと自体がすごい勉強になります。
正しくModelを理解して実装しないとクリアはできません。
ていうか、これ作ったVPoEがすごい。絶妙なつくり。
マツリカで業務遂行が可能か?という一点において正しくテストできているように思います。