더 나은 기술 역량, 더 나은 제품, 더 나은 팀으로의 여정. 2년차 개발자의 2021년 회고

2021-retrospect

2021.12.27 파크 하얏트 서울.
연말이 되면 낯선 장소에서 여행하듯이 회고 쓰는걸 좋아하는데 장소를 잘못 고른 것 같다. (회사가 삼성역임)


퀄슨에서 2년이라는 시간을 꽉 채워서 보냈다.

1년차 개발자였던 2020년은 기술적 역량으로 압축 성장의 해였다면 2년차 개발자였던 2021년은 기술, 제품, 팀 세 가지를 다음 단계로 올리기 위해 안간힘을 쓴 노오력의 해였다.

작년의 우리 개발팀은 Market Timing에 맞도록 제품을 구현해내는 역량은 이미 증명했기 때문에 이제는 유저들이 사랑하는(잘/꾸준히 쓰는) 제품을 구현해내야 한다고 생각했다. 정말 합이 잘맞던 5명의 프론트엔드팀에서 2명의 이탈이 발생해서, 채용 프로세스를 만들고 팀빌딩을 다시 했다. 동작하는 코드에 만족하지 않고, 읽기 좋은 코드를 잘 짜고 싶어서 공부하고 적용했다. 아침 샤워를 할 때부터 밤잠에 들 때까지 일 생각이 머리에서 떠나지 않았고 이 노오력 은 여전히 진행중이다.

힘들고 지치는 순간들이 많았으며 이 또한 여전히 진행중이다. 그럼에도 내가 최선을 다하는 이유는 커리어를 길게 바라 보았을 때 기술 역량, 제품, 팀을 끌어 올리는 방향성은 끊임없이 추구해야하는, 어렵지만 가치 있는 일이라고 생각하기 때문이다. 앞으로도 훌륭한 제품을 만들지 않거나 멋진 사람들이 모여있지 않은 곳에서 일하고 싶은 생각은 없으니까. 그리고 그런 곳에 어울리는 사람이 되어야 하니까. 경험은 나만의 가장 강력한 힘이니 자산을 많이 쌓은 해로 기억하고 싶다.

좀 더 개인적인 삶에서는 책을 많이 읽었고, 자연을 찾아 캠핑을 떠나기 시작했다. 전보다는 여유가 생겨서 좋은 호텔들도 가보고 PT도 받기 시작했다. 재택을 자주 하는 만큼 집에서 많은 시간을 보냈고, 외로워질 때 즈음에 소중한 친구들과 함께했다. 그리고 실패했던 짧은 연애도 1번 있었다. 시간이 조금 더 지나고 보면 추억할 날들을 생생히 기록해두자 :)

*개인적인 회고글로 회사의 입장이나 생각과 전혀 무관합니다.


회사 이야기

1~4월

개발

1분기에는 지난 12월에 런칭한 제품(리얼 클래스)의 이슈들을 해결하면서, 셀링 페이지 업데이트 작업을 주로 했다. 업계 특성상 연초에 마케팅 이벤트를 많이 하기때문에 그에 대한 개발 작업이 빈번하게 있었다. 조금 여유가 있을 때는 디자인팀과 결제 페이지의 UI를 개선했고, 작년에 바쁜 일정으로 많이 리뷰하지 못한 코드들을 다시 살펴보면서 개선이 필요한 부분은 리팩토링 했다. 가장 재밌게 코딩했던 건 서비스에 401, 403 에러 코드에 대응하는 로직을 추가한 일이었다. 처음 프론트엔드 개발자로 일을 시작했을 때 API의 에러를 어떻게 핸들링 해야하는지 몰랐던 기억이 남아 있어서 이제는 다룰 줄 안다는 뿌듯함이 있었고, 무엇보다 사용자 경험과 맞닿아 있는 부분을 구현할 때 보람을 많이 느끼는 편이다.

ppt

