토이 프로젝트를 완성하려면 얼마나 걸릴까?

사이드 프로젝트뿐만이 아니다. 실제로 개발 공정이 들어가는 모든 프로젝트에 해당하는 얘기라고 생각한다. 심지어 회사에서도.

토이 프로젝트는 학생, 백수, 직장인 누구라도 남는 시간을 쪼개서 무언가를 만드는 작업이다. 일반적으로는 노는 시간을 빼거나, 문화생활을 즐길만한 여유시간을 할애하여 조금씩 개발하는 것을 말한다. 아마도 많아 봤자 하루에 4시간을 넘기가 어려울 것이다. 퇴근하고 집에 와서 몸 좀 눕히다 보면 밤 10시를 훌쩍 넘는 이 바닥의 생리를 아는 사람이라면 말이다.

그래서 하루 1~2시간씩 일해보는 수준을 토이프로젝트라고 부르기는 하는데, 문제는 인간의 욕심은 끝이 없어서 프로덕트 레벨에 가깝게 완성도를 높이려면 일정이 계속 딜레이 될 수 밖에 없다. 실제로 하고 싶은 걸 다 기획에 집어넣고선 6개월, 1년씩 리소스를 투입하는 경우들이 많기도 하고.

그 프로젝트들은 모두 성공했을까? 프로젝트를 런칭한 것이 성공한 것일까? 버그가 없는 것이 성공한 것일까? 개발 프로젝트를 진행하면서 가장 중요한 건 무엇보다 사람이고, (하지만 컴퓨터 사양도 중요하다(읍읍)) 사람이 지치지 않게, 꾸준히 일할 수 있도록 정신과 체력의 완급조절을 하는 것에 모든 것을 집중해야 한다. 호랑이도 100일 동안 마늘 먹기를 포기했는데, 사람이 100일 동안 꾸준히 퍼포먼스를 내면서 지적능력을 쏟아내기란 쉽지 않다.

그래서 정말 길다면 3개월, 짧다면 1개월 이내에 프로젝트를 마무리해야 한다.

오해하진 마시라. 1년 개발할 것을 3개월에 하자는 이야기가 아니다. 1개월 개발할 것을 1개월에 개발하자는 것이다. 혹은 1개월에 개발할 수 있는 만큼만 개발하자는 것이다. 일정을 픽스해두면, 아무리 많은 기능이 있어도 정말 이번 달 안에 끝내서 런칭해야 하는 기능들에 선택과 집중을 할 수 있고, 일정을 늘릴 수 있거나 정해진 태스크들을 밀어내는 소위 이거 먼저 해줘요. 건들이 난입하는 것을 막을 수 있다. (하고 싶어? 그럼 이건 빼야 해. 다 가져갈 순 없다.)

애자일의 이터레이션이 그렇고, 스크럼의 스프린트가 그렇다. 기간과 비용을 제한하고, 퀄리티를 포기하지 않고, 구현할 수 있는 기능은 할 수 있는 만큼만 넣어서 돌리는 것. 2주가 보통이라고 하지만, 나는 4주의 기간을 기본으로 가진다. 회사에서도 실제 프로젝트를 매니징할때에도 한 달을 주기로 릴리즈 일정을 가져가고 있다.

어쨌든, 짧은 주기로 프로젝트를 반복하면 짧은 기간에 집중해서 퍼포먼스를 낼 수 있고, 프로젝트가 산으로 가는 것도 막을 수 있고, 다음 프로젝트의 방향성을 정하는데에도 의사결정에 도움을 준다. (이번 프로젝트는 성공했군! 다음엔 뭘 하는 것이 맞을까?) 무엇보다 단거리 전력질주 후에 한 번 숨을 몰아서 쉬는, 그 마침표가 모두에게 중요하다.


이상한모임

이상한모임 공식 앱을 런칭하다. (다운로드)

작년 12월 말. 거의 모든 파트가 동시에 달리기를 시작했다. 서버, iOS앱, Android 앱, 웹뷰, 컨텐츠 운영을 위한 어드민 페이지까지. 디자인은 하루걸러 하루마다 바뀌었고, 기획서는 디자인이 완료되고 한참 개발 중인 와중에서야 완성됐다. 이렇게 짧은 기간에 프로세스도 체계도 없이 진행하는 사이드 프로젝트에 있어 가장 중요한 것은 서로에 대한 작업방식의 이해와 서비스에 대한 이해다. 나를 포함하여, 프로젝트에 참여한 5명은 모두 다른 지역에서 산다. 행아웃으로 킥오프를 했고, 채팅과 위키와 이슈로 비동기 커뮤니케이션을 했다. 누군가가 바쁘면 무한 대기를 타야 함에도 불구하고 각자 해야 할 일을 했다.

