지난 2월 8일 오후 3시부터 6시까지 무신사 2차 코테를 보고 후기를 남길지 말지 정말 고민을 많이 했다.

이번 코테는 문제 내용을 자세하게 언급해야 글 작성을 할 수 있는데, 외부에 노출해도 되는지 아닌지 정책을 몰라서 모르면 하지 말자 생각해 안올리고 있었다.

 

설날 지나서야 결과 발표가 있을 것 같았는데, 2월 13일 17시 31분에 합격 메일이 왔다.

1차/2차 코테 회고를 하고, 코딩테스트와 관련해서 자유롭게 쓸 수 있다는 내용...! 그래서 이 글을 작성하게 됐다.

 

무신사 2차 문제도 public으로 공개가 되어있다. https://github.com/musinsatech/2026-musinsa-rookie

 

코테 준비

2차 코딩테스트를 보기전 공개된 내용은 다음이 전부였다.

  • AI Agent 사용 가능 (무신사 제공 Codex 혹은 개인이 구독한 AI)
  • Github를 통한 문제 풀이 (개인 Private Repository에서 작업)
  • 개발 환경 자유
  • 시험 시작시, PROBLEM.md 공개
  • 시험 응시 가능 언어 - 자바, 코틀린, 자스(타스), 파이썬
  • 출제 의도

1차 때와 마찬가지로 알려진 내용들을 토대로 어떤 유형의 문제가 나올지 머리를 굴려봤다.

 

AI, 깃허브(git 관리), 빌드 도구, 프로젝트 구조/코드 관리, 문서화, 요구사항 분석...

 

누가 봐도 진짜 개발을 해야 할 것 같다.

어떤 식으로 문제가 주어질까 생각해 봤는데 우아한테크코스의 프리코스 문제처럼 요구사항과 실패하는 테스트 케이스(TDD)를 주고 구현해 나가는 방향과 비슷하지 않을까 예측했다.

 

평가 역량에 API 문서가 언급됐는데, 이 API가 뭘 말하는 걸까 고민했다.

  1. 코드 레벨에서의 함수(Method) API
  2. REST API

정말 웹 개발 낼까? 3시간인데? 시간 안에 개발 환경 세팅 가능..?

안낼 가능성이 크다고 생각했지만 혹시 몰라서 시험 준비를 두 가지 버전으로 준비했다.

  1. 순수 Gradle + Java
  2. BE: Gradle + Java + Spring Boot / FE: npm + Next.js + Shadcn

여기에다가 문서화를 쉽게할 수 있게 템플릿도 모두 만들어놨다.

  • API 문서 템플릿
  • 의사 결정/트러블 슈팅 템플릿
  • README.md

작성은 물론 내가 손으로 하나하나 작성하지 않았다. 모든 것은 AI와 함께...

어떻게 AI와 같이 구성했는지 소개하자면

  1. Claude Opus 4.6에 /superpowers:brainstorm 스킬을 실행하고, 내가 생각한 프로젝트 구성(BE/FE)과 무신사가 제시한 출제 의도 전체를 프롬프트에 넣어 브레인스토밍하며 구성 전략, 문서화 전략을 구체화했다.
  2. 도출된 전략을 Codex 5.3에 넘겨 피드백 제시
  3. 해당 피드백을 다시 Opus 4.6에게 넘겨 타당한지 판단/반영
  4. 설계 문서 최종 검토
  5. 구현

준비는 여기까지 하고 마음 편하게 시험날까지 기다렸다. 뭐가 나올지 몰라서 떨리지도 않았다.

 

시험 상황

실제로 내가 문제를 풀어간 흐름대로 써 내려 가겠다.

 

3시가 되고 PROBLEM.md 공개! 열자마자 보이는건 대학교 수강신청 시스템

전공자라면 익숙한... 데이터베이스 전공 수업에서 다뤄봤을 만한 그 내용..

 

제목과 개요를 빠르게 본 다음, 기획팀 요청사항을 봤다.

음.. 그런데 프론트는 필요 없고, 서버만 작업?

 

wow.. 설마설마했는데 진짜 웹 관련 개발이었다. 근데 프론트엔드를 주로 해왔던 개발자들에겐 조금 가혹한 거 아닌가 생각했다. 아무리 AI로 바이브 코딩이 가능하다고 해도 백엔드 지식 없으면 초반 구성에 시간 엄청 뺏길 텐데..

 

