기능정의서 선 검토를 통해 구멍 메우기
계약서를 검토했다면, 이제는 기능정의서(Function Specification, 기능명세서)를 들여다볼 차례입니다.
기능정의서는 프로젝트의 첫 단추이자, 전체 방향성을 설정하는 기준점이 됩니다.
인하우스 프로젝트라면 기존 서비스 기능에 대한 고도화 혹은 신규 기능 도입을 설명하는 목적의 문서일 수 있고, 외주 프로젝트라면 고객이 요청한 니즈나 요구사항을 정리한 형태의 문서일 수 있습니다.
외주의 경우, 초기에 받는 기능정의서는 ‘기획’이라기보단 ‘희망사항’에 가까운 경우가 많습니다.
때문에 PM은 주어진 기간과 리소스 내에서 실현 가능한지, 혹은 구체화가 더 필요한 부분은 없는지 꼼꼼히 검토할 필요가 있습니다.
기능 간의 연관성, 누락된 플로우, 추상적인 정의가 실제 개발 단계에서 어떤 리스크로 이어질 수 있을지 짚어내는 것이 중요합니다.
아래는 제가 아주 좋아하는 서비스, 당근마켓을 예로 들어 간략하게 작성한 예시입니다.
딱 봤을 때, 어떤 생각들이 떠오르나요? PM은 무엇을 메워야 할까요?
- 이 기능들은 누가 쓰는 거지?
- 사용자의 유형이 판매자와 구매자로 구분이 되는 건가?
- 사용자 유형(판매자, 구매자)에 따라 기능 노출 여부나 동작 조건이 달라져야 하나?
- ‘내 물건 팔기’에서 작성을 완료하면, 메인으로 이동시킬까? 아니면 마이페이지로? 혹은 팝업으로 알려주기?
- 작성 도중 이탈 시, 임시 저장 여부를 처리해야 할까? 다음 고도화 진행 시, 구현하는 것으로 할까?
- 사진 첨부는 몇 장까지 가능하게 하지?
- 어떤 값이 필수 입력이고, 어떤 값이 선택사항이지?
- 제목의 최대 글자 수는 몇 자가 적절할까? 가격은 숫자만 입력되게 해야겠다, 0원 입력도 가능하게 할까?
- 동네 위치는 물건을 팔 때마다 매번 직접 입력?
- 아니면 회원가입 시 동네 위치를 기본으로 설정하게 하고 불러오는 구조? 그러면 GPS 기반으로 위치 확인이 필요해지겠네. GPS 기반 자동설정이 필요하다면, React Native로 구현해도 될지 기술 검토를 먼저 해야겠다.
- 리뷰는 언제 작성할 수 있게 하지? 거래 완료 상태값이 존재해야 한다면, 거래 완료는 누가? 언제? 어떤 기준으로 누르지? 상대방 승인도 필요한가?
- 리뷰의 형태도 고민이네. 사진 첨부는 가능하게 해야 하나? 별점으로 책정?
- 텍스트만? 사진 + 별점 + 코멘트? 사진 첨부가 허용된다면 몇 장까지? 별점은 1~5점? 반점 허용?
아래와 같이 와이어프레임을 MVP 수준으로 구성했다고 가정해 보고 연습 삼아 구멍을 찾아볼까요?
PM 체크포인트
스플래시는 몇 초간 노출되나?
자동으로 다음 화면인 메인 홈으로 넘어가는지, 유저 탭/스와이프 등의 동작에 의해 넘어가는지
로고 외에 브랜딩 슬로건, 슬로건 애니메이션 등의 추가 요소는 없는가?
네트워크 미연결 상태에서는 로딩 실패 예외처리를 해야 하는가?
PM 체크포인트
현재 보이는 목록은 어떤 기준(최신순/인기순/거리순 등)으로 정렬되는가?
썸네일 이미지의 경우 판매상품 등록 시, 여러 이미지를 등록한다고 하면 노출되는 기준은?
말 줄임 처리 기준은?
하트 이모지를 보아하니, 찜하기 기능인 것으로 보이나, 찜하기 기능은 기존 요구사항 메뉴에 없던 항목이다. -> 찜하기 한 리스트를 확인하는 화면 또한 존재하지 않음 -> CRUD의 R(Read) 기능 누락
필터나 검색 기능은 없어도 되는가? (없다면 MVP 범위인지, 후속 개발로 미루어지는지 확인 필요)
판매리스트 클릭 시 이동되는 상세 페이지가 존재하지 않음 → CRUD의 R(Read) 기능 누락
글쓰기 버튼 클릭 시의 액션은?
PM 체크포인트
닉네임, 프로필 사진은 어디서 등록되는가? 회원가입 시 필수적으로 설정을 유도할 것인지?
닉네임은 중복 체크를 할 것인지? 닉네임의 글자 수 제한과 영문/ 특수문자 조건도 정의가 필요하겠다.
받은 후기는 어떤 기준으로 분류되는가?
매너 평가의 리스트 영역은 무한스크롤인가?
프로필 수정을 누르면 어떤 항목들이 수정 가능한가? → 프로필 이미지? 닉네임? 동네 위치?
PM 체크포인트
판매 중/거래완료 탭 구분 기준은? 상태값은 어떻게 설정되고 바꿀 수 있는가?
찜하기 버튼이 존재하나, 찜한 목록을 어디서 확인하는가? 마이페이지 내 별도 메뉴가 있어야 할 것으로 보임
판매 중인 상품의 수정/삭제 기능은 어디에서 제공되는가? -> CRUD의 U(Update) 기능과 D(Delete) 기능 누락
PM 체크포인트
사진은 최대 10장까지 첨부가 가능하구나 그럼, 이미지의 순서를 변경할 수 있나?
이미지 삭제처리는 어떻게 하지?
제목/가격/설명은 필수 입력인가? 필드마다 유효성 검사 정의를 해놓아야겠다.
가격은 숫자만 입력 가능한가? 0원도 허용되는가?
작성 완료 후 이동 경로는? 메인으로 리디렉션? 마이페이지로?
PM은 기본적인 CRUD 흐름이 구성돼 있는지를 점검할 줄 알아야 합니다.
Create (생성): ‘내 물건 팔기’ 기능은 보이지만, 작성 완료 후 어떤 화면으로 이동하는지, 성공/실패 시 액션은 어떻게 되는지 정의되어야 합니다.
Read (조회): 판매 목록 화면은 확인되었지만, 각 리스트를 눌렀을 때 진입할 상세 페이지가 기획되어 있지 않습니다.
Update (수정): 사용자가 자신이 등록한 글을 수정할 수 있어야 합니다. 수정은 어디에서 가능한지 기획되어야 합니다.
Delete (삭제): 사용자가 자신이 등록한 글을 삭제할 수 있어야 합니다. 삭제는 어디에서 가능한지 기획되어야 합니다.
모든 구멍을 한 번에 다 메울 수는 없다.
명심할 점은, 모든 구멍을 한 번에 다 메우는 것은 불가능하다는 것입니다. 중요한 건, 미리 어느 부분이 비어있는지 인지하고, 어디서 질문을 던져야 하는지 아는 것, 그리고 그 빈틈을 문서화와 커뮤니케이션을 통해 점진적으로 채워나가는 것이 중요합니다.
기능정의서나 기획안은 '완성형'이 아닙니다. 주어진 자료가 러프할수록 PM은 더 능동적으로 '구멍을 메우는 시선'을 가져야 합니다. 완벽함이 아니라 우선순위 판단, 문맥의 이해, 대화의 출발점 찾기입니다. CRUD를 기준으로 흐름을 점검하는 습관이 PM의 기획 감각을 높여줄 수 있습니다.