6월에 테크캐스트에서 "지속가능한 개발자로 성장하기" 라는 주제로 발표했던 자료 (https://yagom.net/courses/techcast-4/) 중 일부

팀/제품

작년 막바지에는 워낙 일정이 빠듯해서 기능별로 특정한 개인에게 의존성이 컸다. 계정 이슈는 A가 해결해야 하고, 결제 이슈는 B가 해결해야 하고, 하이브리드로 구현된 앱에서 bridge에 관련된 이슈는 C가 해결해야 하고 하는 식이었다. 혼자 맡아서 하고 있는 부분이 있다면 최소 1명의 백업을 만들기로 했고, 기능별로 rotate 돌렸다. 업무를 나눌 때 1) 양적으로 분배가 되었는지 2) 하고 싶은 작업과 조금은 귀찮은 작업이 적절히 조화가 이루었는지를 살폈다. 이 기간이 지난 후에, 그래서 모두가 서로를 커버할 수 있게 되었냐라는 물음에는 아니오지만, 업무 분배를 할 때 이건 저 사람이 하는게 가장 효율적이니까 라는 기준을 조금 내려놓는 시작이었다. 한 팀이니까 다 같이 커버하자 라는 문화를 만들어나갔다.

4월 즈음 되었을 때 동료들과 편하게 있으면 요즘 일하는게 재미없다 라는 이야기가 전보다 많이 나오는게 체감되었다. 미친듯이 달렸던 작년 하반기를 지나고 오는 번아웃/공허함일 수도 있겠지만 취합해본 결과는 이랬다. 매번 해야 하는 일과 일정이 모두 정해져서 내려오고 그걸 맞춰서 개발만 하니 재미 없다고 했고 이게 동기 부여를 떨어 뜨리는 것 같았다. 다들 능력 있고 적극적인 태도를 가진 사람들이라 우리의 역량을 더 발휘하면서 일하고 싶었다.

idea

모여서 작당 모의를 하기 시작했다. 제품을 개선하기 위해 뭘 할 수 있을까?


학습 리텐션과 편의성이라는 두 개의 굵직한 줄기를 두었고 아이디어를 모았다. 어떻게 하면 UI 적 요소를 충분히 활용하여 매일 방문하고 싶은 서비스를 만들 수 있을지, 학습을 해나가는 유저가 정말 궁금해할 건 무엇인지, 기술적으로 개선할 수 있는건 무엇인지 등을 정리해서 협업 부서에 공유했다. 실제로 5-7월에는 여기서 이야기가 나왔던 것을 기반으로 내 클래스 페이지의 UI를 개편했고, 목적이 다른 셀링 페이지와 학습을 위한 페이지의 GNB 구조를 구분하는 작업을 할 수 있었다.

5~7월

5월 말 ~ 6월 초에 5명의 프론트엔드 팀에서 2주 간격으로 2명의 이탈이 발생했다. 작년의 회고를 보면 알 수 있지만 분위기만 좋은게 아닌 혼자보다 같이 일할 때 시너지가 나는 팀이였어서 앞으로 함께 만들어나갈 그림을 그려가고 있었는데 청천벽력 이였다. 팀은 너무 좋지만 각자가 원하는 것이 더 잘 세팅 되어 있는 회사를 선택 했다. 아마 인생에서 정말 소중하다고 생각하는 동료들과 처음으로 헤어지는 경험을 하지 않았나 싶다.

we

프론트엔드 5 + 안드로이드 1(꼽사리) in 아지트에서. 그리고 여전히 시끄러운 퀄슨 레전드 프론트팀이라는 카톡방.
우리가 나중에 다시 다같이 일할 수 있는 날이 올까?


그래도 남아 있는 3명끼리 다시 힘을 내고 인원을 채우려 채용 프로세스를 만들었다. 사전 과제를 만들고, 과제를 리뷰하고 면접을 보기 시작했다. 주말에는 지인들을 회사로 데려오기 위해 사람들도 꽤 만나고 다녀서 몸과 마음이 지쳤다. 그래도 다행히 6~7월에는 신입 두 분을 뽑을 수 있었고, 한 분은 개인 사정으로 퇴사하셨지만 다른 한 분은 너무 열정적으로 잘해주시고 성격도 재밌으셔서 떨어질 뻔 했던 팀 분위기에 다시 불을 지펴주셨다. ❤️‍🔥 회고를 쓰는 지금 시점에서 다시 생각해봐도 정말 행운인 일이다. 속상한 마음은 뒤로 하고도 모든 일은 어떻게든.. 돌아간다.

제품

product_books

