MVP 만들 때 기능을 줄이는 기술
기능을 빼는 게 가장 어려운 기술이다. MVP에서 무엇을 남기고 무엇을 버릴지에 대한 경험.
기능 목록이 30개가 넘어갔다
새 프로젝트를 시작할 때 가장 흥분되는 순간은 기획 단계다. 아이디어가 쏟아진다. 이 기능도 있으면 좋겠고, 저 기능도 넣어야 할 것 같고. 노트에 기능 목록이 30개가 넘어간다.
그리고 3개월 후, 아무것도 완성하지 못한 채 프로젝트는 흐지부지된다. 나도 이런 실수를 세 번이나 반복했다. 네 번째 프로젝트에서야 배웠다.
할일 관리 앱을 만들려고 했다
사이드 프로젝트로 할일 관리 앱. 기능 목록을 정리했다. 할일 추가/삭제, 카테고리 분류, 우선순위, 반복 일정, 캘린더 뷰, 통계, 공유 기능, 알림, 다크모드, 다국어 지원.
이걸 혼자 다 만들려면 6개월은 걸린다. 근데 시장에는 이미 Todoist, Things, TickTick이 있다. 6개월 뒤에 나오는 내 앱이 이들보다 나을 이유가 없다.
"왜 만드는가"부터 답해야 한다
기능을 줄이려면 먼저 이 질문에 답해야 한다. 기존 앱에 없는 가치가 뭔지. 나의 경우 "개발 작업과 연동되는 할일 관리"가 핵심이었다. GitHub 이슈와 연동되고, 코드 작업 시간을 자동 추적하는 것.
이 핵심 가치와 직접 관련된 기능만 남기고 나머지는 다 뺐다. 카테고리? 필요 없다. 통계? 나중에. 다크모드? 나중에.
할일 추가, GitHub 이슈 연동, 작업 시간 추적. 세 가지만 남겼다.
"없으면 못 쓰는가"로 한 번 더 거른다
남은 기능 목록에서 한 번 더 걸러낸다. 작업 시간 자동 추적은 있으면 좋지만, 없어도 수동으로 입력하면 된다. 그러면 빼자.
이 과정을 거치면 기능이 놀라울 정도로 줄어든다. "할일 추가"와 "GitHub 이슈 연동" 두 개만 남았다. 이걸 2주 만에 만들 수 있다.
(사실 처음에 이렇게 줄이는 게 아까웠다.)
수동으로 대체할 수 있으면 안 만든다
알림 기능을 만들까 고민했다. 마감 기한이 다가오면 알림을 보내는 기능. 근데 초기에는 사용자가 10명도 안 될 것이다. 내가 직접 슬랙 메시지를 보내면 된다.
자동화는 규모가 생긴 후에 해도 된다. 100명이 쓰기 전까지는 수동으로 대체할 수 있는 것들이 많다. Stripe 결제 연동 대신 계좌이체, 자동 이메일 대신 직접 발송, 관리자 페이지 대신 SQL 직접 실행.
2주 만에 배포했다
할일 추가와 GitHub 이슈 연동만 구현한 MVP를 2주 만에 배포했다. UI는 투박했고 기능도 부족했지만, 작동은 했다. 5명의 동료에게 보여줬다.
피드백이 왔다. "이슈 연동은 좋은데, 완료한 이슈를 한눈에 보고 싶어요." 이건 내가 생각하지 못한 기능이었다. 기획 단계에서 상상한 30개의 기능 중에도 없었다.
이게 MVP의 핵심이다. 최소한의 기능으로 빠르게 만들고, 실제 사용자의 피드백을 받아서 다음에 만들 기능을 결정하는 것.
반을 지우고, 또 반을 지운다
기능을 줄이는 건 자연스럽지 않다. 개발자는 만드는 사람이니까, 본능적으로 더 만들고 싶어한다. 나는 기능 목록을 정리한 뒤에 반을 지운다. 그리고 남은 것에서 또 반을 지운다. 이렇게 해도 남는 것들이 진짜 핵심이다.
30개 기능의 미완성 앱보다 3개 기능의 완성된 앱이 100배 낫다.