까놓고 보면, 아니 설치만 해봐도 아는 아무것도 없는 앱이지만, 첫 버전에는 커뮤니티서비스를 함에 있어 가장 기본적인 골격을 세우는 것이 목적이었다. 단지 그뿐이었다. 플랫폼으로써 역할 할 수 있는 유저베이스를 위해 가입과 로그인, 로그아웃의 기능이 필요했다. 이상한모임은 그간 만들어온 많은 컨텐츠를 한 번에 담아둘 곳도 없었고, 정리되어 있지도 않아 일단은 아무것도 하지 않았다(...). 그래서 공지사항 하나. 그리고, 그 공지사항을 효과적으로 전달할 수 있는 푸시. 서비스라고 하기엔 기능이 없지만, 프로젝트 첫 런칭은 기초공사에 해당해서 눈에 보이지 않는 작업이 엄청 많다. 이슈도... 커밋도... 우리 개발자들 고생했다. 앞으로도 지금처럼만 고생하자(읍읍)

/server
web

/android
Android

/ios
swift

/design
design

사실 사이드 프로젝트라고 하기에는 투잡에 가까우리만큼 빡빡한 스펙과 일정이었다. 매일 퇴근하고 집으로 달려가 새벽 3-4시까지 작업하고 4시간 남짓을 자며 출근하길 1달. 주말에는 아침에 일어나 새벽 5시까지도 달리는 일이 허다했다. 심지어 해외는 시차가 2시간이나 빨라 한국 새벽반이 눈감을 때쯤 호주 아침반 개발이 시작되어 24시간 개발이 돌아가는 날도 허다했다. 고생했다는 것을 자랑하기보단, 작은 성공의 열매를 맛보았다 얘기하고 싶다.

프로젝트를 성공하게 하는 것도 망하게 하는 것도 프로덕트 매니저의 역할. 일정을 지킬 수 있었던 것은 처음에 기획했던 규모 있는 스펙들을 쳐내서 개발 규모를 10%만 남긴 걸로 리부트한 것도 있다. 그런데도 불구하고 막바지에 일정을 지킬 수 없었고, 우선순위가 낮은 태스크들을 스펙아웃 시키고, 크리티컬 이슈만 최우선으로 정해 마무리했다. 서버에서 별도로 처리해줄 수 있는 부분들은 런칭 후 작업으로 미루었다.


사실, 두 번의 실패가 있었다. 2년 전부터 이모 플랫폼을 만들려고 운영진의 20명 남짓한 스탭들로 개발팀으로 꾸려보기도 했고, 가까운 사람들만 모아 개발팀을 두 번째 꾸려서 첫 삽을 떠보기도 했다. 하지만 차고 넘치는 욕심꾸러기 운영자에게 많은 개발자가 사이드 프로젝트를 뛰어야 하는 타당성도 부족했고, 반드시 해야만 하는 당위성도 부족했다. 그게 지금이어야만 하는 타이밍적인 설득도 부족했고.

그런 시행착오 끝에 이번에는 눈 딱 감고 전력 질주했다. 각 파트별로 한 명씩. 기획과 디자인과 컨텐츠 준비를 나 혼자 했고, iOS개발을 혼자 했고, Android 개발을 혼자 했고, 백엔드 인프라와 API를 혼자 했고, 웹 프론트를 혼자 했다. 우리 모두의 팀웍은 중요했지만, 같은 파트의 누군가와 함께 손잡고 달릴만한 팀웍을 다질 시간은 없었다. 배수의 진을 치고, 딱 한 달. 우리는 그렇게 마침표를 찍었다.

그리고 다시 다음 마일스톤 열러 간다. 다음 달의 나는 어디까지 가 있을지. 어디에 마침표를 또 찍을지. 곧 돌아오겠다.

적게 일하고 많이 버는 법을 늘 고민합니다. 일이 되게 하는 것에 간혹 목숨을 겁니다. 지금은 우아한형제들과 함께 일하고 있어요.