非エンジニアによるestieのコーディング試験の解説

f:id:estie:20211215092040p:plain

こんにちは、estieで事業開発をしている山本です。これはestie Advent Calendar 2021 15日目の記事です。

estieは不動産×ITの領域で事業を展開しており、不動産業界かIT業界出身のメンバーが多く在籍しています。そんな中、私自身は不動産業界でもIT業界出身でもないのですが、バックグラウンドがどちらにもない立場ならではの視点を持ち、チームに投げかけることで、新たな発見をもたらせることが強みだと思って日々仕事をしています。

初めてコーディング試験を受ける人に読んでいただきたい

この記事を書くにあたり、何かいい題材がないかと考えていたところ、日ごろから気になっていた「コーディング試験」というものを非エンジニア視点で解説してみたら何か新たな発見に繋がるのでは、と思い立ちました。

estieではエンジニアの採用プロセスの中でコーディング試験を実施しています。短い選考プロセスの中で唯一「実装力」を測るステップなので、コードが一行も書けない非エンジニアからしたら恐ろしく何も理解できない時間になるのではないかと思いながらも、とりあえず一度試験の場に同席させてもらいました。

たった1時間でしたが、試験の攻略方法がわかった気がするので、これから初めてコーディング試験を受けるという方にとって参考になればと思っております。

(実際の試験問題については公開できないので、気になる方は実際にestieの選考を受けてみてもらえればと思います!)

f:id:estie:20211215064548j:plain

コーディング試験で何が測られているか

攻略方法の前に、まずは試験の流れを説明します。estieのコーディング試験では、オフィス不動産サービスの開発が体験できるような問題が出題されます。その上で、面接官の前で実際に動くプログラムをホワイトボードに手書きで書いていき、一定書けた段階でディスカッションに移るような流れになっています。また、ディスカッションパートに移る前も不明点や確認したいことがあれば面接官に相談できるというルールになっています。

コーディング試験を疑似的に受けてみてわかったことは、この試験は純粋なコーディングスキルを測るような試験ではないということです。当初のイメージでは、如何に難しいコードが書け、専門的な知識がどれだけ備わっているかを測るものだと思っていたのですが、実際に受けてみて、私の中で整理したestieのコーディング試験で測っている力は以下3つです。

①基礎的なコードを書く力

②アウトプットを出すまでのロジックを組み立てる力

③必要な時に相談する力

この3つは estie がどういうエンジニアを求めているかを表しています。ここからは、なぜこの3つが必要なのかも踏まえながら、私が考える攻略方法について解説していきたいと思います。

攻略方法①目指すアウトプットをまず整理する

コーディング試験では問題を解決するプログラムが出来上がることを最終ゴールとしています。ただし、ビジネスの世界では基本的に問題に対する解はいくつも存在するものなので、目指す解(アウトプット)をまずは定義し、ホワイトボードに書き出してみる必要があるかと思います。最終的に出したいアウトプットの定義が揺れていると、面接官もどのように書かれたコードを評価すべきなのかわからなくなってしまいますし、おそらくコードを書いている本人も途中で迷いが生じてしまうのではないかと思います。

攻略方法②ロジックを言語化し、早くコードを書く

このコーディング試験で測られている①基礎的なコードを書く力は、コードを実際に書かないことには全く測ることができないため、何かしらコードを早く書ける状態をまず目指しましょう。

そして、早くコードを書くためには、ロジックを言語化することが近道になるかと思います。

アウトプットが複数通りあるように、同じアウトプットを出すための手段(ロジック)も基本的にはいくつも存在するはずです。エンジニアであればロジックはすぐにいくつかオプションが思い浮かび、その上で、最短距離、かつ最もエラーなくアウトプットが出せるロジックを選定したくなるのでしょうが、試験という限られた時間しかない場においては、雑念になってしまう可能性があるかと思います。

少しコードを書き始めて、やっぱりあのロジックの方がよさそうだから、他のロジックで書こうということを繰り返しているとなかなか目指しているアウトプットの状態には近づかず、時間だけが過ぎていってしまいます。

その場でロジックを話しながらコードを書けるのが理想的ですが、難しい場合は、まずロジックを言語化してみて、どのような順番でどのような処理を行うかを明確にしましょう。一旦は他の可能性を捨てて、シンプルなロジックで実装することで、①基礎的なコードを書く力②アウトプットを出すまでのロジックを組み立てる力、両方をアピールすることができるはずです。

攻略方法③とにかく相談し、不確定要素を解消していく

当たり前ですが、相談する=答えを聞く/コードの書き方を聞くという話ではありません。

コーディング試験の問題でも、実際の業務の中でも、不確定要素はたくさんあります。特に新しい価値を生み出しに行こうとしているスタートアップにおいては、社内・社外含めて誰も答えをもっていない場合が多いです。コードを書いている途中で何かうまくいかないときは、一度前提を疑ってみて、何か不確定要素がないか考えてみると、多くの場合はそこに原因があるかと思います。

その上で、その不確定要素を解消するための相談を面接官に投げかけ、決まっていないこと・定義に揺れが生じそうなことがない状態を少しずつ作っていくことでより良いアウトプットが出せるのではないでしょうか。

これを試験中に何度か行い、迷っているポイント、及びその解消方法の自分の考えを面接官に投げかけてみることで、③必要な時に相談する力をアピールできるのではないでしょうか。

コーディング面接を楽しむために

実務でコードを書いている方であれば、上記は基本業務の中で行っていることと近しいのかと思いますが、試験の場となると緊張するものだと思っています。

なので、特に緊張に弱い方や、コーディング試験に関する漠然とした不安を持っている方は、是非事前にロールプレイの形で友人・同僚等と一度練習問題を解いてみると、楽しむ余裕をもって本番に挑むことができると思います。

コーディング試験ではないですが、私が新卒でコンサルティング会社に入社したときは、ケース面接を何度も受けていましたが、この本を使って友人と練習をしておりました。

コーディング試験に関する本もたくさん世の中にあると思うので是非それらを活用して準備して挑んでみてください!

▼コーディング試験の練習本

世界で闘うプログラミング力を鍛える本 ~コーディング面接189問とその解法~ | Gayle Laakmann McDowell, 岡田 佑一, 小林 啓倫 |本 | 通販 | Amazon

おわりに

estieはエンジニアの積極採用を行っております。コーディング試験の問題だけ気になったからという理由でも全然いいのでどしどしご応募ください!

募集ポジション一覧

© 2019- estie Inc.