社外の方向け
採用情報
Engineer
選考フロー

選考フロー

  • カジュアル面談(30~60分)
  • フロントエンド技術面談(60~120分)
  • バックエンド技術面談(60~120分)

全ての面談はリモートでGoogle Meetを使って実施されます。

カジュアル面談

ワイワイ雑談しましょう!面接官に30分罵詈雑言を浴びせ続けるぐらいのことをしない限り、ここで選考が止まることはないので気軽に面談をお申し込みください! 😆

フロントエンド技術面接

やってもらうこと

弊社が用意したサンプルアプリケーションに機能追加(ライブコーディング)していただきます。もし許可をいただけたらライブコーディングの様子を録画させていただき、社内の他のエンジニアも拝見させていただきます。

言語はVue.jsとReactどちらか得意な方をお選びいただけます。公平のためアプリケーションは事前に公開しておりません。

評価したいこと

  • 既存のコードの設計思想を汲み取って合わせられるか
  • 責務を意識して凝集度とテスタビリティの高いコードを書けるか
  • 想像力を働かせて、将来的な拡張性をどこまで担保したコードを書けるか
  • 一般的なデザインをどこまで素早くCSSで表現できるか
  • コードを書き慣れているか
  • 適切なコミュニケーションで不明点を明らかにしながら作業を進められるか
  • 他のエンジニアが読み解きやすいコードを書けるか
  • 健全に技術的な議論ができるか

この面接を行う背景

なぜフロントエンドの面接を行うのか

基本的にPrAhaの開発では一人のエンジニアがユースケース単位でフロントエンドからバックエンドまで一気通貫で実装を担当することを推奨しています。そのほうがコミュニケーションコストがかからず、モジュール間で必要なタスクが埋もれたり(コレはバックエンド(orフロントエンド)側がやってくれると思ってました!的な)、仕事のサイロ化を防げると考えているからです。そのためフロントエンドとバックエンドの技術面接はそれぞれ1回ずつ実施しています。

なぜライブコーディングなのか

創業初期は口頭の技術面接を行なっていたのですが、口頭面接で測れるのはあくまで受け答えの巧拙だけで、コードを書くのは上手だけど受け答えが苦手な方が評価されないなど、面接としての不完全さが目立つようになりました。どれぐらいコードを書けるのか判断するには実際コードを書いている様子を見せていただくのが最も効果的だと考えたため、今のライブコーディング面接に落ち着きました。

なぜアプリケーションに機能追加するのか

創業初期はゼロからアプリケーションを構築してもらっていたのですが、実務ではゼロから構築するより既存コードに機能追加していくほうが多いため、より実務に即した面接手段に寄せました。既存コードへの追加の方がコードリーディングの力、既存コードの取り決めや書き方を理解して合わせる力なども併せて求められるため、より正確にエンジニアの力量を測れると考えて、このような形式に落ち着きました。

なぜ録画するのか

  • 人間の記憶は非常に曖昧なので、候補者の具体的な言動やコードなどの一次情報を面接担当の間で共有できた方が定性的な評価が割れた時に建設的な議論が出来る
  • 面接官が「この人はコミュニケーション能力が高い」と評価したら、その場に居合わせなかった人は「まぁそうか」としか反応できないのですが、録画されていればその評価の元になった具体的な行動まで評価できるので、面接官による評価のズレを減らしていける
  • 面接に参加できなかった人も後から録画を見て、非同期的に評価に加われる

このような背景から、候補者に承諾を得た上で面接の様子を録画することをお願いしております。

バックエンド技術面接

やってもらうこと

架空のサービスを題材にリレーショナルデータベースの論理設計を行い、設計したデータベースにデータをCRUDできるエンドポイントを任意の言語で実装いただきます

評価したいこと

  • トランザクション、外部キー制約、インデックスなど、RDBMSに関する必要最低限の知識を持っているか
  • RDBMSを触り慣れているか
  • データベースのスキーマ設計に最低限必要な知識を持ち合わせているか
  • 想像力を働かせて、将来的な拡張性をどこまで担保したデータベースを設計できるか
  • 責務を意識して凝集度とテスタビリティの高いコードを書けるか
  • コードを書き慣れているか
  • 適切なコミュニケーションで不明点を明らかにしながら作業を進められるか
  • 他のエンジニアが読み解きやすいコードを書けるか
  • 健全に技術的な議論ができるか

この面接を行う背景

なぜバックエンドの面接を行うのか

フロントエンドの面接理由と同じなので割愛

なぜ言語を問わないのか

PrAhaのプロジェクトは開発言語の幅が非常に広いため(Go,Java,Node.js,Python,Rubyなど...)、特定の言語に特化した面接があまり意味を成さない背景があります。また言語特有の機能を駆使するより適切な設計でコードを書けることの方が大切なプロジェクトが多いため、面接の場では候補者の一番得意な言語を選んでいただいています。

それに一つの言語で丁寧なコードを書ける人は経験の浅い言語に移っても変わらず丁寧なコードを書いてくれると思うので、あまり言語にこだわりはありませんが、流石にアセンブラで書かれたら誰も評価できないので相談させていただく可能性もございます。それか面接官が頑張って覚えます。

なぜデータベース設計を行うのか

負債が蓄積したデータベースを改修するのは本当に大変だからです。デプロイすれば終わりのアプリケーションコードと異なりデータベースには既存データが蓄積されているのでマイグレーションが伴うし、ロールバックしづらいし、作業の緊張感が段違いです。あとデータベースが腐っていたらアプリケーションコードも自然と腐っていくので、根っこの部分が何より大切だと考えています。

そんな負債をクライアントに押し付けるわけにはいかないので、現実の事象を適切にモデリングできること、実用的な形で正規化と非正規化のバランスが取れること、適切な制約を設けられることなど、データベースの設計能力は重視しています。

面接の後は何が起きるのか

面接に参加しなかった他のエンジニアもライブコーディングの映像を拝見して、合否を検討します。技術面接の終了から1~2営業日で結果をご連絡いたします。

内定承諾

弊社がお送りする合格の連絡には特に返信期限を設けていません。

(最近は意外とそうでもないのかもしれませんが)転職すると生活が大きく変わる可能性があるので、いろんな情報を得て、納得してから決めた方が良いと考えています。それなのに短い期間で返信を迫るのは不誠実だと思うので、他の企業の選考を受けてみたり、弊社についてもっと調べてみたり、好きなだけ時間をかけていただいて構いません。合格から1年後に「入ります!」と言っていただいても大丈夫です。嬉しいです!

内定者が社風を知るための機会を用意しています。もしご興味があれば毎月末を高級焼肉で祝う会にご招待しますし、面接では話せなかった他のメンバーとのオンライン面談も設定します。代々木上原オフィス (opens in a new tab)をコワーキングスペースとして使っていただいても構いません。

個人的には社員の人柄が弊社の良いところだと思うので、ぜひ遊びに来てください!

最後に

もしこんな弊社の面接を見て「ここは気が合いそうだ!」と感じてくれた方が居たら、ぜひ気軽にご応募ください!お待ちしております! https://www.praha-inc.com/recruit/ (opens in a new tab)

弊社が求める人材要件などはカルチャーガイドにまとめているため、よろしければこちらもご覧ください。