はじめに
こんにちは、estieでSWEをしている菱木です。
日々の業務の中でestieに興味を持っていただいた方とカジュアル面談をする機会がありますが、その中で最も多い質問の一つがこの「コーディング試験」に関しての質問です。
今回はそのコーディング試験に焦点を当て、Nari(CTO)、matsu(SWE)、そして4月入社のLin(SWE)の3人に集まっていただきコーディング試験に関するインタビューを行いました。
自己紹介
Nari
こんにちは、estieで取締役CTOをしている岩成(Nari)です。気づいたらコーディング試験を導入したのが遥か昔のことになってしまったので記憶をたどりながらお話出来たらと思います。
matsumoto
SWEの松本です。今月で勤続1年になりました。コーディング面接の問題案を作成しました。今日はこの記事を読んだ方がestieのコーディング面接を受けたくなるような話をしたいです!
Lin
4月にestieに入社したばかりのSWEのYamamoto Lin Ryosukeです。噂通りものすごいスピードで進んだestieの選考の中でも、大きなウェイトを占めているコーディング試験について雰囲気だけでもお伝えできればと思います。
なぜコーディング試験を課すのか
hishiki: そもそもはestieにもコーディング試験はなかったと聞いていますが、経緯を教えて欲しいです。
Nari: estieでは2年程前に導入しました。それまではコーディングスキルを測る具体的な方法がなかったこと、またそのために前職の年収などに判断材料が引っ張られてしまうことを懸念して導入しました。
ホワイトボードコーディングにしている理由
hishiki: 日系のIT企業では少ないイメージなのでホワイトボードコーディングにしている理由を聞いてみたいです!
matsu: コードを書いてもらうのは、実際に仕事でお願いすることと同じなので、実際にその部分を見せていただきたいからです。ホワイトボードコーディングにしている理由としては
リアルタイムでのコミュニケーション力を測りやすい
オンラインに比べて表現の幅が広い(コードを書いて説明したり、手書きで図を書いての説明もできる)
といったことが挙げられます。
あとは宿題形式だと時間をつくるのが難しいけど、ホワイトボードコーディングだと時間制限のあるその場で完結できるのも良いですね。
hishiki: 確かに僕は宿題形式で挫折した経験があります…
どういった問題なのか
hishiki: 面接を受ける方は一番気になっている部分だと思うので教えて欲しいです!
matsu: 一般的なアルゴリズムを問いつつ、実務っぽさを取り入れた問題にしています。競プロなどでのトレーニングだけでなくあくまで実務ができる人を私たちは求めています。コードだけでなくアーキテクチャも問う問題になっています。
Nari: 実務で使わない問題だと、受ける側も「本当に必要なスキルを見てくれているの?」と不安になりますよね(笑)。また、選考ではestieのファンになってもらうことを大事にしているので、不動産というドメインに触れて実感をもってもらいたいという思いもあります。
matsu: 加えてコミュニケーションが適度に必要になる問題にしています。実装力はもちろん必要ですが実務では以下のような場面によく出くわすためです。
ドメインの整理を行いながら実装を進める
ヒアリングをしながら何がそもそもの問題かを見極める
Nari: あとは、コーディング面接も含めて選考はestieのありたい姿とは - estie inside blog で触れたあるべきエンジニア像から逆算をして問題を作っています。
hishiki: なるほどですね。Linさんは最近選考を受けられたけどどうでした?
Lin: 実務でやっているような、追加の要望にも修正にも対応できるような問題で、テーマも不動産業界らしくなっていました。競プロなどでは与えられた制約だけに対応すればよいのですが、面接では環境の変化に応じたコードをかけるようにして欲しいという出題者の意図を感じました。ドメイン固有の知識などは必要とされていないので不明な部分は都度質問して明らかにしていきました。
試験官は何を見ているのか
Nari: 当たり前ですが実装力は見ています。ナイーブな実装でもまず動くものを作れることが大事。うちでいうバクソクアウトプットの思想ですね。そこから対話をしながらステップアップしていくような形で良いと思っています。一方で、最後はプロとしてコードの細部にもこだわりをもてているか、テストケースを抑えているか、とかかな。
matsu: 実装のこだわりでいうと、その実装にした理由があるのかという部分は実際のコードレビューのような意識で見ています。他にはSWEとして仕事をすすめる力も大事ですね。同僚として仕事を任せられそうかを考えています。作業者としてガチガチに指示されたチケットをお願いするのではなく、ふわっとした課題感で任せられる方のほうが良いなと思います。
hishiki: コーディング面接って緊張すると思うのですが、そのような状態での能力も見ていますか?
Nari: 緊張状態でのコーディングは全然求めていないです。むしろ、最初の簡単な自己紹介でリラックスしてもらえるように苦心してます(笑)。リラックスしてもらえるならお菓子食べながらとかジュース飲みながらとかでも良いかなと思ってます。
matsu: 周りはみんな味方だと思って、なるべくリラックスした状態で受けていただけたらと思っています。 我々もぜひ一緒に働いてほしいと思っているからこそ採用活動をしているので!逆に見られて緊張するというよりも、コーディングテストは自分を売り込む場だと思ってアピールしてやるくらいの気持ちで来ていただけたら!
実際にコーディング試験を受けてみて
hishiki: Linさんは最近コーディング試験を受けたと思いますが、意識していた部分はありますか?
Lin: 今までの会社でもコーディング試験は存在していました。CS知識をもとに計算量やアルゴリズムを制約に応じて改善していくこと、改善の際に書き直しやすいコードにすることに気を付けていました。
面接官から最初に提示される問題は問題や制約の全てが明らかになっているわけではないので、自分で質問をしながら不明点を明らかにして実装を進めました。
hishiki: 確かに僕も遠い日の記憶になっていますが、面接官にとにかく相談しながら不確定要素を潰していった記憶があります。
おわりに
estieはエンジニアの積極採用を行っております。ホワイトボードコーディングの話を聞いてワクワクしてきた方はぜひご応募ください!