당근런치를 만들어봤어요
때는 2021년 5월,
당근마켓 iOS팀에서는 엔터프라이즈 배포를 한창 준비중이었어요.
당근마켓 iOS팀에서 애플측에 사내에서 사용할 서비스를 제공하기 위해 엔터프라이즈를 신청 했었고, 어떤 사내 서비스를 만들어 볼지 동료들이 같이 고민을 했었어요.
제 머릿속에는 항상? 재미난 짓을 벌일 마구니?가 잔뜩끼어있었어요. 😈
초기에 동료들 사이에선 여러 아이디어들이 나왔었어요.
- 사원증?앱
- 신사옥 지도 앱
- ???? 등등
수 많은 아이디어를 고민하는 도중 문득 떠오르는 아이디어가
19년 6월부터 시작해서 Notion을 통해서 강남역 인근의 맛집을 정리했었던 것이였는데, 이것이 저의 좌뇌엽을 통과에 우뇌엽을 쎄게 때려줬어요. 🔨🔨🔨
최근, notion API도 beta로 나왔는데 이런 부분들도 활용해서 사내앱으로 배포하면 좋겠다 싶어서 저는 곧바로 총대매고 작업에 들어가기 시작했어요!
처음엔 SwiftUI로 가볍게 만들어 볼려고 했었지만, 🐻🐻히 생각해보니 사내에서 대부분 아이폰을 사용하기는 하지만, 안드로이드 기종을 사용하는 동료들도 제법 있었어요.
그래서,
최근에 개인적으로 맛좀 봤던 flutter를 이용해서 안드로이드랑 iOS를 동시에 출시하면 좋겠다는 생각이 들어서 망설임 없이 레포를 파고 미친듯이 코드를 써내려가기 시작했어요. 🧑💻
구조
초기에 생각했던 당근런치 스펙은 생각보다 단순해요!
서버 호스팅이나 DB없이, 최대한 사용할 수 있는 자원들로 초기스펙을 구축하기 위해서 slack incoming-hook을 이용해서 체널에 런치트레인을 만들 수 있도록 열어두고, DB대신 notion의 문서를 사용할려했지만, 아직 beta여서 빠른 고민 끝에 그냥 google spread sheet를 사용했어요 + 파이어베이스를 곁들인..
이 정도면 하루 이틀이면 끝날꺼 같은 느낌들었지만, 동료들이 사용하게 되는 스토리를 머릿속에 시뮬레이션 하다보니 생각보다 많은 기능들이 필요하다는 것을 깨닫게 되는데…
- 단순 피드로 제공할려했지만, 많아지게 되면 검색도 필요하고..
- 스프레드 시트가서 매번 등록하는 건 몹시 접근성이 떨어지니, 맛집 등록 폼도 개발해야하고…
- 맛집 위치를 지도에서 볼 수도 있어야하고..
MVP! MVP! MVP!
기획을 하다보면 욕심은 많아지기 마련! 머릿속에는 수 많은 awesome한 기능들이 당근런치에 녹아있지만, 2년 동안 당근마켓에서 프로덕트를 개발하는 과정속에서 이미 몸에 베어버린 minimum viable product로 서비스를 만들자는 정신간에 충돌하는 과정속에서 다음과 같이 트레이드오프를 맞춰서 최종 스펙을 결정지었어요!
검색
- 검색한 단어를 기준으로 가게이름과 주요메뉴를 기반으로 그냥 검색 피드에 보여주자.
맛집 등록폼
- 가게이름, 주요메뉴, 주소 딱 요렇게 3가지만!
- 맛집 평가는 직접만들지말고 대충 rating UI관련 pub 아무거나 주워다 쓰자. (소름돋게도 그런 pub이 있었어요. 🤪 holymoly)
피드
- 추천시스템 뭐 그런거 없고 그냥 등록한 순서대로 뿌리자.
- 그래도 모바일 개발자인데, 안드로이드/iOS갬성에 맞춰서 디자인하자..
지도
- 네이버 map SDK써서 넣어서 화면 기반작업하면 되긴한데, 요 시간도 줄여서 다른 기능들 최소스펙으로 만들기 위해 시간확보하고 대신 google map 스킴활용해서 구글맵으로 이동시켜주자.
디자이너를 찾습니다
그렇게 하루 30분~1시간씩 투자해가면서 이리저리 삽질도 하고 UI 컴포넌트 재사용과 나름 아키텍쳐를 고민해가면서 개발한 끝에 첫 쇼케이스를 만들게 되었어요. 🎉
이제부터 중요한건 프로덕트 디자이너의 매직!이 필요할 때여서 채용?공고도 올렸지만…
결론적으로 함께 해주실 디자이너를 찾지 못했어요... ㅠㅠ 프로덕트 디자이너분들 다들 바쁘시고 현재 여섯분 밖에 안계셔서 여유가 없으셨어요. (아니면 관심이 없었을지도?)
그래서!
저 같이 아이디어 뽱뽱넘치고 손빠른? 개발자들과 함께 당근마켓을 만들어 나갈 디자이너분을 찾습니다. (david@daangn.com 이메일로 연락주셔도 좋아요). (물론, 저같은 개발자말고도 다른 좋은 분들도 함께 하고 계세요 :])
함께해야 즐거운 법
당근마켓 iOS팀에는 참 다양한 동료들이 살고 있어요. (동료자랑, 동료사랑)
- 개발욕심 많고 정말 말 많고 iOS 아키텍쳐 장인인 개발자 마티
- DevOps에 능숙하면서도 서비스 개발도 잘하는 인간?컴파일러 레이
- 한번 물은 거는 놓치지 않고 집요하고 깊게 파고 드는 과정에서 항상 행복을 느끼는 개발자 다니엘
다들 한가지 만큼은 남들보다 뛰어난 능력이 있으신 분들이다보니, 당근런치 개발하는 과정에서 생각보다 많은 도움을 받았어 굉장히 좋았어요!
마티는 평소에 Slack API를 다룬 적이 없었고 해볼 기회를 호시탐탐 노리고 있었던 상황이어서 마티가 당근런치 로그인 기능을 개발해주셨고,
레이는 엔터프라이즈 배포 파이프라인을 준비하고 있던 상황이여서, 레이한테서 도움을 받아가면서 당근런치 엔터프라이즈 배포 파이프라인을 구축했어요!
남은 다른 분들은 하고 계시던 일이 너무 바쁘셔서 응원을 열심히? 해주셨는데 정말 고맙습니다.
역시 개발은 함께해야 즐거운 법!
첫 테스트 그리고 한계
코드는 거짓말을 하지 않듯이 내가 원하는 대로 잘 동작했어요. (자화자찬)
하지만, 세상이 다 그렇듯 유저?(동료)분들은 내가 생각했던대로 사용되지 않았어요….. 코로나 영향으로 인해서 재택 하시는 분들이 많은 것도 한몫 했지만… 무엇보다 경쟁?서버스들이@#?$#@$#@?
사실 당근런치 잘되고 안되고를 떠나서 동료들과 회사 일뿐만 아니라 이런 저런 소소한 개발도 하면서 교감을 쌓아 갔다는 점에서 큰 의미를 가진걸로 크게 만족해요 :]
마무리
앞?홍보 넣을까 뒷?홍보 넣을까 고민 했었지만, 이 글에서는 아래와 같이 3가지 포인트가 녹아있는 것을 보셨을거에요.
- minimum viable product로 서비스를 만들어 나가면서 지속적으로 프로덕트를 성장시키는 당근마켓 프로덕트팀의 고유 문화
- 인간미 넘치면서 뛰어난 능력을 하나씩 갖추고 있는 당근마켓 iOS개발자들 (저는 iOS팀에서 이상한?사람 역할을 맡고 있습니다)
- 아이디어를 실현할 수 있으며 자유롭게 성장할 수 있는 환경
당근마켓에서는 이처럼 재밌게 일을 하고 있으며 서비스 성장을 넘어서 본인의 성장까지 뼛속까지 체감하실 수가 있어요!
글을 읽고 계시는 iOS 개발자분 들 중 당근마켓에 합류하고 싶은 분이 계신다면 언제든 이메일(david@daangn.com)로 연락주세요. 👍
유용했던 pub종류
pull_to_refresh: ^1.6.5
cupertino_icons: ^1.0.2
flutter_platform_widgets: ^1.3.0
ionicons: ^0.1.2
fluttertoast: ^8.0.6
shared_preferences: ^2.0.5
flutter_signin_button: ^2.0.0
focus_detector: ^2.0.0
url_launcher: ^6.0.4
flutter_search_bar: ^2.1.0
flutter_rating_bar: ^4.0.0
google_sign_in: ^5.0.4