2023년 회고
요약
2023년이 끝났다. 좋은 습관과 방향의 중요성을 체감한 일년이었다.
어떤 지표라도 좋은 방향으로 꾸준히 실행하면 반드시 우상향한다. 반대로 나쁜 방향으로 꾸준히 실행하면 반드시 우하향한다. 회사에서의 목표 달성, 건강, 학습과 같이 중장기적으로 올려야 하는 지표를 올리기 위해 어떤 습관과 방향을 설정해야 하는지 계속해서 고민하고 실천했던 한해였다. 이 과정에서 목표를 달성하는 법에 대한 해상도가 높아졌다.
또 23년은 여행, 퇴사, 교생실습, 졸업과 같이 인생에서 자주 겪지 않지만 많은 생각을 하게 하는 이벤트가 여럿 있었다. 지금 당장 하는 일에는 도움되지 않을 것 같아도 장기적으로는 도움될 것 같다고 생각하는 일들이라 순간순간 최선을 다하려고 노력했다.
하이라이트
1) 여행 (2023.03.31. ~ 2023.04.09.)
8박 10일 동안 영국과 스위스로 여행을 다녀왔고, 소중한 사람과 정말 재밌게 놀고 왔다. 해야 하는 일은 항상 있었다. 그럼에도 지금 밖에 하지 못하는 경험을 위해 여행을 다녀왔다. 일을 며칠 더 하는 것보다 이 타이밍에 여행을 가는 게 장기적으로 더 의미 있다고 생각했다.
여행을 계기로 쉼의 중요성에 대해 다시 한 번 생각할 수 있었다. 일이 정말 많고, 머리가 꺼진다(사고하지 못한다)는 느낌을 받을 때쯤 여행을 다녀왔는데, 리프레쉬 한 직후 업무 효율도 오른 게 느껴지고 더 즐겁게 일했다. 다시 달릴 준비가 되었다고 느꼈다. 본인은 집에만 누워있는 휴식보다, 새로운 곳에서 맛있는 음식을 먹는 게 더 잘 충전된다는 것도 알 수 있었다.
원래 쉬지 않고 스스로에게 채찍질하는 편이다. '그 시간에 일을 더 하지'라 생각했는데, 쉬는 것도 일이라는 걸 상기할 수 있었다. 프로라면 꾸준하게 성과를 내야 한다. 높은 강도를 유지하면서도 꾸준히 성과를 내려면 무엇보다 신체, 정신적 스트레스를 잘 관리해주어야 한다. 바쁘고 닥친 일이 많을 수록 운동도 꾸준히 하면서 잘 쉬어야 한다.
2) 낮에는 선생님, 저녁에는 개발자. (2023.05.02. ~ 2023.05.26.)
대학 졸업 요건을 충족하기 위해 모교인 중동중학교에서 교생실습을 했다. 본전공이 체육교육이라 4주간 체육 교사로 근무했다. 감사하게도 회사에서 편의를 봐주어서 휴직하지 않고 실습과 회사를 병행할 수 있었다. 아침에 학교로 출근하고, 학교 퇴근과 동시에 회사로 출근했다. 편의를 봐준 만큼 책임을 지기 위해 낮에는 교생실습에 몰입하고, 저녁에는 회사 일에 몰입하려고 최대한 노력했다. 투잡을 뛰면서도 주당 40시간은 회사 일을 했던 것 같다.
30명 가까이 되는 학생들을 지도한 경험은 훗날 조직을 운영하거나 팀원을 코칭할 때도 도움될 것이라 생각했다. 대상이 학생이고, 장소가 학교라는 특수한 상황임을 감안하더라도, 다른 사람의 성장을 돕고, 행동을 이끌어낸다는 맥락에서 회사에서의 코칭과 유사한 부분이 있을 것이기 때문이다. 이런 마음가짐 덕분에 몸은 힘들어도 즐겁게 실습에 임할 수 있었다.
담당 선생님이 수업을 많이 위임해주셔서 첫 주 빼고 대부분의 수업을 진행했다. 수업은 강압적이지 않으면서도 늘어지지 않게 지도했다. 어떤 행동을 해야 하고, 어떤 행동을 하지 말아야 하는지 언어 혹은 비언어적으로 피드백을 주고받았다.
학생들의 공감을 이끌어내고, 신뢰를 쌓는 것이 무엇보다 중요했다. 이유 없는 처벌은 하지 않고, 모든 학생을 일관성있게 대하려 노력했다. 수업 중에 약속한 것은 꼭 지켰다. 수업 진도를 모두 소화하면 자율 체육 시간을 제공한다는 약속이 대단하지 않은 것처럼 보이지만 학생들은 사소한 약속이라도 교사가 지키는지 안 지키는지 다 기억하고 반응한다. 사소한 약속도 잘 지켜야 교사와 학생 간 신뢰 관계가 형성된다.
다른 누군가의 행동을 이끌어내고, 성장을 돕는 것이 참 재미있었다. 학생으로만 경험했던 공교육 기관에서 교사로 학생들을 지도해볼 수 있다는 것도 새로웠다. 학생 개개인과 더 많은 이야기를 나누지 못한 것은 아쉽지만 충분히 값진 경험이었다.
3) 팀러너스 퇴사 (2023.08.08.)
2023년 8월, 나의 첫 직장인 팀러너스를 퇴사했다. 10개월의 짧고 강렬한 경험이었고, 목표를 달성하는 법의 해상도를 높이는 데 도움을 주었다. 팀러너스는 제품 이터레이션 하는 방법을 배우고 싶어서 합류했다. 제품을 크게 성공시켜본 사람들과 일하면 가치있는 제품을 만들고 운영하는 법을 배울 수 있다고 생각했기 때문이다.
대부분의 초기 스타트업처럼 해야 하는 일에 비해 사람은 항상 부족했다. 덕분에 제품을 출시하고 개선하는 과정을 마음껏 실행해볼 수 있었다. 프론트엔드 개발, PO(Product Owner), 데이터 분석 등 제품을 성장시키기 위해 기여할 수 있는 일이라면 가리지 않고 다 했다. 이 과정에서 가장 핵심적으로 배운 것 하나만 뽑는다면 목표를 달성하는 방법이다.
어떤 목표이건, 달성하기 위해서 아래 과정을 반복하면 된다는 것을 배웠다.
- 목표를 수치화해서 지표로 표현한다.
- 예) 결제 전환율 30%
- 달성해야 하는 지표를 매일 매순간 본다.
- 대시보드, 슬랙 알림 등
- 지표를 올리기 위한 가설과 계획을 세운다.
- 작고 실행 가능한 단위로
- 빠르게 실험한다.
- 가설을 검증하는 데 필수적인 것만 실험
- 있으면 좋은 것은 다 빼고, 실험을 위해 없으면 안 되는 것만 남기기
- 데이터를 분석한다.
- 해상도를 높이기 위해 여러 측면에서 봐야함
- 시계열로도 보고, 팩터별로도 보고, raw data도 보기
- 3번으로.
우리 팀은 위 과정을 더 잘하기 위해 강아지를 돌보듯 지표를 돌보자는 마음으로 책상 옆에 지표 강아지 인형을 두곤 했다. 지표를 매일 보고, 지표에 대한 오너십을 갖자는 것이 골자였다. 이때 오너십은 지표를 유지하는 것을 넘어 책임지고 지표를 올리는 것을 뜻했다.
재직할 당시 팀의 목표는 Product Market Fit 달성이었다. PMF를 달성하기 위해 우리는 앱 웹 불문하고, 제품 20개를 찍어냈다. 일단 찍어내고, 싹이 보이는 제품을 디벨롭하는 방식이었다. 본인은 제품 공장에서 살아남은 두 제품인 타로언니와 피카부에서 프론트엔드 개발을 메인으로, 필요에 따라 PO를 맡았다.
타로언니
타로언니는 1:1 전화 타로 중개 플랫폼이다. 내 지표 강아지는 타로언니 ROI(Return on Investment) 강아지였고, 유일한 프론트엔드 개발자였기 때문에 프론트엔드 개발을 메인으로 하면서도 ROI 달성을 위한 기획/디자인/데이터 분석 등 백엔드 개발을 제외하고 모든 일을 했다.
지표를 올리기 위해 했던 일은 크게 두 가지다. 1) 고객과 이야기 한다. 2) 제품을 만든다. 고객 인터뷰와 데이터 분석으로 문제에 대한 해상도를 높이고, 작은 단위로 빠르게 개발해서 출시했다. 당시 목표였던 ROI 100% 이상
목표를 달성하지 못했지만, 20~30%
수준의 ROI를 40~60%
수준으로 두 배 올렸고, LTV를 고려했을 때 Unit Economics가 positive가 되는 데 기여했다. 랜딩페이지 키메시지를 실험하고, 퍼널을 개선하며 지표를 움직일 수 있었다.
피카부
피카부는 SNOW와 같은 AI 프로필 사진 제작 앱이다. 팀 목표가 PMF 찾기에서 AI 제품으로 PMF 찾기로 변경되면서 피카부를 시작했다. 우리가 취한 전략은 이미 사람들이 돈 내는 제품의 컨셉을 모방해서 빠르게 이터레이션하는 것이었다. 팀 내에서 파트를 나누어 AI SNS 등 여러 아이템을 병렬로 실험했는데, 본인은 피카부가 가장 돈을 잘 벌 것 같아서 피카부를 선택했다.
팀의 목표는 ROI를 100% 이상
으로 유지하며 광고비를 집행할 수 있는 퍼널을 찾는 것이었다. 본인은 이 과정에서 랜딩페이지의 런칭 속도를 최대한 끌어올리는 데 집중했다. 랜딩페이지 이터레이션은 디자인 완료 시점부터 런칭까지 2~3일
걸렸는데, 이를 1일 이내
로 줄여야 할 필요가 있었다. 런칭에만 2~3
일이 걸리고, 데이터가 쌓이는 데 또 2~3일
이 걸린다. 이 속도로는 일주일에 임팩트 있는 실험을 하나밖에 못한다. PMF를 찾으려면 최대한 많은 실험을 하는 게 중요하기 때문에 이 문제를 해결하기로 했다. 이를 위해 아래 방법으로 중복 작업을 제거해 런칭까지 걸리는 시간을 줄였다.
-
유저 이벤트와 에러 로깅을 위한 유틸리티 함수를 만들고, 관련 로직을 재사용할 수 있게 했다.
- 이 부분은 지금 돌아보았을 때 더 잘할 수 있는 부분이 보인다. 데코레이터 패턴이나 ErrorBoundary를 활용하면 반복 작업을 줄이면서도 UI 로직과 로깅 로직을 분리해 더 좋은 설계를 할 수 있을 것 같다. 최근 토스페이먼츠 기술 블로그에 관련 글이 발행되었는데, 비슷한 문제를 더 좋은 패턴으로 해결한 것 같아 인상 깊었다.
-
어플리케이션 레벨에서 공통적으로 사용되는 컴포넌트가 무엇인지 정의하고, 가장 많이 쓰이는 것부터 공통 컴포넌트화 했다.
- 이 컴포넌트가 앞으로의 실험에서 쓸지 안 쓸지 예측하기보단 대응을 하기로 결정했다. 최근 실험에서 가장 많이 쓰인 컴포넌트 위주로 개발했다.
-
디자이너를 설득해 디자인 시스템을 만들고 여러 실험에서 반복적으로 활용할 수 있게 했다.
- 당시 디자이너에게는 디자인 시스템 설계보다 가설 검증을 위한 디자인이 우선이었기 때문에 디자인 시스템 작업은 뒤로 밀렸다. 프론트엔드 입장에서 최소한의 디자인 시스템이라도 활용하는 것이 팀 차원에서 임팩트가 있을 것이라 설득했다.
위 작업으로 런칭까지의 시간을 2~3일
에서 1일 이내
로 줄이는 데 성공했고, 비즈니스적으로도 다른 팀원들이 활약한 덕에 팀 목표를 달성했다. 기꺼이 돈을 지불하는 유저가 생겼고, ROI를 100% 이상으로 유지하며 돈을 벌 수 있었다. 하지만 웹으로만 서비스하고 있어서 리텐션이 생기지는 않았다.
리텐션이 없으면 지속가능한 사업을 만들 수 없기 때문에 우리는 앱을 개발해 재방문을 더 쉽게 만들어야 했다. 앱 이터레이션 속도를 높이기 위해 웹뷰를 적극적으로 활용하기로 했고, 덕분에 인앱 웹뷰를 주도적으로 개발해볼 수 있었다.
앱 라우팅, 인앱 결제 등 대부분의 앱 동작을 웹뷰에서 제어했기 때문에 서버와 앱을 모두 프론트엔드가 상호작용하는 API 레이어로 규정하며 프론트엔드를 설계했다. 또 앱 내에서 인증, 탭 정보와 같은 앱 전역 store와 도메인별 store를 분리하여 도메인 내 공유되는 전역 상태를 독립적으로 관리하도록 설계했다. 이와 같이 웹뷰를 개발할 때는 상호작용하는 레이어가 추가되고, 관리해야 하는 페이지가 늘어나면서 타로언니를 개발할 때보다 설계에 대한 고민을 더 하게 되었다.
앱을 런칭한 후에는 우리 제품을 계속 사용하는 유저가 생겼고, 견고하진 않지만 리텐션 플래토가 생겼다. 리텐션 플래토 뿐만 아니라 유튜브와 인스타보다 우리 앱의 스크린타임이 더 많은 유저를 보고 Product Market Fit을 찾았다는 확신이 들었다.
퇴사
좋은 팀에서 많이 배웠지만 퇴사를 결심하게 된 이유는 군 문제를 빨리 해결하고 싶었기 때문이다. 군 문제를 해결하기 위해 IT 산업기능요원 복무를 계획하고 있었는데, 산업기능요원 편입을 위해서는 부전공인 소프트웨어를 전 과정 이수(졸업)해야 했다. 졸업까지 한 학기를 남겨둔 상태에서 향후 거취에 대해 고민하고 있었고, 이미 미룬 군 문제는 내게 리스크로 다가왔다. 이번에도 미루면 내가 몰입하고 싶은 일이 생겼을 때 정작 그 일을 못하는 상황이 생길 수 있다는 생각에 빠른 시일 내에 군 문제를 해결하기로 결정했다.
회사가 이미 병역지정업체면 졸업이 한 두 학기 미뤄지더라도 졸업과 동시에 산업기능요원을 시작할 수 있다는 보장이 있었지만 회사가 근 시일 내에 병역지정업체로 선정된다는 보장이 없었다. 모른 척 덮어두기에 군 문제에 대한 고민은 항상 걸림돌이 되었기 때문에 졸업부터 먼저 하고, 빠른 시일 내 산업기능요원을 시작하기로 했다.
팀러너스에서는 목표를 달성하는 법 외에도 프로덕션을 위한 프론트엔드 개발, 개발 퀄리티와 속도 사이에서 선택하는 법, 개발한 실험의 데이터를 바로 모니터링하는 법 등 제품을 개발하고 운영할 때 전반적으로 고려해야 할 부분들을 배울 수 있었다.
4) 블로그 시작 (2023.10.03. ~)
블로그를 시작한 이유는 이전에 포스팅한 바 있다. 요약하자면, 가치있는 무언가를 내 손으로 만들고 싶었다. 또 블로그는 신규 기술을 마음껏 만져볼 수 있는 놀이터이기도 하다.
블로그를 직접 개발하면 신경쓸 것이 많다. 카테고리나 태그 등 어떤 메타데이터를 포함하고, 이를 앱에서 어떻게 표현할까? 글은 어디에 저장할까? SEO는 어떻게 해야 할까? 자주 쓰려면 접근하기 쉬워야 하는데 에디터는 어떤 걸 쓸까? 등등...
이러한 고민 끝에 마크다운으로 글을 작성한 뒤 앱과 동일한 디렉토리에 저장하고, contentlayer로 이를 가공해 앱에서 사용하는 지금의 구조를 만들었다. 또 title, description, tag 등을 메타데이터 및 구조화된 데이터의 형태로 삽입했다. Next.js App directory는 메타데이터 관련 유틸리티가 내장되어 있어서 편리했다. 블로그를 개발하면서 Suspense 등의 기능을 사용해보고 싶었는데 아직 비동기 상태를 관리할 일이 없었어서 사용해보지는 못했다. 새로운 기능을 추가하면서 사용해볼 것 같다.
결산
2023.10.03.부터 2023.12.31.까지 총 22개의 글을 업로드했다. 운영체제 과목을 블로그 포스팅하면서 공부했기에 OS 관련 글이 전체 글 중 63%인 14개다.
동기간 사용자는 89명이 방문했다. 24년에는 최소 500명 이상 방문하게 하는 것이 목표다.
5) 운동 시작 (2023.10.16. ~ )
운동이 건강에 얼마나 중요한지 잊고 있다가 항상 몸이 많이 지칠 때쯤 알아차린다. 운동을 그만둔지 어느덧 3년이 지났기 때문에 사실상 일반인의 몸으로 돌아왔는데 예전 체력 생각하고 일하니 몸이 남아나질 않았다. 심각성을 인지하고 23년 초부터 헬스를 했고, 10월 부터는 체중과 스트레스 관리를 위해 런닝을 시작했다. 런닝보다 헬스를 먼저 시작했는데, 런닝을 더 꾸준히 재밌게 하고 있어서 지금은 런닝만이라도 꾸준히 하자는 생각이다.
이번에는 좀 제대로 해보고 싶어서 건강 지표 중 유산소 피트니스 점수와 나이키 런 등급을 계속 측정하고 개선하기로 했다. 지표가 오르는 것을 보니까 재미가 붙어서 더 오래 하게 되는 것 같다.
결산
2023.10.16.부터 2023.12.31.까지 21번 뛰었고, 총 72.4km를 달려 오렌지 등급(50km 이상)을 달성했다.
같은 기간 유산소 피트니스는 41.9
에서 44.6
으로 6.44%
증가했다.
아래는 나이키 런 등급표인데, 24년 안으로 그린 등급 진입이 목표다.
신체, 정신적 스트레스는 땀을 좀 내주면 금방 회복되는 것 같다. 생각을 너무 많이 해서 머리가 깨질 것 같아도 밖에 나가 달리면 피로가 금방 풀린다. 장기적으로 도움되는 취미를 만든 것 같아 뿌듯하다.
6) 졸업 (2023.12.20.)
5년만에 학교를 졸업한다. 정확히는 졸업 예정이지만. 재학 중 군대를 다녀온 동기들에 비하면 빠른 졸업이고, 보통 칼졸업하는 운동선수 동기들보단 늦은 졸업이다. 나는 5년 정도가 딱 적당한 것 같다. 학교를 마무리하고 군 문제를 해결하려면 꼭 졸업을 해야 했기에, 막학기는 6학점을 들으며 마지막 남은 소프트웨어 전공 수업을 잘 마무리하는 데 집중했다.
대학에서는 지식보다 사람과 경험이 남은 것 같다. 대학 초반에는 운동에, 중반에는 창업에, 후반에는 컴퓨터에 관심을 둔 덕분에, 5년의 시간 동안 서로 다른 분야를 경험할 수 있었다. 이 과정에서 다양한 생각을 가진 사람들과 의미 있는 활동을 하거나 대화를 나눌 기회가 많았던 것 같다.
운동
운동을 하면서는 팀으로 목표를 달성하는 경험과 통찰을 얻을 수 있었고, 운동선수를 은퇴하면서 쓴 회고글에 더 자세히 작성했다. 대학교 1학년, 국가대표 상비군으로 세계대회에 출전할 때 함께한 감독님은 내가 경험했던 리더 중 팀을 이끄는 방법을 가장 잘 알고 실천하는 분이어서 인상깊었다. 가슴뛰는 비전을 제시하고, 개인의 성장을 이끌어낼 수 있는 환경을 조성하고, 개인의 노력을 팀의 성과로 연결시킨다. 내가 조직을 리딩할 때 고민이 있으면 감독님을 찾아뵐 것 같다.
창업
창업에 대한 관점도 조금 더 다듬어진 것 같다. 처음에는 창업이 하고 싶다는 마음으로 무모하게 뛰어들었다. 팀을 두 번 결성하고 해산하며, '내가 창업을 위한 창업을 한 것이구나. 실질적으로 문제를 해결하려 접근하지 않았구나.' 생각했다. 빠르게 실행에 옮긴 건 좋았지만, 실질적인 결과를 내는 데 더 집중해야 한다는 것을 배웠다.
스타트업의 봄과 겨울을 모두 경험해 본 것도 관점을 다듬는 데 도움이 되었다. 창업에 관심을 갖게 된 시기는 금리가 낮아 시장에 돈이 많이 풀려있었고, 스타트업 투자도 활발했다. 지금 당장 돈을 벌지 못해도 투자를 받을 수 있었다. 하지만 금리가 오르며 시장에 돈이 마르기 시작했고, 재무적으로 건전한 스타트업이 생존하고 각광받는 시기가 왔다. 이 시기를 경험해보지 못했다면 나도 훗날 창업할 때 이익보단 매출과 사용자 수 등의 지표를 올리기 위해 노력했을 지 모른다.
하지만 지금의 관점으로는 Day 1부터 돈을 버는 사업을 하고 싶다. 팀러너스에서 수익을 만들어봤던 경험도 이 관점을 형성하는 데 영향을 준 것 같다. 기업은 이익을 내고, 성장해야 한다. 투자를 받으면 성장의 기울기를 가파르게 할 수 있지만 투자 없이도 생존할 수 있는 기업이 투자를 받으면 더 건강하게 성장할 수 있는 것 같다. 물론 미래에 관점이 바뀔 수 있으나 시장은 언제든 얼어 붙을 수 있다는 것을 인지해야 한다.
컴퓨터
컴퓨터와 소프트웨어를 공부하면서 논리적으로 사고하는 훈련을 많이 할 수 있었다. 내가 몸담았던 분야 중 가장 논리적 사고가 중요한 분야라고 느꼈다. 논리가 부족하면 컴퓨터에게 제대로 일을 시킬 수 없다. 내가 원하는 것을 정확하게 컴퓨터에게 명령해야 한다. 그럼 컴퓨터가 나 대신 많은 일을 해줄 것이다.
보통 어떤 일의 스케일이 커지면 복잡도가 비례하여 늘어나는데, 컴퓨터와 소프트웨어 분야에서는 스케일이 커져도 좋은 설계로 복잡도의 증가폭을 획기적으로 줄일 수 있는 것 같다. 아직 컴퓨터와 소프트웨어로 큰 스케일의 작업을 처리해본 경험은 없지만 언젠가는 좋은 설계로 복잡한 문제를 해결해보고 싶다. 그리고 컴퓨터 분야에 대한 명확한 관점을 가지려면 더 많은 탐구가 필요한 것 같다.
5년동안 분야를 막론하고 도전과 실패를 반복하며 성장한 나에게 고생했다고 말해주고 싶다. 이 경험이 앞으로의 삶에 큰 도움이 될 것이라 믿는다.
2024년 목표
24년에는 아래의 목표를 달성하려 한다.
1) 산업기능요원 시작
- 군 문제를 빠르게 해결해야 한다.
2) 프론트엔드 전문성 기르기
- 어려운 문제를 믿고 맡길 수 있는 프론트엔드 엔지니어가 되고 싶다.
- 전문성은 내가 판단하지 말고 동료 피드백으로 판단.
3) 나이키 런 그린 등급, 유산소 피트니스 점수 평균 이상
- 런닝을 오래 지속할 수 있는 취미로 만들어보자.
4) 블로그 18편 이상 연재하기
- 블로그를 써보니 한 달에 두 번 연재하는 것은 조금 도전적이고, 한 달에 한 번 정도는 할 수 있을 것 같다.
- 한 달에 한 편씩은 기본적으로 연재하되, 이 중 절반인 6달은 한 달에 두 편씩 연재하는 것으로 해본다.
2024년도 잘해보자.