우아한테크코스 맛집 탐방 서비스
우아한테크코스에서는 3, 4레벨에서 팀 프로젝트를 진행합니다. 다만, 우아한테크코스 4기에서는 별도의 사이드 프로젝트가 하나 있는데요. 바로 우아한테크코스 맛집 서비스입니다.
우아한테크코스 내의 선릉, 잠실 두 개의 캠퍼스에 존재하는 맛집들을 크루들과 공유할 수 있는 서비스인데요. 우여곡절 끝에 어떻게 작은 아이디어에서 프로젝트를 완성도 있게 풀어나고 있는지에 대해서 이야기해보려 합니다.
때는 2 레벨, 테크코스 교육을 진행한 지 3개월 즈음 넘어갔을 때인데요. 한창 스프링을 배우고 있던 도중 무엇인가 직접 만들어보고 싶다는 생각을 하게 되었습니다. 스프링 프레임워크를 직접 배우기는 했지만, 배운 내용을 바탕으로 서비스를 빨리 운영하고 싶다는 생각이었죠.
그때 주제로 잡게 되었던 것은 "우아한테크코스 내에서 해결하고 싶은 문제"였어요. 엉뚱하게 커다란 도메인을 잡는 것이 아닌, 미션에서 매번 배우던 실제 문제 해결 영역을 다루고 싶은 것이었죠. 당시 크루였던 오찌와 이런저런 이야기를 하다 보니 음식점에 대한 이야기를 하게 되었습니다.
재택을 하던 1 레벨 때와는 다르게 2 레벨 오프라인 수업을 진행하다 보니 점심 메뉴를 정하는 게 고비였어요. 네이버 검색만으로는 너무 많은 음식점이 나왔고, 동나이대의 크루들 입맛을 맞추기에는 다른 리뷰 서비스들이 많았거든요. 우선적인 주제로는 우아한테크코스 캠퍼스 근처의 맛집 찾기였습니다.
이제 여기에서 조금씩 주제를 확정시키기했어요. 선릉에서는 선릉 나름대로의 음식점 리스트가 있었고, 잠실에서도 잠실만의 리스트가 있었어요. 다만 흩어져있는 각 캠퍼스의 음식점 목록들이 존재했고 이들을 통합하는 서비스를 만들자!로 주제가 결정된 거죠.
뜻 맞는 크루들과 모여서 TF팀을 만들고 어떻게 프로젝트를 만들어가야 할지를 정하던 때였어요. 생각보다 다양한 의견이 나왔고 점점 생각한 것보다 프로젝트의 방향성이 이상해지기 시작했어요.
- 맛집 목록이니까 일단 맛집 리스트를 보여주자
- 맛집에 대한 리뷰도 작성해야겠네?
- 리뷰 수정 기능, 삭제 기능도 만들어야 하나?
- 리뷰마다 평점이 필요하네?
- 근데 오늘 뭐 먹어야 하는지 모르겠으니 랜덤 음식점 소개는?
- 음식점 추가 요청도 해야 하네
- 음식점 추가 요청에 따른 어드민 페이지는...?
- 배포도 자동화해야겠는데
간단하게 만들자 했던 프로젝트의 무게가 조금씩 무거워지기 시작했어요. 혼란한 와중 MVP 방식의 개발 방법이 떠올랐습니다.
사람들이 필요로 하는 핵심 기능을 구현하고 피드백받으며 개발하자
여러 가지 고민하면서 장황하게 프로젝트를 설계하는 것이 아닌 말 그대로 최소한의 보이는 프로덕트만 개발하는 방법론입니다. 완전한 프로젝트를 만드는 것은 생각보다 쉽지 않고, 들이는 시간에 비해서 실제 고객의 요구사항과는 다른 경우 진행했던 프로젝트의 시간이 낭비되는 경향이 있습니다.
따라서 최소한의 요구사항을 파악하고 이를 빠르게 서비스화하여 필요한 기능을 계속해서 피드백받으면서 개발하는 방법입니다.
여기에서 가장 중요한 단어는 두 가지입니다. 최소, 서비스화
서비스를 사용할 사용자가 최소한으로 요구하는 기능을 충족하여 개발합니다. 프로젝트의 복잡도를 올리는 것을 최소환으로 하는 것이 중요 목적인 거죠.
위에서 이야기했던 많았던 의견 중 필요로 하는 최소 요구사항을 먼저 나열하기로 하면,
- 맛집 리스트 디스플레이
- 리뷰 작성
- 리뷰에 따른 평점 정보 확인
으로 최소화할 수 있을 것 같아요.
아이이디어로써 남겨두었던 내용을 실체화해야 합니다. 최소도 중요하지만 서비스화가 생각보다 많이 중요한 내용이라고 생각하는데요.
어떻게 개발할지를 계속 고민하며 미루기보다 서비스가 어떤 동작을 할지를 위주로 생각하며 기간 산정 후 빠르게 서비스화하는 것이죠.
실제로 초기 MVP 모델에서 3가지 기능이 나열되었을 때 약 3주간의 기간을 상정하고 개발-테스트-배포를 진행하였습니다. 아마 어떤 개발론을 담을지, 어떤 아키텍처를 다룰지를 고민했더라면 개발 기간만 늘어나 세상에 나오지 않는 서비스가 되었을지도 모르겠네요.
처음 이야기한 대로 MVP는 사람이 필요로 하는 핵심기능을 빠르게 구현하는 데 있는데요. 여기서 빠르게 핵심 기능을 구현하게 된 이유는 구현 후 받을 피드백을 통해서 기능을 개선하기 위함에 있습니다.
개발과정에서 아무리 기획을 하더라도 실제 사용자들은 그 흐름에 맞추어 사용하지 않는 경우가 많기 때문입니다. 따라서 빠르게 3주간 개발을 진행하여 그대로 크루들에게 배포한 후 크루들의 관심사를 파악하는데 주력했어요. 불편한 기능은 없는지, 좋은 기능은 없는지 등과 같이 말이죠.
실제로 이 과정에서 의도치 않는 관심을 많이 받을 수 있었어요.
리뷰 작성의 경우 팀 내에서는 작성 후 수정에 대해서 관심이 없다고 판단했지만 관련된 피드백이 많았고, 식당 추가 또한 저희가 실시간으로 dm으로 받기에는 너무 많은 양과 불편함이 있었죠.
따라서 이를 통해 다음 MVP 주제를 잡으며 프로젝트를 이어갔습니다.
각자 팀원들이 우아한테크코스 소속 메인으로 하는 프로젝트들이 있다 보니 계속해서 matzip을 개발하기에는 한계가 있었어요. 다만 팀원 각자가 MVP 기반의 프로젝트 개발에 익숙해있고 서로 장점을 잘 알다 보니 꾸준히 MVP 기반으로 틈틈이 개발하고 있습니다. 레벨과 레벨 사이의 방학을 통해서요 :)
첫 방학 때는 릴리즈 1.0를 통해 최초 기능을 배포했어요.
두 번째 방학 때는 첫 배포 때 받았던 피드백을 고쳐나가는 방식을 이어나갔어요. 작성한 리뷰 수정, 식당 추가 요청, 그에 따른 어드민 페이지가 있었습니다.
현재 다음 작업으로는 내년에 올 5기가 사용할 수 있도록 성능적인 부분에 대한 최적화 작업을 진행하고 있어요. (블링이 만든 식당 랜덤 룰렛도 있구요!)
MVP 프로젝트 개발을 진행하면서 가장 많이 와닿았던 부분은 혼자서 과도하게 설계하는 것보다 의외로 빠른 개발과 빠른 피드백이 기능 개발에 더 도움이 될 수도 있다는 것이었어요. 물론 탄탄한 설계도 중요하지만 서비스는 사용하는 사람을 위한 제품이지 개발자 혼자서 소유하는 제품은 아니기 때문이라고 생각해요.
짧은 기간 동안 진행했던 사이드 프로젝트이지만 서비스화하는 과정에서의 개발자만으로서가 아닌 제품을 만드는 사람으로서 서비스를 바라볼 수 있었던 좋은 기회였던 것 같습니다 :)