백엔드 개발자 인터뷰
개발자 취업에 필요한 ‘무만개해’? 궁금하면 읽어보세요! [개발자 인터뷰]
백엔드 스쿨이 만난 사람들 #5
당근 백엔드 개발자 김우식님
7분 분량
<백엔드 스쿨이 만난 사람들> 인터뷰는 현직에 계신 개발자의 이야기를 통해 개발자 취준생에게 인사이트를 드리고자 만든 콘텐츠입니다.
성장하는 개발자, 더 좋은 개발자가 되기 위한 개발자의 이야기를 확인해 보세요.
01 기술직 공무원에서 당근 개발자가 되기까지
안녕하세요 우식님. 백만사 인터뷰 구독자를 위해 간단한 자기소개 부탁드려요.
안녕하세요. 당근 내 신사업 부문에서 백엔드 개발자로 일하고 있는 김우식입니다. 팀 동료들과 빠른 사이클로 최대한 많은 스윙을 하면서 서비스 성장에 기여하고 있어요. 이전에는 커머스 사이트를 제작하는 노코드 도구를 만드는 스타트업에서 일했습니다. 저도 산업 쪽을 전공해서 비전공자이고, 조금 흥미로워하실만한 부분은 IT 업계에 발을 들이기 이전에 짧은 기간 기술직 공무원으로 일했던 경험이 있어요.
기술직 공무원이라니! 정말 흥미로운데요. ㅎㅎ
그럼 어떻게 개발자로 커리어 전환을 꿈꾸게 되신건가요?
공무원이라는 수직적인 문화가 잘 안 맞기도 했고, 자아실현 측면에서 아쉬운 점들이 많았어요. 그런데 개발을 통해 직접 작동할 수 있는 프로그램을 만드는 건 생각보다 더 재미있는 일이더라고요. 거기서 오는 성취감도 좋아서 진득하게 공부하다보니 취업까지 할 수 있었다고 생각합니다.
엇, 그럼 프로그래밍은 어떻게 시작하게 되신 걸까요? 우식님의 첫 코드, 혹은 첫 개발 프로젝트가 궁금해요!
프로그래밍은 대학교 친한 동생의 제안으로 시작했어요. 처음 접하기 전까지는 막연히 어렵다고만 생각해왔었는데 막상 시작해보니 꽤 재미있더라고요. 제가 처음 읽었던 개발 서적은 ‘Python for kids’ 라는 책인데요. 제 첫 코드는 책에 나오는 예제 중 하나인 ‘달에서의 몸무게를 계산하는 프로그램’ 이었어요. 파이썬 인터프리터 내에서 몸무게를 입력하면 몸무게의 16.5% 계산해서 출력하는 아주 간단한 프로그램이었는데 당시 까만 화면에 무언가 알아서 출력되는 신기한 걸 만들었다는 생각에 반디캠으로 화면 녹화까지 했었어요 (ㅋㅋ)
그 외에도 첫 개발 프로젝트가 생각나는데요. 저는 당시 주변에 같이 프로젝트 할 사람이 없어서 혼자 튜토리얼로 이것저것 많이 만들었어요. 그 중 ‘Django girls’라는 비영리단체에서 제작한 ‘나만의 블로그 사이트 만들기’라는 튜토리얼이 하나 있는데 이걸로 배포까지 쭉 진행했었어요. 호스트 주소가 생겨서 지인들한테 직접 만든 거라면서 쫙 돌렸던 기억이 나네요. 웹개발 사이클을 쭉 돌려보고 싶으신 분에게 정말 추천해요!
그렇게 처음 시작해서 당근 개발자까지! 비전공자에서 시작하셨는데 지금의 커리어를 쌓을 수 있었던 비결이 있으실까요?
뭔가 엄청난 비결은 없는 거 같아요. 다만 블로그에 공부했던걸 잘 정리해두면 좋은 거 같아요. 저는 4개월 정도 독학하고 취업에 성공했는데 블로그를 통해 잠재력 어필이 잘됐던 거 같아요. 처음에는 if/else나 변수 선언하는 방법 같은 기초적인 것들을 정리해뒀는데 3개월 뒤에는 배포 이후 리눅스 vm에서 설정값을 변경해서 타임존 이슈를 해결하거나, 인증의 흐름에 대해서 다루는 글들을 적어놨더라고요. 지금 되돌아보면 ‘비록 지금은 이정도밖에 못하지만 짧은 시기에 이만큼 배웠고, 앞으로 더 성장할 수 있다’는 메시지가 제 이력서를 보시는 분들에게 암묵적으로 전달되었다고 생각해요.
4개월 독학하고 취업이요..?ㄷㄷ 어떻게 공부하신 건지 너무 궁금한데요?
앞서 말씀드린 ‘Python for kids’ 라는 해외 서적이 있어요. 초등학생들이 보는 책인데 이걸로 맨 처음에 시작을 했고요. 주로 유튜브 위주로 공부를 하면서 좀 더 커리큘럼으로 배워야하는 것들은 강의를 수강했어요. 제가 항상 뭔가 공부할 때 독학으로 좀 많이 해왔어서 이런 게 가능했던 것 같고, 사실 제가 처음 배우던 때에는 부트캠프가 그렇게 많지 않았거든요. 그래서 그렇게 그냥 독학으로 많이 한 것 같아요.
02 당근 백엔드 개발자가 일하는 방법
현재 당근에서 근무하시는 이야기를 더 들어보고 싶어요.
먼저 근무하시는 책상을 살짝 공개해 주실 수 있을까요?
생각보다 보여드릴 게 없어서 약간 민망하네요. 이전에는 잘 몰랐는데 지금 보니까 휑한 느낌이 드는 거 같아요. 사실 제가 정리하는 걸 별로 안 좋아해서 미니멀하게 사는 편이에요. 회사 사무실뿐 아니라 집도 정말 기본적인 것들만 갖추고 살고 있어요. 공간감이 있는 걸 선호하기도 하고요 :)
오! 개발자분들 중에서 마우스가 아니라 트랙패드로 개발하시는 분도 있으시다고 들었는데,
정말 트랙패드를 사용하고 계시네요?
첫 회사에서도 그랬고 그전 회사에서도 그랬고 뭔가 장비를 지급받긴 했는데 항상 노트북만 이렇게 들고 다니면서 하던 습관들이 좀 있거든요. 그래서 좀 트랙패드 사용하는 거에 좀 익숙하더라고요. 그리고 트랙패드가 제스처 같은 게 있는데요. 그런게 맥 안에서 활용하기가 되게 좋아서 좀 활용하는 것 같아요. 그런데 제가 요즘에 테니스를 치는데, 손목 보호 측면에서 트랙패드보다는 버티컬 마우스가 좀 더 좋다는 얘기가 많더라고요. 그래서 저도 좀 마우스를 써야 되나 이런 생각을 갖고 있긴 해요.ㅋㅋ
주로 하고 계신 업무에 대해서도 소개해 주실 수 있을까요?
저는 당근마켓 버티컬 사업실 중고차팀에 소속되어 있고, 저희 팀은 목적 조직으로 일하고 있어요. 현재는 팀 내에서 저 혼자 백엔드 영역을 담당하고 있다 보니 IC(Individual Contributor)로서의 역할을 잘 수행하는 게 가장 중요해요. 주로 서비스 운영에 필요한 API와 어드민 기능을 개발하지만 때에 따라서 배포했던 기능의 PRD(Product Requirements Document)를 분석하거나 데이터를 시각화하는 업무 비중도 높아요. 외부 제휴사 미팅도 종종 참여하고 있어요.
혼자서 백엔드 영역을 담당하시면 에러나 버그가 발생했을 때 도움받기 어려운 점은 없으신가요?
아, 제가 팀에서는 그런 백엔드 개발을 혼자 하고 있지만 사내 인프라나 데이터베이스 쪽 전문가분들이 계셔서 정말 크리티컬한 경우에는 같이 봐주시곤 해요. 아직 제가 들어오고 나서 그런 적은 없었지만요. 주로 저희 서비스 내에서 발생하는 버그들이 대부분이었고 보통은 제 코드 실수거나 기존 로직이 이상했거나 이런 경우가 대부분이었기 때문에 크게 어려움은 없었던 것 같아요. 그리고 일단 그런 에러가 났을 때 바로 트래킹할 수 있는 도구들도 많이 활용하고 있어요.
개발자들은 코드 리뷰같은 문화도 있잖아요. 그런 부분에 대해서 아쉽지는 않으신가요?
아니면 따로 하고 계신지 있으신지도 궁금해요!
리뷰는 따로 하고 있지는 않아요. 원래 코드 리뷰를 한때는 되게 많이 하기도 하고 받기도 하고 했었는데요. 아무래도 제품 자체가 좀 빨리 나와야 되는 것도 있고 그러다보니 조금 미뤄지게 되는 부분이 없지 않아 있는 것 같아요. 그리고 환경 특성상 제가 지금 혼자 일하고 있다보니 더더욱 안하게 되는 게 좀 있는 것 같네요. 진짜 그런게 도움이 많이 된다고 느끼면 굳이 안 할 이유는 없지만, 지금은 환경상 어쩔 수 없는 부분이 있다, 그렇게 봐주시면 될 것 같습니다.
그렇다면, 우식님이 개발을 하면서 자주 발생하는 오류나 에러에 대처하는 방법에 대해 소개해 주실 수 있으실까요?
빠르게 Rollback 할 수 있는 프로세스를 만들어두는 것과 Observability를 잘 확보하는 게 중요하다고 생각해요. 테스트를 잘 만들어두는 것도 중요하겠지만 테스트 커버리지를 100%로 유지한다고 해도 사전에 모든 에러를 잡아낼 수는 없어요. 주요 메트릭을 시각화해서 대시보드를 구성해두거나 Sentry 같은 툴을 이용해 에러 추적에 용이한 환경을 만들면 빠르게 대처할 수 있다고 생각합니다.
또 궁금한 점이 있는데요, 우식님은 현재 당근에서 근무하고 계시잖아요.
이전에 계셨던 기업과는 다른 특징이 있을까요? 개발을 하는데 산업군의 특징이 있는지도 여쭤보고 싶었어요.
이전에 만들던 서비스는 완전히 B2B를 포커싱하는 서비스였어요. 아무래도 제가 사업을 하는 사람은 아니라 직접 서비스를 사용해 볼 일은 많지 않았죠. 당근은 주로 중고거래 서비스로 많이
알려져 있는데요. 당근은 ʻ지역생활 커뮤니티’라는 비전을 가지고 있고, 중고거래 외에도 알바,
중고차, 부동산, 동네모임, 커뮤니티 등 다양한 서비스를 운영하고 있어요. 라이프스타일 전체에
관여하는 서비스라고 볼 수 있죠. 그러다 보니 직접 서비스를 사용해보면서 사용자 경험에 대한
전체적인 프로세스를 밟아볼 수 있어요. 실제로 지금 타고 있는 차량도 당근마켓에서 구매했고, 달리는 걸 굉장히 좋아해서 ʻ당근모임’을 통해 러닝 모임을 만들어서 현재 10명 조금 넘는 규모로 모임을 운영하고 있어요.
개발 직군으로 일하고 있지만 제가 직접 사용하는 서비스를 만들다 보니 기획 단계부터 참여하거나
의견을 개진할 수 있는 기회가 많고 타율도 꽤 높아요. 이런 즐거움 덕분에 개발만 하는 게 아니라 좀 더 비즈니스에도 기여하게 되는 거 같아요. 실제로 이렇게 애정을 가지고 개발했던 기능이 좋은 결과 지표를 보여줬을 때 좀 더 동기부여도 얻어갈 수 있는 거 같습니다.
당근에 대한 자랑도 한 번 부탁드립니다!
조금 식상하게 들릴 수도 있겠지만 뛰어난 동료들이 많다는 점이 가장 마음에 들어요. 인재 밀도가
높은 환경에서의 경험을 통해 좋은 직관과 사고방식 등 다방면으로 얻어가는 것들이 많았어요. 저는
환경을 정말 중요하게 여기거든요. ʻ환경’이 8할 정도는 중요한 비중을 차지하는 것 같아요. 손흥민 선수가 프리미어 리그에서 폭발적으로 성장했던 것처럼요. 잠재력이 있는 사람도 환경에 따라서 발현 정도가 크게 차이 날 수 있다고 생각해요. 당근마켓에 합류한 지 9개월이 지났는데 아직도 계속 성장하고 있는게 체감이 돼요. 개인적으로 기존보다 업사이드가 좀 더 열렸다는 느낌도 많이 받고 있어요.
아, 그리고 사내에 데이터베이스 전문가 한 분이 종종 세미나를 진행 해주시는데요. 정말 어디 가서 듣기 힘든 명강의에요. 사내 최고의 복지 중 하나라고 생각합니다. 그 외에도 식대, 간식, 도서, 강의 지원 등 만족스러운 복지도 회사의 장점으로 꼽을 수 있을 거 같아요.
03 당근 개발자에게 물어본 개발자 취업
우식님이 생각하시기에, 이전과 다르게 신입 백엔드 개발자가 되기 위해서 필요한 역량은 무엇일까요?
이전 회사에서 이력서를 검토할 때 신입 개발자분들 지원서도 굉장히 많이 받았었어요. 대부분이 부트캠프를 수료하신 분들이었고, 팀 프로젝트 하셨던 내용을 이력서에 많이 남겨주셨는데요. 저희도 채용에 투자 가능한 리소스가 그렇지 많지 않은 상황이라 어느 정도의 기준이 필요했어요. 동료 한 분이 ‘무언가를 만들고 개발해서 문제를 해결한 경험이 있으신 분’을 기준으로 해보면 어떻겠냐고 제안해주셨고, 저희는 이걸 ‘무만개해' 라는 단어로 축약해서 채용 기준으로 삼았었어요. 덕분에 “무만개해 하신 거 같아서 면접 보고 싶어요.”, “무만개해 하신 분이네요!” 등 서류 검토 프로세스에서 들어가는 커뮤니케이션 비용이 크게 줄었던 기억이 나요.
그만큼 문제를 스스로 해결해본 경험이 실무에서 많이 중요하다는 말씀이시군요!
네, 사실 그런게 인재상에 가깝다고 보면 될 것 같은데, 저는 다른 회사들도 이런 역량을 꽤 많이 중요하게 여기지 않을까 생각하고 있어요. 신입 개발자분들이 선호하시는 회사에는 지원서가 많이 들어와요. 그리고 생각보다 비슷한 형식으로 들어오고요. 여기서 조금만 튀어도 서류 합격률이 올라간다고 생각해요. 팀 프로젝트에서 개인의 기여도를 객관적으로 측정하기에는 어려움이 있어요. 팀 프로젝트 이후에도 혼자서 프로젝트를 진행해봤던 경험이 있으면 좋아요. 디자인이 예쁘거나 시장의 문제를 해결하는 거창한 서비스가 아니라 간단한 슬랙봇이나 To-do list, 게시판 커뮤니티도 상관없어요. 개인 프로젝트를 진행하시고 간단한 소개를 README 파일에 잘 적어두기만 해도 서류 패스에 많은 도움이 될 거예요.
그리고 또 하나의 팁인데 면접 경험은 많을수록 좋아요. 오히려 첫 면접에서는 좋은 성과를 기대하기 어려워요. 면접에서 여러 번 깨져봐야 내가 어떤 부분이 부족한지 인지할 수 있게 돼요. 부족한 점을
찾고 보완하는 사이클을 계속 돌리다보면 지식 수준이 많이 올라올 거에요. 여러 번 거듭하다 보면
점점 자신감도 생기고요. 그리고 면접에서 실패를 맛보면 종종 자존감이 하락할 때도 있는데 이 부분은
꼭 경계하시면서 멘탈 관리 해주시면 좋아요.
그럼 신입 개발자가 특히 가지고 있으면 좋을 것 같은 경험도 있을까요?
GitHub과 같은 코드 저장소 호스팅 서비스를 통해 협업했던 프로젝트 경험이 있으면 좋아요. 각자 브랜치를 나눠서 코딩하다가 각자 작업했던 코드를 한 곳에 병합해보고 이 과정에서 충돌도 해결해보고 PR(Pull Request)도 날려보는 등의 경험이 있으면 입사 후에 더 빠른 온보딩이 가능해요. 그리고 만약 영어에 심리적 거부감이 있으시다면 최대한 이걸 해소하시면 좋아요. 개발 영어는 생각보다 자주 쓰이는 단어의 폭이 그렇게 넓지 않아서 최대한 보려고 노력한다면 점점 좋아지는 걸 체감하실 거예요.
우식님처럼 비전공자에서 시작하는 분들을 위해
어떤 것을 먼저 공부하면 좋을지 소개해 주시면 좋을 것 같아요.
음 어려운 질문이네요. 이걸 보시는 분들이 ‘인터넷의 원리부터 공부하세요’, ‘프로그래밍 언어를 하나 정해서 계산기를 만들어보세요’ 같은 답변을 기대하시지는 않을 거 같아서요. 누가 Python을 배우라고 해서 배웠는데 그 다음엔 뭘 배워야 할지 계속 난감한 상황을 마주하게 되거든요. 개발 쪽이 좀 그런 거 같아요. 결국은 부트캠프의 커리큘럼을 따라가거나 본인이 직접 찾아가며 로드맵을 세워야 해요. 그래서 몇 가지 채널을 소개해드리는 답변이 좋을 거 같아요.
제게는 ‘생활코딩’ 채널이 첫 이정표 역할을 해주었어요. 정말 백지 상태라면 ‘WEB1- HTML & Internet’부터 보시는 걸 추천해요. 초기 방향을 잡는 데 많은 도움이 됐어요.
또 본인이 공부하고 싶은 직군을 어느 정도 결정했다면 Developer Roadmaps(roadmap.sh) 사이트를 참고하시면 좋아요. 최신 트렌드를 반영해서 매년 업데이트 되고 있어요.
이렇게 기본기가 잡히면 실제 채용 사이트에서 JD(Job Description)를 참고하셔서 학습하시면 좋아요.
오, JD를 참고해서 학습하는 걸 추천해 주시는 이유가 있나요?
사실 백엔드 쪽은 이 JD가 그렇게 많이 변하지는 않는 것 같아요. 제가 처음 취업했을 때랑 지금이랑 기업에서 요구하는 역량은 되게 비슷하고 좀 느껴요. 모든 걸 다 공부할 수 없으니 선택을 해야 하는데 JD를 보면 가고 싶은 회사에서 요구하는 걸 중점적으로 할 수 있고요. 가고 싶은 회사가 없다면 회사에 공통적으로 이렇게 들어가 있는 것들이라든지, 그런 공통 역량을 공부하는게 효율이 좋은 거죠. JD를 보면서 공부한다는 건 채용 시장에서 수요가 많은 포지션을 공부한다는거니까, 그만큼 합격률이 올라갈 수도 있겠죠?
다른 대기업이나 이런 데서는 인재상이나 요구하는 역량이 되게 추상적인 경우가 많은데, 개발 직군은 그런 게 없는 것 같아서 좋은 것 같아요. 우리가 원하는 기술, 보유하고 있어야 하는 기술은 이거야, 이렇게 딱 명시해 주니까 취준생 입장에서도 오해가 없죠. 명시된 부분을 공부하고 이거에 대한 지식 수준을 넓혀오면 되니까 그래서 JD를 보는 게 도움이 많이 되는 것 같아요.
동종업계로 이직 또는 취업하기 위해서 어떤 점에 관심이 있으면 좋을까요?
아무래도 개발 직군으로 이직이나 취업을 하기 위해서는 기본적인 CS 지식이랑 채용 시장에서 자주 언급하는 스킬의 사용 경험이 있으면 좋아요. 이를테면 백엔드 개발자는 주력 언어와 프레임워크 외에도 AWS, RDB, MongoDB, Redis 등의 키워드가 자주 언급돼요.
마치며,
백엔드 개발자로서, 백엔드 개발자를 한 마디로 표현하자면?
줄곧 제품팀에서 일한 경험이 많다보니 ‘페이스 메이커’라는 단어로 표현하고 싶어요. 저는 백엔드 포지션이 팀의 페이스에 영향을 많이 준다고 생각하는데요. 그 이유가 몇 가지가 있는데 프론트 개발보다 한 템포 빠르게 작업이 들어가는 경우가 많아요. 백엔드 개발이 늦춰지면 프론트 개발자는 하던 일을 중단하고 우선순위에 따라서 컨텍스트를 바꿔 작업하거나 임시 데이터를 이용해 개발해야 하는데 이는 생산성 저하에 꽤 큰 요인이 될 수 있어요.
그리고 페이스 메이커는 선수가 좋은 기록을 낼 수 있도록 보조하는 역할을 해요. 백엔드 개발자의 역할도 좀 더 보조하는 부분이 많다고 느껴요. 가시적인 결과물이 없을 때가 많아서 상대적으로 주목받지 못하는 경우도 종종 있고요. ‘얼레리꼴레리’, ‘휘뚜루마뚜루’ 같은 단어들을 들어보셨나요? 사실 여기서 ‘꼴레리’, ‘마뚜루’는 그저 운율을 맞춰주기 위해서 사용되는 단어에요. 그렇지만 ‘얼레리'라는 단어가 혼자 쓰이는 경우는 없잖아요. ‘얼레리'는 ‘꼴레리'가 더해져서 ‘얼레리꼴레리'가 되어서야 비로소 오래도록 구전될 수 있었어요. 프로덕트도 비슷하다고 생각해요. 결국 사랑받고 좋은 프로덕트를 만드려면 백엔드 개발자의 역할이 정말 중요해요.
지금도 열심히 개발 공부를 하고 있을 개발자 취준생 분들에게 한 마디 해주세요!
제가 뭐라도 되는 사람은 아니라서 제 생각을 토대로 조언을 남겨볼게요. 저는 커리어를 마라톤에 비유하는 걸 좋아해요. 평생 이 일을 해야 할 수도 있고, 어쩌면 중간에 다른 일을 하고 싶을 수도 있고요. 그래서 너무 당장의 결과에 목숨 걸기보다는 과정에서 얻는 레슨런을 중요하게 여기려고 노력해요. 제가 나중에 실패를 맛보고 다시 재개하더라도 그 과정에서 얻었던 교훈들이 저를 많이 이끌어 줄거라는 믿음이 있어서요. 그래서 취준생 여러분들도 당장의 우선순위는 정하시되, 건강 관리 잘하시고 가족과 지인들이랑 좋은 관계를 유지하시면서 달리셨으면 좋겠어요. 개발 공부는 결국 불필요한 시간을 줄이고, 좋은 생활패턴을 유지하면서 부지런하게 오래도록 하는 분들이 이길 수밖에 없는 게임인 거 같아요 :)
제로베이스에서는 취업이라는 목표를 달성해 볼 여러분을 기다립니다.
제로베이스에서 시작해 보세요.
취업은 제로베이스
추천 컨텐츠