안녕하세요, 저는 프론트엔드 소프트웨어 엔지니어(Software Engineer, Frontend)로 일하고 있는 Jason이에요. 당근은 비전공자 출신인 제가 처음 커리어를 시작하게 된 회사인데요. 제가 회사를 선택할 때 중요하게 생각했던 요소들은 무엇이며, 궁극적으로 당근을 선택한 이유, 그리고 저는 이 회사안에서 어떻게 성장해 왔는지 주관적인 경험을 담아 얘기해 보려고 해요.
저는 당근에서 6개월 동안 두 번의 인턴십을 진행했고, 그 후 지역사업실 플레이스 팀에 합류하기로 결정했어요. 함께한 지도 벌써 1년이 더 지났는데요. 회사를 찾고 인턴십을 진행하며 제가 회사를 선택할 때 고민했던 요소는 다음과 같았어요.
이런 기준을 가지고 당근에서 인턴십을 진행했고, 제가 경험한 당근의 문화는 사실 ‘좋은 회사에 대한’ 기준 이상이었어요. 구체적으로 어떤 문화였는지 조금 더 살펴보면요.
제가 프론트엔드 개발을 담당하고 있는 플레이스 팀에 대해 먼저 소개해볼게요. 저희 팀의 비전은 다음과 같아요.
세상의 모든 가치 있는 동네 장소 정보를 발굴하고 모은다.
팀의 비전은 “활발한 교류가 있는 지역 사회를 위해 모바일 기술로 가까운 동네 이웃들을 연결해요.”라는 당근 전사의 비전과 긴밀하게 연결되어 있어요.
플레이스 팀은 프로덕트 매니저와 프로덕트 디자이너, 각각 두 명의 백엔드와 프론트엔드 엔지니어로 총 여섯 명으로 이루어진 목적조직인데요. 프로덕트 방향성 설정은 물론 아이디에이션 미팅도 직군에 상관 없이 모든 팀이 함께 진행하고 있어요. 엔지니어도 기획 단계에서 자유롭게 의견을 낼 수 있는 환경이 조성되어 있을 만큼 팀원 모두가 프로덕트에 강한 오너십을 가지고 있어요. 이러한 조직 구조 덕분에, 엔지니어는 프로덕트의 이해도가 높아지고 합의된 팀의 의견을 토대로 프로덕트를 어떻게 기술적으로 더 잘 만들지 심도있게 고민할 수 있어요. 일에 훨씬 적극적으로 몰입할 수 있고 더 큰 재미를 느낄 수도 있고요.
여기서 잠깐! 주제는 신입 개발자의 성장인데, 제가 개발 외적으로 여겨지는 부분만 강조한다고 느껴질 수 있을 텐데요. 사실 저는 커리어를 막 시작하는 단계에서는 가장 중요한 게 ‘성장할 수 있는 환경’이라고 생각해요. 성장은 다른 사람이 강제로 시켜줄 수 없는, 오로지 자기 자신만이 해낼 수 있는 일이라고 생각하는데요. 스스로 성장하기 위해서는 많이 부딪혀야 해요. 따라서 ‘부딪힐 수 있는 환경’이 곧 성장할 수 있는 환경이라고 생각하고요. 이 과정에서의 경험은 성장곡선에 비례할 것이기 때문에, 내가 시간을 쏟아 개발하고 있는 것이 미치도록 재미있고 끊임없이 몰입되어야 한다고 생각해요. 제가 경험한 당근에서는 그게 가능했구요.
당근이라는 조직에서 신뢰를 기반으로 한 충돌과 그 과정의 성장 가능성을 본 저는, 재미와 몰입이 충족되었으니 이제 한 걸음 더 나아갈 수 있다고 생각했어요. “어떻게 하면 팀의 비전을 이룰 수 있을까?” 고민할 수 있게 된 거죠.
회사와 팀의 비전에 공감하는 것은 핵심적이라고 생각해요. 다양한 생각을 가진 팀원들과 끊임없이 논의하며 수많은 회의를 진행하지만 결국 그 끝은 우리의 비전으로 연결되어 있기 때문이에요. 비전에 대한 공감대의 형성은 내가 하고 있는 일들이 어떠한 가치를 만들어내는지를 인지하게 해줘요. 단순히 코드 한 줄을 작성하는 것이 아닌, 팀의 목표 달성을 위해 주도적으로 일할 수 있게 되는 것이죠.
현재 저희 팀이 꾸려가는 제품 단계에서는 무결점의 완벽한 개발보다는 빠른 호흡의 실험을 위한 배포가 더 중요해요. 수많은 가설들을 빠르게 검증해 나가며 PMF(Product Market Fit)을 찾는 단계이기 때문이에요. 저는 프론트엔드 엔지니어로서 스스로 판단하고 주도적으로 일하기 위해 어떤 환경을 구축할 수 있을까 고민했어요. 그중에서도 빠른 실험을 위해서는 반복작업의 기능화와 불필요한 커뮤니케이션 코스트 최소화가 필요하다고 판단했습니다. 하여 다음과 같은 프로젝트를 진행해 보았어요.
| 효율적인 실험을 위한 자동화
팀에서는 여러 개의 실험들을 빠른 호흡으로, 병렬적으로 진행하는데요. 가설 검증을 위한 다양한 방식 중 주로 A/B 테스트를 활용해요. 이에 들어가는 반복 작업을 최소화하기 위해, 코드를 생성하는 코드를 작성하기로 했습니다. 기존에는 실험 코드들을 하나씩 관리하고 작성했어야 했다면, 이제는 몇 개의 실험군을 어떻게 쪼갤 것인지에 대한 간단한 설정만으로 실험에 필요한 코드들이 자동으로 생성되고 실험 준비가 완료돼요. 또 개발자 도구도 자동으로 만들어지며, 팀원 누구나 쉽게 앱에서 실험군을 변경하고 테스트해볼 수 있게 되었어요. 반복작업의 기능화 덕분에 개발 속도가 향상되었고, 모든 실험을 안전하게 관리할 수 있게 되면서 휴먼에러도 방지할 수 있게 된 거예요.
| 투명하게 공유하며 커뮤니케이션 비용 낮추기
모든 팀원이 강한 오너십을 가지고 있기에, 긴 설명 없이도 일의 진행 과정과 맥락에 대해 얼라인(align)이 잘 되어 있어요. 하지만, 목표에 대한 얼라인을 온전히 코드레벨로 가져오지는 못한 상황도 종종 있었어요. 개발 막바지에 엣지케이스*가 발견되는 경우 타협을 해야 하는 경우도 있었고요. 이러한 상황들로부터 발생하는 커뮤니케이션 코스트를 줄이기 위해, 개발 시작 전 작업의 배경과 목표, 목표가 아닌 것 그리고 계획을 문서화한 테크스펙을 작성을 선행하기 시작했어요. 덕분에, 개발중 발생했던 불필요한 커뮤니케이션 코스트를 줄일 수 있었어요. 더 나아가, 문서화 덕분에 작업에 필요한 프론트엔드 코드의 일부분은 자동으로 생성할 수 있게 되었어요. 결과적으로 개발 생산성이 향상되었어요.
*엣지 케이스: 알고리즘이 처리하는 데이터의 값이 알고리즘의 특성에 따른 일정한 범위를 넘을 경우에 발생하는 문제
이 모든 프로젝트는 팀 구성원이 스스로 판단하고 주도적으로 일하기 위한 튼튼한 문화적·제도적 배경이 되어주었는데요. 그럼에도 기술을 선택하고 적용하는 과정에서 분명 어려움이 생길 수 있어요. 이런 어려움은 어떻게 극복할 수 있을까요?
당근에는 개발하다 발생하는 문제들을 함께 헤쳐 나갈 동료들이 있고, 먼저 가서 이끌어 주는 뛰어난 동료들이 많아요. 팀으로 구성된 목적조직 외에도, 직군별로 구성된 챕터 조직도 있는데요. 챕터에서는 격주로 미팅을 진행하며 각 팀에서 일하며 겪었던 사례와 해결책, 새롭게 도입한 기술을 공유할 수 있어요. 가벼운 문제의식도 자유롭게 나누고 해결 방안을 논의하고요.
신입 개발자로 들어와 조금 막막한 순간에도, 뛰어난 동료와 함께 문제 해결을 위한 적합한 도구를 직접 만들고 그에 필요한 지식을 공개하고 공유하다 보면 ‘나도 할 수 있겠다’는 자신감과 힘을 얻게 되더라고요.
아래는 제가 신입 개발자로서 가까이서 보며 정말 존경하는 당근 엔지니어들의 사례예요.
이처럼 회사 안에서만 국한되는 것이 아니라 외부에도 이를 함께 공유함으로써 개발 커뮤니티가 함께 성장할 수 있는 발판을 마련해주는 뛰어난 동료들이 있어요. 언급한 동료뿐 아니라 직군 상관 없이 당근의 뛰어난 동료들이 팀 내외적으로 공개와 공유 문화를 수호하고 있답니다.
앞서 성장은 타인이 강제로 시켜줄 수 없고, 성장을 하기 위해서는 스스로 많이 부딪혀야 한다고 했는데요. 직접 부딪히는 것이 아닌, 효율적인 방법으로는 다른 사람의 경험을 온전히 나의 것으로 흡수하는 방법도 있어요. 마치 우리가 책을 읽으면서 지식을 얻는 것처럼요. 신입 개발자로서 성장할 수 있는 가장 효과적인 방법은 결국 뛰어난 동료들과 함께하는 것이라고 생각하는데, 당근에는 존경할 수 있는 엔지니어와 가까이서 함께 일할 수 있어요.
당근은 정해진 틀에 안주하지 않아요. 항상 끊임없이 더 나은 방식과 방법을 고민하며 사용자의 목소리에 귀 기울이고, 팀의 성공 공식을 찾기 위한 적합한 개발 방식을 판단하고 선택할 뿐이에요.
지난 1년을 되돌아봤을 때, 재미있고 몰입할 수 있는 환경, 스스로 판단하고 주도적으로 일할 수 있는 오너십 그리고 함께하는 뛰어난 동료들이 신입 개발자인 저의 성장에 중요한 요소들이었어요. 그리고 지금도 이러한 요소들을 기반으로 끊임없이 성장 동력을 돌리고 있어요. 첫 커리어를 어디서 어떻게 시작해야 하는지 막막하던 분들에게 도움이 되었길 바라요!
Software Engineer, Frontend