自社の入社トライアル課題(Ruby on Rails編)に挑戦した結果

トライアルチャレンジャーの自己紹介

どもー。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なんですよ。それはもう自他ともに認定済みです。クラウドインフラからの挑戦なので、結構たいへんであります。

ただ、忘れていませんかね?
いつからひとりで解決しなければならないと錯覚していた?

我々はチーム!!マツリカはチーム力で開発しているんだ!

「CTO! 1on1を通じて僕の悪習を指摘してください!」

ということで、マツリカではわからないことはどんどん質問してOKです。
CTOに限りません。マツリカのエンジニアはみんなフルスタックに近い状態な上に、他企業でならエースを任される人材ばかりです。

また、READMEにも質問OKと書いてあります。

課題を進める上で、不明点などあればSlackで質問してください。WIP状態のプルリクエストを作成して相談していただいても大丈夫です。

これは、業務を進める上で非常に重要です。不明点をそのままにして進捗がないほうが困るのです。
質問力も同時に見ているというわけです。
同時に、回答者との相性もトライアル挑戦者には確認してもらうことができます。

だから、わからないことを恥として放置するほうが悪!!
これまで、マツリカの先輩たちは丁寧に回答してくれました。ああ素敵。

心理的安全性が高い。

俺たちの戦いはこれからだ!

打ち切りみたいな書き方ですが、僕はトライアル課題をまだ続けています。
工数的には完全に目標値オーバー感はありますが、この課題を解くこと自体がすごい勉強になります。

正しくModelを理解して実装しないとクリアはできません。
ていうか、これ作ったVPoEがすごい。絶妙なつくり。

マツリカで業務遂行が可能か?という一点において正しくテストできているように思います。

なお現在までトライアル課題クリア者は出ていません!!(社外の)

だ、誰か!誰か氏〜〜〜〜!このトライアル課題、挑戦してみません?

Railsエンジニア
今、勢いあるスタートアップで活躍したいRailsリードエンジニア募集!
世界を祭り化する、Sales Techのスタートアップです。   「世界を祭り化する」 これがマツリカのミッションです。   テクノロジーの力で、人が夢中になる状態を産み出すサービスを創出していきます。 その第一弾として、営業パーソンを「祭り化」するため、クラウド営業支援ツール「Senses(センシーズ)」を運営しています。 「Senses」のコンセプトは、入力負荷が少なく、成果が自動的に最大化されるSFA/CRMです。営業管理者だけでなく、営業現場に支持されるSFA/CRMをSaaSで提供しています。 【外部評価サイト:SensesとSalesforceの比較】https://www.itreview.jp/categories/sfa/compares/salesforce-sales-cloud_vs_senses 【プロダクトサイト】 https://product-senses.mazrica.com/ 【コーポレートサイト】 https://mazrica.com/ 【会社概要スライド】 https://www.beautiful.ai/deck/-LPdn52kc8rAETfcNqOI/
株式会社マツリカ

あなたの挑戦を待っている!!

株式会社マツリカ's job postings
Anonymous
10660319 936836843068802 1959399375463709243 n
6beab69f 0238 4353 92b5 983765ad0c3c?1540742531
8681d345 a6dc 48b5 946a 138f87a6a7d9?1545363936
2c79e5ca c43e 4bef 9d1d 9e0ddbf2b0fc?1549733607
E09731ff acd6 4e59 a081 a9bc4c6ae142?1553104727
6 Likes
Anonymous
10660319 936836843068802 1959399375463709243 n
6beab69f 0238 4353 92b5 983765ad0c3c?1540742531
8681d345 a6dc 48b5 946a 138f87a6a7d9?1545363936
2c79e5ca c43e 4bef 9d1d 9e0ddbf2b0fc?1549733607
E09731ff acd6 4e59 a081 a9bc4c6ae142?1553104727
6 Likes

Weekly ranking

Show other rankings
If this story triggered your interest, go ahead and visit them to learn more

Page top icon