Webエンジニアの募集要項

株式会社PrAhaのWebエンジニアの求人ページです。

概要

給与

  • 正社員の場合:
    • 618~1,069万円(固定残業代40時間/月を含みます)
  • 業務委託の場合:
    • 768~960万円

勤務地

  • フルリモート・フルフレックス
  • 新宿オフィスに出社することも可能 (ただし、全員フルリモートなので普段は誰もいません)

雇用形態

  • 正社員(業務委託も相談いただけます)

勤務形態

  • 裁量労働制 (1日8時間のみなし労働)

年間休日数

  • 正社員の場合:
    • 120日+4日(夏季休暇)+4日(年末年始休暇)+10~20日(年次有給休暇)
  • 業務委託の場合:
    • 業務に支障がない限り自由に休んでいただけます

福利厚生

試用期間

  • あり(3か月)

昇級評価

  • 年3回(4月、8月、12月)行ないます
  • 人事評価のページで「スキル通過申請シートを提出して通過したらスキルが上がる」と記載していますが、スキルが上がって給与に反映されるのが年3回という意味になります

仕事内容

Webアプリのフロントエンド、バックエンド、クラウドインフラまでフルスタックに開発していただきます。

ただし、雇用形態によって仕事内容が以下のように変わります。

  • 正社員の場合
    • アガルートグループのシステム開発(=自社開発のようなもの)
    • PrAha Challengeのメンター
  • 業務委託の場合
    • 受託開発

2022年6月14日より、株式会社PrAhaは株式会社アガルートの子会社となりました。それに伴い、現在は株式会社アガルートが運営するサービスの自社開発をメインに行なっています。

以前までは、PrAhaでは雇用形態を業務委託に限定していましたが、自社グループの開発を行なうには、法的な理由で正社員として雇用が必要になりました。

そのため、現在は業務内容に応じて「正社員」または「業務委託」に分ける形態を取っており、入社時にどちらかを選んでいただいています(入社後の変更も可能です)。

ただし、現在はアガルートグループの体制強化のため、「正社員」での採用を積極的に進めています。

具体的な仕事内容の一例

  • ユーザーストーリーの実装
  • ドメインエキスパートへのヒアリングなどを通して事業理解を深め、適切なモデリングやDBスキーマ設計を行なう
  • 単体、統合、E2E、VRTなどさまざまなテスト手法を組み合わせて、安心して高頻度にデプロイ可能な開発フローの作成
  • XP、スクラムなどの手法に基づく開発プロセスの改善
  • 新規機能をマイクロサービスとして切り出して開発する際の技術選定
  • 円滑なデプロイを実現するためのCI/CDパイプラインの改善

PrAhaの開発文化

システム開発で重要なのは、機能追加や変更がしやすいこと。そしてその状態が長く続くことです。

そのためには、認知負荷が低く変更容易性の高いコードを書くことが何より大切です。

ですので、PrAhaでは以下のような開発文化を持っています。

  • プロダクトのコードはすべてコードレビュー、もしくはペア/モブプロを実施
  • マージ前には自動的にリグレッションテストが実行されるCI環境を構築
  • 各環境へのデプロイも自動化
  • 部分的にTDDで開発、特にバックエンドのコードは基本的にテストを書く
  • Storybookを導入したり、フロントエンドでもテストしやすい基盤を作る
  • 自社デザイナーがおり、開発だけではなくユーザー体験やUI/UXも重視

PrAhaでは新規事業のWEBサービスを開発するために必要な知識を学べるブートキャンプ「PrAha Challenge」を運営しており、そこでは上記の開発文化に沿ったカリキュラムが用意されています。

技術スタック

フロントもバックもTypeScriptで揃えることがほとんどです。

昔から存在するシステムは、Laravelで構築されています。

  • 言語
    • TypeScript
    • PHP
    • Dart
    • Rust
  • フロントエンド
    • Next.js
    • Vanilla Extract
    • Radix UI
    • Storybook
    • Flutter
    • Chromatic(VRT)
    • plop
  • バックエンド
    • Next.js
    • GraphQL Yoga
    • Drizzle ORM
    • Hono
    • Laravel
    • NestJS
  • データベース
    • MySQL
    • PostgreSQL
  • テスト
    • Jest
    • Vitest
    • Playwright
  • エラー監視
    • Sentry
  • バリデーション
    • Zod
  • 認証
    • Auth0
  • CI/CD
    • GitHub Actions
  • インフラ
    • AWS
    • Vercel
    • Cloudflare
  • Iac
    • AWS CDK
    • AWS Copilot
  • モノレポ管理
    • Turborepo
  • 依存関係管理
    • Renovate
  • パッケージ管理
    • pnpm
    • mise
    • aqua

