매니패스트 개발자 모집
스킬
주요업무
세 줄 요약
매니패스트는 팀이 소프트웨어 제품을 기획하는 방식을 AI로 다시 만드는 B2B SaaS입니다. 지금 이 제품은 엔지니어 한 명(테크리드)을 중심으로 7개월 동안 50만 줄 규모로 키워냈고, 유료 고객이 쓰고 있습니다. 우리는 이 사람 옆에 설 두 번째 엔지니어를 찾습니다. 밑에서 배우는 자리가 아니라, 같은 코드베이스를 공동으로 책임지고 서로의 결정에 "굳이 이렇게 해야 해요?"라고 물을 수 있는 동료 자리입니다.
우리가 만드는 것
Manyfast는 제품 기획서를 하나의 구조화된 문서로 다루는 도구입니다. 여러 사람이 실시간으로 같은 문서를 편집하고, AI 에이전트가 그 문서를 함께 쓰고 검토하고 와이어프레임과 유저플로우를 생성하며, Claude Code·Codex 같은 코딩 에이전트가 MCP로 이 문서를 읽어 개발에 바로 씁니다.
한 문장으로 하면, 기획자와 개발자와 AI가 같은 문서를 보게 만드는 것입니다.
지금 풀고 있는 문제들
"좋은 동료와 성장" 같은 말 대신, 입사하면 실제로 마주칠 문제를 씁니다.
- 동시 편집 정합성. Yjs CRDT 기반 실시간 협업에서 충돌 없이 상태를 수렴시키는 일. 영속화는 Redis Streams 위에 직접 구현한 WAL(:base / :log / :meta, compaction, TTL 비대칭, 스냅샷 인코딩 워커 오프로드)이고, 다중 인스턴스에서 편집이 유실되지 않는다는 불변식을 계측과 변이 테스트로 지킵니다.
- 돈이 걸린 정합성. 크레딧 예약 → 소비를 버킷별 FIFO로 정산하고, 만료와 일일 지급의 트랜잭션 일관성, 자정 경계의 race condition, 스트림 완료 핸들러의 중복 실행을 막는 일. Paddle 웹훅과 checkout hold reconciliation, 좌석과 구독 자격 판정도 여기 속합니다.
- LLM 파이프라인과 출력 품질의 측정. AI SDK 기반 스트리밍 + 툴 호출, 클라이언트 끊김 시 abort, BullMQ 큐와 wallclock timeout, 모델 서킷브레이커, 프롬프트 캐싱 단가 불변식. 그리고 평균 점수의 함정(ceiling effect, failure tail hiding)을 피해 모델·프롬프트 교체를 결정할 수 있는 eval 설계.
- 모노레포 4개 앱의 배포 체계. Turborepo 기반 CI/CD, 브랜치별 preview 환경, AWS CDK로 관리하는 인프라, main 승격 시 merge commit과 태그로만 배포하는 릴리스 규율.
앞의 세 문제의 공통점은 다중 인스턴스 환경에서 상태 일관성을 지키는 일이라는 것입니다. 이 문제를 프로덕션에서 겪어본 분을 찾습니다.
우리가 일하는 방식
일하는 방식을 형용사로 쓰는 대신, 저장소에 커밋된 엔지니어링 규칙 문서를 인용합니다. 실제로 이렇게 일합니다.
- "버그를 수정할 때는 원인 가설을 자동화된 재현 테스트로 증명한 뒤 fix를 머지한다. 수정 전 코드에서 실패하는지(RED) 확인하지 않은 테스트는 가설을 증명하지 못한다."
- "자정·만료·청구 주기 같은 시간 경계 동작은 실 시간을 기다리지 않는다. fixture로 시간을 주입하거나 clock을 명시적으로 inject해서 1초 안에 반복 검증한다."
- "평균 점수만으로 모델 교체를 결정하지 않는다. 올바른 대조군, tail metric(p5/failure rate), semantic validator 셋이 모두 있어야 배포 결정의 근거가 된다."
- "재귀 함수 금지. 트리 순회는 explicit stack + iteration 상한 가드로 작성한다." (ESLint 커스텀 룰로 강제)
이런 문서를 읽고 "왜 이렇게 정했지?"가 궁금해지거나 반박하고 싶은 지점이 보인다면 우리와 잘 맞을 가능성이 높습니다. 그 반박은 면접에서 환영합니다.
자격요건
이런 분을 찾습니다
연차보다 아래 경험을 봅니다. 경험상 보통 5년 이상에서 나오지만 연차 자체는 조건이 아닙니다. 아래 항목은 장식용 형용사가 아니라 전형에서 실제로 확인하는 것들입니다.
- 큐, 락, 멱등성, 웹훅 재시도, 트랜잭션 경계가 있는 프로덕션 시스템을 직접 운영해본 분. 그 영역에서 본인이 낸 버그와 고친 버그를 구체적으로 이야기할 수 있어야 합니다.
- 처음 보는 1,000줄 넘는 서비스 코드를 읽고 실패 경로를 찾는 데 익숙한 분.
- TypeScript를 타입 시스템 수준에서 다루고 Node 백엔드(NestJS 등)를 운영해본 분. 나머지 스택은 입사 후 배우면 됩니다.
- 선택을 대안과의 비교로 설명하는 분. "이게 좋아서"가 아니라 "A와 B를 이런 기준으로 비교했고 이 트레이드오프 때문에 A를 골랐다"고 말하는 분. "느려요"가 아니라 어디서 시간이 쓰이고 복잡도가 어떻게 되는지로 말하는 분.
- 코딩 에이전트를 위한 자기 하네스를 직접 구성·유지보수하고 그 근거를 설명할 수 있는 분. 여러 도구를 얕게 써본 것보다 하나를 깊게 쓰는 쪽을 선호합니다. AI가 "완성했다"고 했는데 아닐 때, AI의 계획이 이해되지 않을 때, 토큰 소모를 관리해야 할 때 임기응변이 아니라 시스템으로 해결해온 분.
- 의견이 강하되 배려하는 분. 기술적으로 대립할 용기가 있고, 동시에 자신이 틀렸을 때 양보한 경험도 있는 분.
- 한국어로 문서를 쓰고 리뷰할 수 있는 분. 커밋, 리뷰, 규칙 문서가 모두 한국어입니다.
기술 환경
TypeScript 풀스택 모노레포입니다.
서버는 NestJS · Prisma · PostgreSQL(Supabase) · Redis · BullMQ · WebSocket/Yjs,
클라이언트는 React · Vite · React Router(SSR) · TanStack Query · Yjs,
AI는 Vercel AI SDK 위에 Anthropic · OpenAI · Google 모델과 MCP 서버,
인프라는 AWS ECS/CDK · GitHub Actions · Sentry · OpenTelemetry,
테스트는 Jest · Vitest · Playwright · k6,
결제는 Paddle,
개발 환경은 Claude Code · Codex · Linear · git worktree 기반 워크플로입니다.
우대사항
우대합니다:
- Yjs, Automerge 등 CRDT 또는 실시간 협업 시스템 경험
- PostgreSQL(Prisma) 스키마 설계·마이그레이션 운영, Redis 운영
- LLM 제품 경험 — 스트리밍, 툴 호출, 비용·캐싱 관리, 평가 파이프라인
- AWS CDK/ECS, GitHub Actions 기반 배포 파이프라인
- Paddle, Stripe 등 결제 시스템 연동과 reconciliation
- 초기 스타트업에서 두세 번째 엔지니어로 일해본 경험
채용절차
전형 — 코딩 테스트와 과제가 없습니다
코딩 테스트는 서로의 시간을 낭비하고, 과제는 지원자의 시간을 일방적으로 쓰게 한다고 생각합니다. 대신 이렇게 합니다. 전체 2주 안에 끝내는 것을 목표로 합니다.
- 서류. 이력서와 함께 본인이 쓴 코드를 볼 수 있는 링크(GitHub, 블로그, 발표 등)를 주시면 서류 통과 확률이 크게 올라갑니다. 그리고 아래 세 질문에 각 한두 단락으로 답해 주세요.
- 최근 1년 내 읽은 기술서·문서·글 중 실제 코드나 설계 결정에 영향을 준 것 하나와 그 경험
- 가장 후회하는 기술적 선택과, 당시 비교했던(혹은 비교했어야 했던) 대안
- 동료와 기술적으로 대립했던 경험 하나 — 관철했든 양보했든, 그 과정에서 무엇을 했는지
- 1차 면접. 경험 인터뷰입니다. 이력서에 적힌 의사결정들을 깊게 파고듭니다. 왜 그렇게 했는지, 무엇과 비교했는지, 지금이라면 어떻게 다르게 할지.
- 2차 면접. 테크리드와 우리 저장소의 실제 코드를 함께 읽습니다. 사전 준비가 필요 없고 정답도 없습니다. 낯선 코드를 어떻게 읽는지, 어떤 질문을 던지는지, 함께 일할 수 있는지를 봅니다.
- 최종 면접. 경영진과 역할, 기대, 보상, 회사의 현재 상태를 있는 그대로 이야기합니다.
근무 조건
- 고용 형태: 6개월 계약 후, 상호 동의 하에 정규직 계약
- 근무지: 서울창업허브 별관 313호 (마포구, 공덕역 인근)
- 근무 시간: 주 40시간 유연근무제
- 연봉: 4,500만 ~ 5,500만 원
- 스톡옵션: 부여 가능. 규모와 조건은 전형 과정에서 논의합니다.