일단 잡생각은 던지고, 내가 전에 구성해놨던 FE관련을 과감하게 날려버렸다.

 

다음으로 기술 요구사항에서 기술스택 부분을 봤다.

 

기술 스택

항목 요구사항
언어 Java, Kotlin, Python, JavaScript 중 선택
프레임워크 자유 선택 (Spring Boot, FastAPI, Express 등)
빌드 도구 언어에 맞는 표준 빌드 도구 사용
데이터베이스 인메모리 또는 실제 DB (자유 선택)
API 형식 REST API

spring boot ok. 빌드 도구 자유 ok. 데이터베이스 인메모리 가능? 바로 h2.

일단 내가 미리 구성해 놓은 것과 완벽하게 호환된다. 문제없음!

 

그리고 필수 문서 안내를 봤다.

프롬프트 이력 제출이라는 예상치 못한 부분이 있었다.

평소에 나는 AI 로 개발할 때, superpowers 스킬 프레임워크를 사용해 SDD 형식으로 개발한다. AI랑 티키타카 하면서 디자인 설계 문서를 작성하는데, AI가 나한테 질문하고 내가 답변하고 이러한 흐름을 어떻게 잘 문서화할지 고민이었다.

맥락이 없으면 이해 못 하는 부분인데 내가 답변하는 것도 모두 적어야 하나..? ⇒ 적당히 적는 대신 도출된 설계 문서와 구현 계획 문서를 추가로 첨부하기로 했다.

 

요구사항 분석과 명시되지 않은 요구사항 섹션을 보면서 내가 어떤 내용들을 구현하고 결정해서 문서에 필수로 남겨야 할 것들을 기억해 뒀다.

 

그리고 평가 안내를 보며 우선 내가 뭐부터 해야 할지 정했다.

일단 명시되지 않은 요구사항은 뒤로 하고 필수적인 기능 구현부터 시작했다.

 

claude opus 4.6한테 problem.md 전체를 던져주고 내가 원하는 백엔드에서의 기본적인 요구사항 던져주고 기본적인 틀을 잡았다. 그다음, 구체적인 ERD와 상세한 요구사항을 정해 CRUD API, ERD 모델 재구성, 동시성 구현이 가능하게 설계 문서를 작성했다. 테스트를 위해 예시 데이터들을 생성해야 했는데, 이것 역시 AI의 힘을 빌려 도출했고, 계획이 타당해 바로 승인!

 

이제 Sub Agent Driven으로 execute-plan을 해서 핵심 기능들은 모두 구현했고, Codex 5.3을 통해 구현된 내용에 대해 상세한 피드백을 요청했다. 피드백을 통해 삭제와 관련된 동시성 문제가 발견되어 멱등성 관련 정책을 정하게 됐다.

 

여기까지 했을 때, 시간이 한 시간보다는 조금 더 남았던 것 같았다. 그래서 남은 시간 동안 문서화에 힘을 썼던 것 같고,

한 30분 정도 남았을 때 더 할 게 없을까 고민하다가 운영을 고려한 로깅 및 타임아웃을 구현하고자 했다.

근데 생각보다 설계에서 오래 걸려서 브레인스토밍까지만 도출하고 실제 구현까진 실행하지 못했다.

10분 정도 남았을 땐 문서나 깃허브 푸시가 정확히 됐는지 확인하고 시험을 종료했다.

 

결과물 : https://github.com/putdata/musinsa-rookie-assignment

 

마무리

이런 형식의 코테는 처음 치러서 매우 색달랐다. AI를 활용하는 능력을 이렇게 평가할 줄은 몰랐다. 하나하나 깊게 결정하기엔 시간이 너무 촉박해서 디테일보다는 큰 그림을 그리면서 구현했다. 아마 세부적인 구현은 AI가 충분히 잘하니 기본기와 시스템 디자인을 잘하는지 평가하기 위한 것이 아니었을까 생각한다.

 

채점은 어떻게 했을지 너무 궁금하다. 약 400명 정도 되는 응시자의 모든 코드를 5일 만에 보고 평가(문서화, 구조, 실행, 테스트)하는 것은.. 물리적으로 힘들지 않나 싶고, AI 자동화를 통해 일정 기준치를 넘었으면 수동으로 보지 않았을까..? 가 내 추측이다.

 

인터뷰가 3월 초일 줄 알았는데, 설 지난 바로 다음 주라 생각보다 촉박한데 열심히 준비해 봐야겠다.

 

이어지는 글: 개선 및 부하테스트