求める人物像

  • プラハってどんな会社?を読んで、共感していただいた方
  • プロダクトオーナーと直接対話しながらソフトウェアを開発していくことに喜びを感じる方
    • アプリケーション開発のプロとして、プロダクトオーナーと対等な関係でコミュニケーションを取り、良いプロダクトを作っていくことになるからです
    • 「こういう作りにすればもっと短期間で仮説検証できますよ」など、一歩踏み込んだ提案を通して、プロダクトオーナーと伴走してくれる方だと嬉しいです

こんなキーワードに興味がある人は応募して欲しい

  • DDD(ドメイン駆動設計)
  • TDD(テスト駆動開発)
  • テストを書くのが好き(書かないと落ち着かない)
  • 型で固めるのが好き(できないと落ち着かない)
  • 高凝集、低結合
  • 静的型付け言語
  • 関数型プログラミング
  • ランタイムエラーが憎い
  • 単一責任原則
  • アジャイル開発
  • XP(エクストリームプログラミング),スクラム
  • 自動化
  • LeanとDevOpsの科学

※これらのキーワードを理解している必要はありません!これらに興味がある・学びたい・実践したいという方を歓迎します!

必須スキル

  • 以下のうち1つ以上の経験
    • Vue.js、React、AngularJSなどを用いたSPAの開発経験
    • APIの開発経験(言語、フレームワーク不問)
    • AWS、GCPを始めとしたクラウドインフラ使用経験
  • ネイティブレベルの日本語能力(N1以上)

まだ必須スキルを満たしていないもののPrAhaには興味がある!という方は「PrAha Challenge」の受講がオススメです!

歓迎するスキル

  • クリーンアーキテクチャなど、ソフトウェアアーキテクチャの設計とそれに基づいた実装経験
  • SOLID原則など設計原則を理解してコードを書ける
  • テスタビリティの高いコードを書ける
  • リファクタリング経験

この仕事で得られるもの

  • 意見が反映されやすい環境での開発経験
  • 密な会話を通して1つのものを作り上げていく楽しさ
  • 技術的負債を抑えることの重要性を理解している企業での低ストレスな開発環境
  • 質の高い開発を行なうメンバーから盗める開発ノウハウ
  • フルリモート勤務の働き心地の良さ

選考フロー

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

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

→カジュアル面談に応募する

1. カジュアル面談

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

2. フロントエンド技術面接

やってもらうこと

弊社が用意したデザインとAPIに対して、フロントエンドの実装(ライブコーディング)をしていただきます。

言語はReact+TypeScriptでお願いしています。

公平のためアプリケーションは事前に公開しておりません。

評価したいこと

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

※すべてが100点でなくても大丈夫です!全体の評価が低かった場合でも、成長の可能性を感じたり、プラハの社風にマッチしていると判断した場合は、プラス評価させていただきます!

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

PrAhaの開発では、1人のエンジニアがユースケース単位でフロントエンドからバックエンドまで一気通貫で実装することを多いです。

そのほうがコミュニケーションコストがかからず、モジュール間で必要なタスクが埋もれたり(これはバックエンド(orフロントエンド)がやってくれると思ってました!的な)、仕事のサイロ化を防げると考えているからです。

そのため、フロントエンドとバックエンドの技術面接はそれぞれ1回ずつ実施しています。

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

創業初期は口頭の技術面接を行なっていたのですが、口頭面接で測れるのはあくまで受け答えの上手さだけで、コードを書くのは上手だけど受け答えが苦手な方が評価されないなど、面接としての不完全さが目立つようになりました。

どれぐらいコードを書けるのか判断するには、実際コードを書いている様子を見せていただくのが最も効果的だと考えたため、今のライブコーディング面接に落ち着きました。

3. バックエンド技術面接

やってもらうこと

以下の2つの課題に取り組んでいただきます。

  1. リレーショナルデータベースの論理設計
    • 既存のテーブルに対して「どのように改善するか」を検討していただきます。
  2. 架空のサービスを想定したエンドポイントの実装
    • 任意のプログラミング言語で、1つのユースケースを実装していただきます。

評価したいこと

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

※すべてが100点でなくても大丈夫です!全体の評価が低かった場合でも、成長の可能性を感じたり、プラハの社風にマッチしていると判断した場合は、プラス評価させていただきます!

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

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

なぜ言語を問わないのか

以下の理由からです。

  • 言語特有の機能を駆使するよりも、適切な設計でコードを書けることの方が大切だから
  • 1つの言語で丁寧なコードを書ける人は、経験の浅い言語に移っても丁寧なコードを書いてくれると思うから

ですので、面接では候補者の一番得意な言語を選んでいただいています。

ただし、流石にアセンブラで書かれたら誰も評価できないので相談させていただく可能性がございます。

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

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

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

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

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

内定承諾

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

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

内定者が社風を知るための機会を用意しています。もしご興味があれば毎月末を高級焼肉で祝う会にご招待しますし、面接では話せなかった他のメンバーとのオンライン面談も設定させていただきます!

応募方法

以下からご応募ください!心よりお待ちしております!

→カジュアル面談に応募する