초기 기획 단계부터 디자이너와 개발자가 involve 되어 추가 될 기능을 논의하기 시작했다. 그래도 나는 여전히 뭔가가 아쉬웠지만, 제품이 강한 팀들이 어떻게 일하는지 몰랐다. 이 분야에서 유명한 책들과 다른 회사의 블로그들을 찾아 읽기 시작했고 제품을 잘 만드는게 무엇인지, PO/PM 가 가져야 할 역량은 무엇인지 등에 대한 주관을 만들어갔다. 사실 처음에 제품 개선과 스쿼드 조직을 이야기 했을 때는 개발팀의 동기 부여 증대 + 개발 단계까지 내려온 뒤에 뒤바뀌는 정책으로 인한 비효율 감소를 위해서였다. 물론 이것도 이유가 될 수 있지만 훌륭한 제품을 만들어야 하는 궁극적인 이유는 비즈니스 결과에 직결되기 때문이라는 측면을 배웠고, 현재까지도 이 생각에 변함이 없다. 데이터 기반의 의사 결정을 내릴 수 있어야 한다. 이 때 즈음 애자일 전문가 한 분이 회사에 놀러오셔서 미팅을 했고 하반기에 우리 개발 그룹에 합류하셨다.

개발

우리 제품은 상반기까지 영어 공부를 위해 VOD 강의 기반으로 학습이 진행되었는데, 하반기에 라이브 수업을 도입 하는 큰 변화가 있었다. 이 라이브 수업을 시범 운영하기 위해 필요한 셀링과 결제 페이지를 주로 만들었다. 또한 기존에는 사용자가 365일 내내 공부해야 환급을 해주는 연 챌린지를 진행 했는데, 실패하면 동기가 과하게 떨어지는 이슈를 막고자 7일 공부하면 환급을 해주는 주 챌린지로 정책을 업데이트 했다. 주 챌린지를 위해 필요한 상태는 기존에 구현된 연 챌린지와 비슷하면서와 달랐기 때문에 상태를 정확히 구분하면서도 공용해서 쓸 수 있는 프로퍼티는 중복되지 않도록 했다. 상태값을 사용하는 쪽에서는 사용자의 계정 상태에 맞게 올바른 챌린지 상태값을 반환 받을 수 있는 공용 로직을 hook 으로 뽑았다. type 정의를 위해서만 썼던 typescript를 조건으로도 활용할 수 있다는 점을 배웠고 재밌다고 느꼈다. 무엇보다 이 시점에는 새로 합류하신 두 분의 코드 리뷰를 정말 많이 했던 것 같다.

8~10월

개발

개발그룹의 하반기 Task 중 하나는 admin에 재무 정산 시스템을 구축하는 것 이였는데, 이 때 재무 프론트를 혼자 맡아서 했다. 재무는 평소에 사용하는 개념이 아니다보니 매출을 계산하고 안분을 나누는 등 구현을 위해 필요한 도메인을 이해하는 것 자체가 어려웠다. 그래도 복잡한 form 과 table을 다룰 수 있는 기회가 많아서 코드에만 집중할 수 있다는 점이 좋았다. (하나의 form 에서 CRUD 를 다 구현해야 했으니 로직도 은근 복잡했기도 하고.) 내가 이 작업이 의미있다고 생각하는 큰 이유는 회사의 뒷단, 즉 상품 구조에 대해서 더 잘 이해하게 되었다는 점. 그리고 옆자리 동료 한 사람에게 치중되어 있던 admin 작업을 할 수 있게 되면서 업무 의존을 줄일 수 있었고, 팀 내에서의 capacity 를 더 넓힐 수 있었다. 다만 혼자 구현하다보니 코드 리뷰를 전혀 못 받았고 동료들도 재무에 관련된 작업은 살펴볼 여력이 없어서 가끔 심심하기도.. 했다. 혼자 코딩하다 보면 다른 사람이 읽는 것을 고려할 필요가 없으니 코드가 지저분해질 확률이 높은데 퀄리티에 타협하지 않으려 아등바등 애쓴 점은 칭찬해주고 싶다. (그래도 아마 지금보면 뜯어 고치고 싶은 부분이 많을거다)

