코드이그나이터4 마크다운 블로그 MVP 만들기 - 1- 린 스타트업 방법론

koeunyeon·2021년 4월 6일
0

마크다운 블로그 MVP 만들기

마크다운 블로그 시스템 기획하기

린 스타트업 방법론

많은 기업들은 제품을 출시하기 전에 프로토타이핑을 합니다.

  1. 제품이 소비자들에게 어필할 수 있을 지 최소 기능 제품(MVP - Minimal Value Product)을 만든 후 먼저 시장에 출시해 봅니다.
  2. 시장의 반응을 측정합니다.
  3. 시장의 반응에 따라 MVP를 발전시킬지,
  4. 혹은 사업의 방향을 바꿀 지를 결정합니다.

특히 자본이 한정되어 있고, 아이디어가 빠르게 시장에 나오는 것이 중요한 스타트업들에게는 퀵 앤 더티(Quick and Dirty - 빠르지만 지저분한)라고 불리는 이 방법론이 효과적일 때가 많습니다. 이 방법을 소개한 린 스타트업 은 스타트업들의 바이블이 되었습니다.

하지만 유의할 것이 있습니다. 3의 시장의 반응이 좋을 경우, 기업들은 더 빠른 속도로 더 많은 기능을 붙이기를 선택합니다. 그리고 대부분 실패하죠.

이유는 단순합니다. 더 많은 기능을 붙이는 것은 이미 "최소"가 아닙니다.
프로그램의 복잡도는 크기와 선형적으로 비례하지 않습니다. 프로그램의 규모가 두 배가 커지면 복잡도는 최소 3-4배 이상 증가합니다.
따라서 2에서 3으로 넘어가는 과정(시장의 반응을 측정 후 MVP를 발전시키는 과정)에서 더 빠른 속도로 , 혹은 최소한 처음 만들었던 속도만큼이라도 유지하는 것 또한 쉬운 일이 아닙니다.

퀵 앤 더티라는 단어의 어감에서도 볼 수 있듯이, 첫번째 MVP는 빠르게 만들었지만 코드는 지저분합니다. 지저분한 코드는 유지보수하기 어렵고, 여러 곳에 같은 논리가 분산되어 있으며, 부수효과(사이드 이펙트 - side effect)가 어디서 터져나올 지 모르는 폭탄덩어리가 됩니다. 그러므로 규모를 키우기 전 반드시 코드를 정리하고 아키텍쳐를 다듬는 시간이 필요합니다. 클린 코드를 위한 리팩토링이라고 부르는 이 시간을 잃어버리면, 러시안 페인트공처럼 속도가 점점 앞으로 나가는 속도가 느려질 테니까요.

처음부터 클린 코드로 만들면 되지 않느냐고 반문할 수도 있습니다. 물론 가능합니다. 하지만 클린 코드는 출발은 느리지만 멀리 갈 수 있는 마라톤 같은 것인데 반해, 퀵 앤 더티는 단시간에 엄청 빨리 달려나가지만 오래 뛰는 것은 불가능한 단거리 달리기 같은겁니다. 처음부터 클린 코드로 만드면, 첫번째 제품이 출시되기도 전에 경쟁자들은 이미 2-3번째 버전을 내놓았을 가능성이 높습니다.

개발자들에게 희망 혹은 절망이 되는 건, 사실 대부분의 프로젝트는 2단계(시장에서 반응이 좋지 않음)에서 멈춘다는 겁니다. 아무리 열심히 시장조사를 하고 번뜩이는 아이디어를 첨가해서 본인 혹은 투자자의 투자를 이끌어냈다고 해도 시장이 반드시 반응한다는 법은 없습니다. 아마 2단계에서 3단계로 넘어갈 수 있는 제품은 (기존에 따라 다르겠지만) 아무리 높게 쳐 줘도 5% 미만일 겁니다.

만약 4로 사업의 방향을 바꾼다면 어떻게 될까요? 쉽습니다. 다시 1(MVP 처음부터 만들기)로 가면 됩니다. 하지만 많은 대표님들께서는 2에 대한 미련을 못 버리고 1이 아니라 1-1, 1-2로 빠지기를 원합니다. 방향을 선회하는 것은 올바른 선택일지도 모르겠으나 문제는 1-1, 1-2 등 그 대안이 시장에서 외면받은 제품과 별 차이가 없기 때문에 다시 4로 올 가능성이 농후합니다.
대표님 입장에서는 "우리는 이미 1이 있으니 1-1을 만드는 것은 쉽지 않겠는가?" 라고 생각할 수도 있는데 개발자 입장에서 "코드가 정리되지 않은 1을 기반으로 1-1을 만드는 것은 아무것도 없는 상태에서 1을 만드는 것보다 더 오래걸리는 일"이 됩니다. 따라서 이런 상황에서는 그냥 1을 버리거나 내버려두고 다시 시작하는 게 오히려 이득일 때가 많습니다.

우리도 첫번째 프로그램은 퀵 앤 더티로 만듭니다. 볼품 없고, 그저 동작만 하죠.
그리고 나서 프로그램을 유지보수하기 쉽도록 리팩토링해 보겠습니다.

profile
스타트업에 관심이 많은 10 + n년차 웹 개발자. 자바 스프링 (혹은 부트), 파이썬 플라스크, PHP를 주로 다룹니다.

0개의 댓글