코드 현실을 기반으로 로드맵 구축하기, 의견이 아니라
Source: Dev.to
대부분의 제품 로드맵은 회의실에서 포스트잇과 강한 의견으로 만들어집니다. 가장 큰 목소리가 승리하기 때문에 로드맵은 엔지니어링 현실보다는 정치적 역학을 반영하는 경우가 많습니다.
그런데 현실이 다가옵니다. “2주짜리 기능”이 코드베이스 복잡성을 아무도 확인하지 않아서 두 달이 걸리고, “빠른 통합”은 데이터 레이어를 다시 작성해야 하며, “간단한 UI 변경”은 다른 14개의 페이지에서 사용되는 공유 컴포넌트를 건드립니다.
데이터‑드리븐 대안
로드맵이 실제 코드베이스 데이터를 기반으로 만들어진다면 어떨까요?
코드에서 추출한 기능 인벤토리
“우리가 어떤 기능을 가지고 있나요?” 라는 질문에 제품, 엔지니어링, 영업 부서가 서로 다른 답을 주는 대신, 코드 분석을 통해 자동으로 기능을 추출합니다. 의존성 그래프에 대한 Louvain 클러스터링을 적용하면 다음과 같은 명확한 기능 목록을 얻을 수 있습니다:
- 명확한 경계
- 복잡도 지표
- 소유권 데이터
경쟁 격차 점수화
경쟁사가 가지고 있지만 우리에게 없는 각 기능에 대해, 실제 코드베이스를 기준으로 구현 복잡도를 점수화합니다:
- 무엇을 바꿔야 할까?
- 몇 개의 파일이 영향을 받는가?
- 어떤 팀이 관여해야 하는가?
- 의존성은 무엇인가?
계획 회의에서 “SSO만 추가하면 된다”처럼 간단해 보이는 기능도 인증, 사용자 관리, 결제, 관리자 네 개의 서로 다른 기능 클러스터와 세 개의 다른 팀 소유자를 건드려야 한다면 높은 복잡도 점수를 받을 수 있습니다.
팀 역량 매핑
누가 실제로 무엇을 만들 수 있을까? Git 히스토리를 통해 전문성을 파악합니다:
- Sarah는 결제 시스템에 깊은 전문성을 가지고 있다.
- Mike는 실시간 기능을 잘 안다.
- 아무도 8개월째 레거시 보고 모듈을 건드리지 않았다.
잘못된 팀에 로드맵 항목을 할당하면 작업 시간이 세 배로 늘어납니다. 역량을 고려한 계획은 이를 방지합니다.
복잡도 기반 노력 추정
스토리 포인트(주관적인 의견) 대신 구조적 복잡도를 기반으로 노력을 추정합니다:
- 영향을 받는 파일 수
- 기능 간 교차 의존성
- 테스트 커버리지 격차
- 해당 영역의 과거 변경 속도
코드와 맞닿아도 살아남는 로드맵
데이터‑드리븐 로드맵은 다음을 포함합니다:
- 무엇을 만들 것인가 – 경쟁 격차와 사용자 요구에 기반
- 실제로 얼마나 어려운가 – 코드베이스 복잡도 분석에 기반
- 누가 만들 것인가 – 팀 전문성 매핑에 기반
- 무엇에 의존하는가 – 기능 의존성 그래프에 기반
- 무엇이 잘못될 수 있는가 – 과거 회귀 패턴에 기반
이는 제품 직관을 데이터로 대체하는 것이 아니라, 제품 직관에 현실 검증을 더해 약속 전에 확인하는 것입니다.
원문은 glue.tools에 처음 게재되었습니다. Glue는 사전‑코드 인텔리전스 플랫폼 — 티켓을 붙여넣고 전투 계획을 받아보세요.