10월에는 admin 작업 이외에 동료들도 셀링 페이지 개편/제품 업데이트 작업으로 바빴는데 내가 상품 변경의 히스토리를 가장 잘 알고 있어서 결제 페이지에 필요한 분기 처리, 교차 구매를 막는 등의 작업을 도와했다.

11~12월

개발

대망의 연말... 역시나 기대를 져버리지 않는 연말. 11월이 되자마자 큰 모수의 가입자들에게 특정 상품의 무료 이용권을 제공했던 적이 있었는데, 생각보다 사람들이 이용권을 이용하지 않았고 이 문제를 해결하기 위해 할 수 있는 방안을 빠르게 마련해달라 라는 미션을 받았다. 안건을 리드해달라는 말을 듣고, 바로 문서 만들어 배포 -> 아이디어 수집 -> 실행 핸들링 -> 유관 부서 전체 공유를 하루만에 했다. 이후에는 실행 하기로 했던 액션 아이템을 동료들과 함께 일주일안에 모두 구현 했는데 사실 이 때 너무 빠른 텐션으로 리드를 해서 미안하고 고마운 마음이 크다.(확실히 8282 민족의 K-딸이자, 스타트업형 인간) 그래도 짧은 시간 이었지만, 이 기능은 어떤 문제를 해결하기 위해 필요한지 등을 명확히 정의하고 구현하는 과정이 좋았고 결과적으로도 액션들이 효과가 있었다는 평가를 들었다.

11월 중순이후로는 iOS, AOS 기반의 하이브리드앱을 React Native로 전환 하기 시작했고 다같이 2022년 1월 초 릴리즈를 목표로 달리고 있다. 🏃🏻‍♀️ 올해 6월 즈음부터 개발팀 내의 클라이언트 파트(iOS, AOS, Web)를 통합하기 위해 RN 으로 전환하자는 이야기가 나왔는데 이걸 또 우리는 두 달만에 해내기 직전이다. 앱 개발은 당연히 처음 해보는데 매번 디바이스 여러개를 들고 살고있지만.. 재밌다. Navigaion Stack을 구성하는 부분이 가장 흥미로웠고, 상태 관리 툴도 이전까지는 redux 를 쓰다가 (아직 잘 모르긴 하지만) recoil을 처음 도입해봤다. 난 주로 웹과 앱을 연결하는 bridge 를 구현했는데 하이브리드앱을 만들기 위해 어떤 일이 필요한지에 대해 거의 이해할 수 있어서 앞으로 개발 인생에 있어서도 자산이 될 것 같다.

무엇보다 프론트 파트가 신뢰를 받고 있어서 우리 팀의 역할을 점차적으로 넓혀가는게 무척 자랑스럽다. 매일 퇴근 시간 즈음 게더타운에서 화상 화면을 꼭 켜고 데일리 미팅을 한다. 표정도 보고 목소리도 들으면서 이야기 하니까 각자가 오늘 무슨 일을 했는지를 넘어서 서로의 감정 상태, 생각들을 더 잘 알 수 있게 되어 좋다. 어쩌다보니 자연스레 파트 내에서의 업무 분배와 프로젝트 일정 관리까지 하고 있는데 앞으로도 지금의 동료들, 새로올 동료들과 많이 이야기를 나누고 싶다. 함께 크고 작은 성공 경험들을 쌓아가고 싶다.


개인의 이야기

😌 휴식

작년에 열심히 했던 유튜브를 올해는 전혀 하지 못했다. 못챙기고 있던 사이에 약 2,000명이 되었는데 아직도 이 단어가 어색하지만 구독해주시는 분들께 너무 죄송하다. 특히 상반기에 회사일로 머리 아픈 고민을 많이 했을 때, 개인적으로도 힘든 일들까지 겹쳐서 뭔가를 나눌 수 있는 마음의 여유가 없었던 것 같다. 단지 서로에 대한 이해가 부족했던 상황이였는데 상대방이 나에게 작정하고 상처 주고자 던진 말들을 너무 오래 품고 있었다. 긍정적인 측면은 회사와 개인의 삶에 모두 지쳐있던 이 기간 덕분에 정신 건강에 관심을 가지게 되었고 이를 사이드 프로젝트로 시도하기도 했다! 이렇다 할 열매는 맺지 못했는데 장기적으로 꼭 만들어보고 싶어서 너무 조급하게 생각하지 않기로. 우울할 땐 뇌과학 / 나, 지금 이대로 괜찮은 사람 이라는 두 책이 내게 큰 도움이 되었다.

