'지금 내가 잘 하고 있나?'를 묻기 시작하고, 그 시작점에서 이제까지의 일들을 돌아보는 시간을 가져야겠다고 생각했다. 또 더욱 시간이 지나 기억이 흐려지거나, 왜곡되지 않도록 하기 위해서 기록을 남기고자했다. 혼자 메모장에 적어 남기는 것보다 누군가에게 설명하거나 보여줄 수 있을 정도로 정리해야 시간이 지나고 나에게도 도움이 된다고 생각하여 글로 정리하게 되었다.
대학 4학년을 올라가면서 실무 경험을 쌓고 싶어 학점 교류 인턴을 시작으로 일을 시작하게 되었다.
학교에서 배움도 좋았지만 정말 개발자로 일하고 싶은지 의문이 있어 이를 해소하고 싶었다.
처음 들어갔을 때는 현재와 다르게 비대면 피트니스 서비스 이미 진행 중에 있었다. 6개월쯤 후에 해당 아이템을 피벗하고, 현재 진행 중인 다이어트 식단 추천 서비스를 시작하게 되었고 초기 기획부터 PMF, MVP를 찾는 실험들과 오픈배타 진행과 A시리즈 투자를 경함하고 운영 단계를 앞두고 있다.
2년간 했던 업무들을 돌아보면 '필요해서 했다'라고 정리가 된다. 여기서 필요해서 했다는 수동적 의미에서 필요한 업무만 했다가 아니다. 일을 시작하면서 느낀 건, 모든 것은 비즈니스의 성장으로 이어져야 한다는 것이었다. 따라서 기획적으로 정의된 일 외에도 팀 전체의 업무 효율을 높이기 위해 문제가 되는 것들을 정의하고 해결해야 하는 환경이었다. 투입한 리소스 대비 좋은 성과를 거두어 소득이 아닌 이윤에 초점을 맞추게 되었다.
개발 업무 (시간 역순)
데이터 수집 파이프 라인 구축
why?
기존에도 필수라고 생각한 api요청에 대해서는 RDB에 저장해두고 사용했다. 하지만 모든 데이터를 로그로 기록하고 있지 않아(업데이트 방식) 중간 변화 데이터가 유실되었다. 뿐만 아니라 로그로 기록하고 있지 않았던 데이터들과 단순 버튼 클릭의 데이터도 수집하고 데이터 분석과 모델링에 인풋 혹은 라벨링에 사용할 목적이다.
how?
우선 데이터 파이프 라인에 대해서 아는 것이 없었기 때문에 빠르게 강의를 듣고 병렬적으로 staging서버에 적용해보며 업무를 진행했다. 결과적으로 kafka와 API gateway/kinesis 각각 써보고 지금 단계에서는 API gateway/kinesis가 초기 세팅이 더욱 편하고 cloudwatch를 이용해서 모니터링이 편하다는 점에서 선택하게 되었다
추천 시스템
why?
피벗을 하면서 기존 유저들이 다이어트 식단에 요구가 많음을 알게 되었다. 매번 사람이 맞춤 식단을 짜줄 수 없으므로 이를 해결할 추천 시스템이 필요했다.
how?
영양사님과 협업하여 식단에 필요한 영양적인 규칙 + 좋은 식단을 위한 규칙들을 정의하였다. 기성품으로 이뤄진 식단에 대한 평가 데이터가 없을 뿐만 아니라 최소한 적은 리소스를 들여 유저들의 반응을 보는 것이 우선이었다. 따라서 사전 정의된 '끼니'단위의 데이터를 RDB에 저장하여 Django ORM + python code로 이를 조합하는 방식을 통해 구현했다. 이후 유저 테스트/인터뷰를 진행하며 얻은 피드백과 추천 알고리즘을 참고하여 numpy array를 이용한 점수 시스템, 최근엔 deep learning으로 고도화하였다. (자세한 내용은 따로 다룰 예정이다)
result?
단계적으로 시스템을 고도화시킴에 따라 초기 테스트를 빠르게 진행할 수 있었다.
마케팅을 진행하지 않았음에도 결제전환율이 10%대를 유지하며 2회차 재구매율이 50%을 달성할 수 있었다.
고도화를 통해 처음 5~6초 이상 서버 리소스를 잡아먹던 추천을 2초대로 줄일 수 있게 되었다.
물류/영업팀의 식품 입점을 위한 대시보드
why?
추천의 성능은 보유하고 있는 식품에도 상당히 많은 영향을 받는다. 우선 최대한 많은 양의 식품을 보유하는 것이 좋긴 하지만 공헌이익 관점에서도 좋지 못하며(지금 상황에서) 대량 주문이 들어오는 것이 아니므로 입점을 유지하기 힘들다. 따라서 추천에 영향을 최소한으로 주는 정도의 식품을 보유해야하지만 어떤 종류의 상품을 입점하고 해지해야 할지 참고할 지표가 없어 의사결정을 감으로 해야 했다.
how?
이를 해소하기 위해서 식품 카테고리별 건전성 지표(지난 1달간의 판매/추천 데이터를 활용한)와 현재 보유중인 물품의 수를 비교하는 그래프를 제공하였다. 후에 카테고리 단위에서 머물지 않고, 상품단위의 최근 1달간의 추천 / 판매 정황을 볼 수 있는 표를 제공하였다.
result?
물류/영업팀의 의사결정에 있어서 감이 아닌 데이터를 참조할 수 있는 환경을 구축하였다
백오피스
면접 일정 관리(일정 조율 및 메일링)
why?
이전 채용 플로우가 거의 없었으며, 채용 과정부터 좋지 않은 인상을 심어주는 것을 개선하고 싶었다
how?
채용 단계별로 필요한 메일 양식을 정하고 채용에 필요한 주의사황과 업무 플로우를 팀원들과 공유하였다
result?
팀별로 채용 과정에서 업무 진행이 꼬이는 것을 방지할 수 있었다
각 팀 리더들의 채용관리에 들어가는 리소스를 줄여 중요한 의사결정에 집중할 수 있도록 도움을 주었다
사내 온보딩 구축
why?
입사 이후에 첫인상에 대한 피드백을 듣고 이를 개선하고 싶었다
how?
온보딩과 관련된 웨비나에 참석하여 다른 회사들의 온보딩 프로세스를 참고하였다
첫인상을 좋게 하기 위해 신입 사원의 자리를 미리 셋팅 + 팀 리더들의 손 편지를 제공하도록 하였다
이름표를 작성하여 이름을 몰라 업무 요청에 딜레이가 생기는 것을 해소하였다
result?
신입사원들의 온보딩에 대한 부정적인 피드백이 사라졌다
업무에 빠르게 적응하는 데 도움을 줄 수 있었다
Keep
- 기술에 집착하지 않고, 어떻게 문제를 풀어나갈 것인지 '솔루션'에 초점을 맞춘 것
- 왜 내가 이 일을 하고 있는지 스스로 질문하는 것
- 팀원들에게 먼저 티타임을 요청하여 이야기할 시간을 갖는 것
- 도움이 필요한 곳에 주도적으로 나서는 것
- 체력관리를 위해서 아침 시간을 이용해 꾸준히 운동하는 것
- 조금이라도 성능 향상을 하고자 집요하게 매달린 것
Problem
- 업무 시간 외에 개인 공부 시간이 부족한 것
- 개인 공부 및 업무에서 어떤 식으로 문제를 해결했는지 기록(아카이빙)을 하지 않은 것
- 의존하지 않고자 너무 혼자서 일을 해결하려고 했던 것
- 일에서 감정을 배재하지 못한 적이 있는 것
- 약점 보완에만 너무 신경을 쓴 것
2년의 시간 동안 팀에 필요한 일 중에서도 내가 잘 할 수 있는 일을 하면서 조금씩 직무에 변화가 있었다. 지금에 와서는 앞으로 데이터와 관련하여 더 많은 일을 경험하고 성장하고 싶다. 데이터 직무와 근접한 업무들을 하며 얻었던 경험들 특히 팀원들에게 도움이 되고 내 존재 가치를 느낄 수 있는 순간들이 많았기 때문이다. 더욱 성숙하고 프로다운 개발자들을 만나며 많은 것을 배우고 싶다. 더 나아가서는 그런 사람이 되어 내가 쌓아온 경험으로 도움을 줄 수 있는 사람이 되고 싶다. 처음에는 일을 할 수 있다는 것에 감사하고 시간이 지나면서는 일하는 의미에 대해서 많은 질문들을 하게 되었다. 그럴 때마다 내 옆에 나보다 훨씬 뛰어난 동료들을 보면서 다시 마음을 다잡기도 했지만, 그들을 떠나갈 때마다 더 크게 흔들리기도 했다. 그러다 보니 '여기 왜 있는가?'에서 '왜 스타트업을 하는가?'로 질문이 넘어가게 되었다. 이 글을 정리하는 지금도 솔직히 두렵기도 하고 무섭기도 하다. 스스로 확답을 내릴 수는 없지만 지금 찍는 점 하나하나들이 나중에 이어지는 날이 있을 것이라 믿는다.