camping_1 camping_2

또 하나의 이로운 측면은(이 정도면 진짜 슈퍼 긍정맨 아닌가) 쉬어가는 법을 배우게 되었다. 도시의 바쁜 삶도 무던히 좋아하지만 자연 속에서 보내는 시간도 무척이나 아끼는 사람이라는 걸 코로나 때문인지 잊고 살았다. 텐트와 장비를 잔뜩 사놓고 💸 올해 3번 밖에 가지 못했는데 내년에는 더 부지런히 다녀야지. 캠핑장까지 가기 위한 드라이브도 하늘을 잔뜩 보며 계절을 구경할 수 있어서 좋다.

💪 외부 활동

image

6월에 지속 가능한 개발자로 성장하기라는 주제로 발표, 7월에는 react-hook-form 이라는 오픈소스 라이브러리의 실행 구조를 분석해서 공유하는 세미나, 8월에는 기효님이 운영하는 유튜브 채널에서 라이브 방송을 같이 했다. 내년 상반기에 리액트 강의 제작과 멘토링을 하기로 했는데 코딩 교육 업계에 일했던 경험을 녹여내서 잘해내고 싶다. 저질러 놓았으니 책임감에 하게 되겠지… 라고 미래의 나를 믿어본다…

📚 + 🏋️‍♀️

refactoring_book

마틴파울러의 리팩터링 2판


하반기에 회사 동료들과 ‘리팩터링 2판’ 책으로 개발 스터디를 했다. 원래 개발 서적을 꾸준히 읽지는 못하는 편이라 혼자라면 못했겠지만, 같이해서 할 수 있었다! (고맙습니다.) 대부분 Class 기반으로 설명해서 우리 코드에 바로 적용할 수 있는건 많지 않았지만 그래도 좋은 코드가 무엇인지에 대한 감은 잡은 것 같다. 1월부터 하기로한 Typescript 스터디도 기대가 된다.

books

편안한 맘으로 가볍게 읽기 좋았던건 이 3권. 특히 '우리가 빛의 속도로 갈 수 없다면'은 가장 아끼는 책이 되었다.


이외에도 전화 영어를 주2회(회별 20분), 6개월간 했는데 딱 하는 시간 이외에 예습도 복습도 안해서 효과가 별로 없던 것 같다. 내년에는 그냥 우리 제품으로 영어 공부 해보려고 한다. PT도 11월부터 20회 정도 받았는데 아마 내년에도 꾸준히 하지 않을까 싶다. 체력이 중요한 나이가 되어가

모르겠고 내년에는 더 행복할거에요!

최근에 동료들이랑 술 마시면서 서로 언제 행복한지에 대해 이야기 나눈 적이 있다. 그 때 내가 이야기 했던 것은 이 세 가지였다.

  1. 우리가 동료이자 친구인 것
  2. 회사 안과 밖에서 좋은 평가를 받을 수 있는 것
  3. 혼자서도 건강한 시간을 보낼 수 있는 것

내년에도 비슷할테지만, 조금 더 바래본다면 업계의 여성들과 더 친하게 지내고 싶다. 현재 우리 개발팀은 15명인데 혼자 여성으로 가끔 명확히 설명하기 어렵지만 쓸쓸한 감정들이 들 때가 있다. 밝은 성격임에도 낯선 사람에게 먼저 말을 걸거나 다가가는 편은 아니여서 회사 밖으로 새로운 사람들은 사귀지 못했던게 가장 아쉽다. 앞으로 부지런히 좋은 사람들을 찾아 나서고, 질척거릴겁니다! 올해 했던 고민들은 반복하지 않으면서 과정을 더 즐길 수 있었으면. 몸과 마음이 건강했으면. 또 최선을 다하다가 모르겠어지면 그냥 내년에는 내가 더 행복해지는 선택들을 하며 살거다. 작년 3월에 무지개 다리를 건넌 나의 털 복숭이 강아지 🐕 도 하늘에서 친구들과 뛰어 놀고 있기를 항상 바래보며. 올해도 감사했습니다.


Table of contents