차봇의 곳곳에서 멋지게 활약하고 있는 크루들을 만나 일과 삶에 관한 이야기를 나누는 인터뷰 시리즈 ‘크루탐구생활’의 이번 주인공은 테크팀의 프로트엔드 개발자 차주환 님입니다.
차봇에서 테크팀은 어떤 역할을 맡고 있을까요? 자동차가 움직이기 위해서는 동력을 생성하는 엔진이 있어야 하는 것처럼, 차봇이라는 서비스가 동작하기 위해서는 테크팀의 노력이 꼭 필요합니다.
그중에서도 사용자 인터페이스를 개발하고 화면 속 다양한 시각적 요소와 기능을 설계 및 구현하는 프론트엔드 개발자는 사용자 경험(User Experience)을 완성하는 일을 하고 있는데요. 지금부터 차주환 크루를 만나 차봇의 프론트엔드 개발자로서 어떤 일을 하고 있는지, 또 어떤 목표를 꿈꾸고 있는지 이야기를 들어볼까요?
“병역특례로 시작한 차봇과의 인연”
Q. 반갑습니다, 차주환 님! 먼저 차봇에서 어떤 역할을 담당하고 있는지 소개 부탁드려요!
안녕하세요. 테크팀에서 프론트 개발을 맡고 있는 차주환입니다. 주로 웹이나 앱의 화면을 구현하고 있습니다. 차봇에서 진행하는 프로젝트에서 화면에 보이는 모든 부분을 개발하는 일을 한다고 생각하시면 이해가 쉬우실 거에요. 차봇 블로그와 매거진 사이트, 차봇 프라임 협약서 등을 진행했고 그 이후로도 여러 작업을 진행하고 있습니다.
Q. 주환 님이 차봇에 합류하게 된 계기는 무엇인가요? 어떠한 매력에 이끌리셨나요?
졸업 후 병역특례를 염두에 두고 구직활동을 하고 있었는데, 학교에 올라온 공고 목록에 차봇이 있었어요. 찾아보니 상당히 매력적인 회사라고 느껴졌고, 제가 하나의 서비스를 계속 개발 및 유지보수하는 경험을 쌓고 싶다는 마음도 있어서 차봇에 지원했습니다.
당시 차봇은 무엇보다 상당히 규모도 있을 뿐더러 되게 안정적인 기업이라는 느낌을 받았어요.
학교 홈페이지에 올라오는 공고가 대부분 스타트업이다 보니 아무래도 불안정한 곳이 많았는데요. 저는 병역특례를 염두에 두고 있었기 때문에 안정성이 중요했어요. 갑자기 회사가 폐업하는 경우, 근무지를 옮길 수는 있지만 그러려면 신경 써야 할 부분이 많고 불편하니까요.
그런데 차봇이 당시 공고가 올라오던 스타트업 중에서는 상당히 뿌리가 깊고 튼튼해 보였습니다. 시리즈A를 막 유치한 지 얼마 안 되었을 때거든요. 또, 차봇의 사업이 흔히 외주나 SI라고 부르는 단순 업무 계열이 아니라 차봇만의 독창적인 서비스를 만들고 있는 곳이라는 점도 무척 끌렸고요.
Q. 병역특례가 가능한 회사를 찾아야 하다 보니 아무래도 기업이나 직무 선택의 범위가 한정적이라는 어려움이 있었을 것 같은데요. 지금 차봇에서 프론트엔드를 담당하고 계시는데, 본래도 이 분야의 업무를 희망하셨나요?
원래는 백엔드 개발에 더 관심이 높았어요. 입사할 때도 데이터베이스나 서버 등을 개발 및 관리하는 백엔드 파트로 지원했었고요. 또, 당시 제가 봤던 공고에는 보안과 관련된 업무도 쓰여 있어서 그쪽 일을 하게 되지 않을까 생각했습니다. 백엔드와 보안 파트를 병행해서 역량을 키워 나가고 싶은 마음이 있었거든요. 하지만 실제 입사 후에는 새로운 역할이 부여되면서 오히려 개발 역량을 높일 수 있는 기회가 되었다고 생각해요.
Q. 원래는 백엔드 개발자를 희망했다고 말씀하셨는데요. 입사하기 전에는 주로 백엔드 관련해서 공부하셨나요?
학교에 다닐 때는 주로 보안에 대해 많이 공부했어요. 그렇지만 스스로 찾아 배우는 거다 보니 좀 ‘야매’로 공부하는 느낌이 있었죠. (웃음)
사실 학교에서는 실무에서 유용할 만한 내용이나 취업에 도움이 될 만한 내용을 다루는 교과과정이 따로 없었어요. 그래서 저는 동아리 활동을 하거나 개인적으로 공부하면서 취직을 준비했는데요. 모의 해킹 대회를 나갔던 것도 무척 재미있는 경험이었습니다.
Q. 차봇에 실제로 입사해 보니 어떤 점이 좋으셨나요?
일단 첫째로는 사회생활 통해 경제적 수입이 생긴다는 거였어요. (웃음) 그 다음에는 업무의 지속성이 좋았어요. 학교에서는 새로운 프로젝트를 시작하고 기능을 완성하거나 시간이 어느 정도 지나면 거기서 그냥 끝맺고 다시 들여다보지 않잖아요. 그러다 보니 그냥 각자가 맡은 부분을 빨리빨리 구현하는 게 제일이었어요.
그런데 회사에서는 코드를 작성하면 끝인 게 아니라, 유지보수까지 고려해야 하는 게 매우 달랐어요. 다른 동료들과 논의할 때도 코드의 구조나 방향성을 어떻게 하면 유지보수가 쉽게 만들 수 있을지 고민하게 되더라고요. 그런 부분이 색달랐고 또 재미있었습니다.
그리고 차봇은 분위기가 정말 좋아요. 소통하는 분위기가 잡혀있고, 딱딱하지 않게 다같이 웃으면서 일하는 느낌이라 좋습니다.
Q. 그렇다면 반대로 아쉬웠거나 힘들었던 점도 있으셨나요?
막 입사한 직후에는 솔직히 정신이 없었어요. 적응하기 바빴습니다. 학교라는 집단에서는 함께하는 동료가 동급생이거나 나이 차이가 크게 나도 한두 살 정도이다 보니 ‘나이 차이’에 대해 인지할 일이 거의 없는데요. 그런데 회사에 들어오니 대부분 나이가 선생님 뻘인 분들이 있다 보니 굉장히 괴리감이 느껴졌습니다. 직급이 똑같은 수평적인 관계의 동료면서 나이 차이가 크게 나는 상황을 처음 겪으니까 너무 어색하더라고요. (웃음) 그런 낯선 상황에 적응하는 게 처음에는 힘들었습니다.
[Work Story]
“무결성주의자의 도전을 통한 성장”
Q. 이제 차봇에서 일한 지도 2년이 넘으셨는데요. 그동안 차봇에서 일하며 어떤 도전을 마주하셨나요?
스스로를 이겨내야 하는 도전이 많았다고 생각합니다.
차봇 앱은 빠른 속도로 성장하고 있고 기능도 매우 다양한 앱인데요. 그러다 보니 개발 일정이 빡빡할 때도 있고, 만들어본 적 없는 새로운 기능을 구현하기 위해 시행착오를 겪어야 할 때도 있어요. 그러면서도 일정 수준 이상의 퀄리티를 보장해야 하기 때문에 작업 중 속도와 퀄리티를 놓고 저울질을 할 때가 많았습니다. 그런 도전을 계속한다는 게 쉽지는 않았지만 뿌듯하기도 했어요.
특히 리액트 네이티브(React Native) 전환이 가장 도전적인 프로젝트였습니다. 리액트 네이티브로 개발하는 게 처음이었고, 차봇 앱의 토대를 단단하게 만들기 위한 리뉴얼이 목적인 프로젝트였다 보니 고민할 거리가 더욱 많았습니다. 더 나은 코드를 짜려고 이것저것 찾아보며 공부했어요. 기존 차봇 콘텐츠 채널에는 없던 자체 플레이어를 새로 만들었는데, 그게 가장 뜻깊은 성과라고 생각합니다.
Q. 리액트 네이티브 전환을 하면서 기존 차봇 콘텐츠 채널에 없던 자체 플레이어를 새로 만들었다고 말씀하셨는데, 좀 더 구체적으로 알 수 있을까요?
차봇 라디오가 개발되던 당시에는 개발 리소스 부족 등의 문제로 콘텐츠를 웹뷰(Web view) 방식으로 화면에 보여 드려야 했어요. 기존 차봇 앱 같은 경우 화면에 콘텐츠가 보이기 때문에 꼭 앱에서 작동하는 것처럼 보이지만, 실제로는 우리가 컴퓨터로 웹 브라우저에 접속한 것과 크게 다르지 않거든요. 웹 화면을 앱을 통해 보여주는 것뿐입니다.
좀 더 쉽게 설명하자면 음악 스트리밍 서비스에서 경험할 수 있는 문제와 비슷한데요. 스마트폰에서 음악 스트리밍 서비스를 사용할 때 웹에서 그냥 사용할 수도 있고, 앱을 설치해서 쓸 수도 있잖아요. 앱에서는 보통 화면 잠금을 해도 음악이 계속 재생되는 기능이 있지만, 웹에서 사용하는 경우 그런 기능이 없어서 화면 잠금을 하면 음악이 뚝 끊겨버리죠.
차봇 라디오에서도 똑같은 문제가 생겼어요. 웹뷰라서 기본적인 기능을 만들기도 쉽지 않았거든요. 우리가 흔히 사용하는 다른 서비스에서는 다 되는 기능인데도, 앱이 아니라 웹뷰라서 구현이 안 되는 게 많다 보니 ‘이게 왜 안 돼요?’라는 말을 자주 들었어요. 그런데 이제 리액트 네이티브 전환을 진행하면서 자체 플레이어를 만들어 그 문제를 극복한 것이죠. 정말 중요하고 변화가 큰 리뉴얼이었습니다.
그리고, 프로젝트 완료 후에는 무사히 개발되어서 다행이라는 생각이 제일 먼저 들었어요. 실제 서비스되기 시작했을 땐 완전히 걱정 반 기대 반이었죠. 오류만 안 나면 좋겠다고 생각했습니다. (웃음)
Q. 그동안 다양한 프로젝트를 경험하면서 주환 님만의 일하는 방식이나 노하우도 생겼을 것 같다는 생각이 드네요.
저만 할 수 있는 특별한 방식이나 노하우 같은 건 딱히 없어요. 이것저것 다 하다 보니 딱 하나를 특출나게 잘한다고 말할만한 건 없다고 생각하거든요. 저만의 노하우는 아니지만, 금요일마다 차봇의 프론트엔드 개발자들이 모여서 하고 있는 코드 리뷰가 제 업무 역량을 높이는 데 크게 도움이 되고 있습니다.
코드 리뷰는 각기 작업하는 코드들의 일관성을 맞추기 위해 소통하는 자리라고 보시면 될 것 같습니다. 같은 분야에서 일하는 개발자라고 해도 저마다 코딩 스타일이나 알고 있는 지식의 양과 범위가 다르다 보니 같은 기능을 만들더라도 구현하는 방식이 상당히 다르거든요. 그래서 일관성을 맞추는 작업이 정말 중요해요.
또, 코드 리뷰에서는 어떤 업무를 어떻게 진행하고 있는지 이야기를 나누고, 공용으로 사용할 수 있는 툴 등을 공유하거나 코드에 관한 정책을 논의하고는 해요. 서로의 코드를 보고 오타 등의 문제나 건의할 점을 찾기도 하고요.
Q. 그간 여러 프로젝트를 진행하면서 특히 자주 맞닥뜨린 문제가 있다면 무엇인가요?
빌드 에러가 제일 흔해요. 빌드(build)는 쉽게 말해서 작성한 소스 코드를 실제로 동작하는 파일로 바꾸는 작업이라고 보시면 되는데요. 소스 코드에 잘못된 부분이 있거나 설정에 문제가 있는 등 다양한 상황에서 빌드 에러가 생길 수 있어요.
그 다음으로는 어떤 기능을 구현해야 하는 상황인데, 그걸 어떻게 만들어야 할지 감을 잡지 못할 때가 종종 있었어요. 인터넷에서 정보를 찾아보고 정답이 안 나오면 주변의 경험이 많은 다른 개발자분들께 여쭤보고 문제를 해결했습니다. 특히 승철 님 도움을 많이 받았어요.
Q. 사람마다 업무를 할 때 가장 중요하다고 생각하는 부분이 다를 텐데요. 주환 님은 무엇을 가장 우선순위에 두시나요?
무결성*을 가장 우선순위에 두고 있습니다. 물론 완벽하게 무결성을 지키는 건 불가능해요. 그렇지만 무결성을 잘 지키지 않고 개발하면 한 번에 끝날 일을 두 번 세 번씩 다시 해야 하는 상황이 자주 발생하더라고요. 계속 오류가 발생하게 되거든요.
오류가 생기면 그걸 또 수정해야 하니까, 다른 프로젝트를 진행하다 가도 예전에 진행했던 프로젝트에 생긴 오류를 수정하러 가야 하는 경우도 많았습니다. 이미 프로덕션으로 내놓은 앱에 심각한 오류가 생긴다는 건 일어나서는 안 되는 일인데, 무결성을 지키지 않으면 그런 일이 생길 수 있어요.
또, 보안의 측면에서도 무결성은 정말 중요하고요. 아무리 사소한 오류라고 해도, 그 탓에 생기는 작은 취약점 하나가 심각한 보안 문제로 이어질 수 있거든요. 물론 개발 후에 QA를 진행하고 그 과정에서 오류를 걸러내지만 그래도 개발자가 기본적인 테스트를 어느 정도 진행하는 게 꼭 필요하다고 생각합니다.
*무결성(Integrity): 데이터, 소프트웨어, 시스템 등이 의도하지 않은 요인으로 변경되거나 손상되지 않고 완전성, 정확성, 일관성을 유지함을 보장한다는 의미의 ICT 용어. 일반적으로 데이터의 무결성을 가리키는 말로 쓰임.
Q. 무결성을 지키기 위해 개발자가 기본적인 테스트를 진행해야 한다고 말씀하셨는데요. 구체적으로 어떻게 진행되나요?
다른 회사의 개발팀에서도 비슷하게 진행하리라고 생각하는데요. 보통 무언가를 개발할 때 전체를 다 만들고 나서 테스트를 하는 게 아니고, 일부 기능을 만든 다음에 정상적으로 작동하는지 확인하기 위해 테스트하기 위한 코드를 따로 작성해서 실제로 동작 시켜봐요. 이런 식으로 개발을 진행하면서 동시에 테스트도 계속 진행이 되는 거죠.
Q. 가장 중요한 업무 스킬로 커뮤니케이션 능력을 꼽는 분들이 많은데요. 주환 님은 업무 중 커뮤니케이션이 잘 안 되어 곤란했던 경험이 있나요?
아직 크게 어려운 일은 없었는데, 종종 직무에 따라 쓰는 용어가 달라 오해가 생기는 경우가 있었어요. 같은 프로젝트를 하면서 같은 내용에 대해 말할 때도 디자이너의 용어와 PM의 용어가 다르더라고요. 이게 통일되지 않다 보니 인수인계를 해야 할 때나 문서를 남겨놓을 때 헷갈리기 쉬워요. 그래도 이 부분은 서로 계속 소통을 이어간다면 큰 문제가 생기지는 않을 거로 생각합니다.
특히나 개발자의 용어는 다른 직무의 분들이 못 알아듣는 경우가 많아서 나름대로 최대한 쉽게 비유하려고 노력하고 있는데요. 개발 용어는 아무래도 경력이 많은 개발자분들이 가장 설명을 잘하시더라고요. 또, 개발자끼리도 아는 용어나 쓰는 용어가 다 다를 수 있죠. 개발 용어 중에 잘 모르겠다 싶은 게 있으면 인터넷으로 찾아보고 정 안 되면 주변에 물어보고 있습니다. 다행히 차봇에 계시는 분들은 대부분 서로 잘 이해하고 소통도 잘해서 크게 불편함은 없었습니다.
Q. 차봇에 합류한 후 조직개편에 따른 팀 이동도 여럿 있으셨을 텐데요. 기억에 남는 팀 문화나 에피소드가 있다면 소개해 주세요.
우선, 가장 안정적인 팀은 개발 인력 중심의 지금의 테크팀이라고 생각합니다. 제가 회사에 막 들어왔을 때는 아직 정신이 없기도 했고, 주니어이기 때문에 아직 개발에 적극 참여하던 시기는 아니었거든요. 그러다가 개발 조직이 창설되던 때부터 개발자로서 제 회사생활도 본격적으로 시작되었고, 현재는 메인 프로젝트도 담당할 만큼 역량을 키울 수 있어 현재의 팀에 가장 만족하고 있습니다.
프로덕트 유닛과 리테션팀에 있을 때는 매일 아침마다 모여서 데일리 스크럼을 진행했어요. 업무 공유도 하고 간단히 이야기도 나누는 자리였는데, 서로 다른 직무를 담당하고 있는 팀원들 덕분에 더 다양한 생각의 스펙트럼도 넓힐 수 있어 좋았어요. 또, 리테션팀 소속일때는 아침마다 모영욱 PD님이 계속 농담도 던지시고 다른 분들도 잘 받아 주셔서 다들 활기차게 업무를 시작할 수 있었어요.
Q. 직장인이라면 대부분 업무 도중 크고 작은 어려움을 경험하는데요. 주환 님은 그럴 때 어떻게 극복하시나요?
다른 개발자와 상의해야 할 필요가 있는 문제면 상의하고, 그 외는 대부분 스스로 구글링해서 해결책을 찾는 편입니다. 개발자분들은 다 이렇게 할 거로 생각하는데, 구글에 영어로 검색하면 웬만한 해결책은 다 나오거든요. 구글에는 모든 답이 있습니다. (웃음) 제가 영어를 잘하지는 못하지만, 개발 용어는 원래 영어인 게 많다 보니 읽는 데 큰 어려움은 없어요. 모르는 부분은 파파고 번역 같은 걸 이용하고요.
Q. 차봇에서 새롭게 도전해 보고 싶은 프로젝트나 업무가 있으신가요?
동적인 화면을 많이 만들어보고 싶어요. 대표적으로 토스 앱처럼요. 토스 앱은 터치했을 때 화면이 전환되거나 하는 부분에서 자연스럽게 움직이는 애니메이션이 많이 삽입되어 있어서 시각적으로 굉장히 풍부하고 부드러운 느낌이에요.
특히 차봇 앱의 ‘차량 관리’에 다양한 인터렉션이 들어가면 정말 좋겠다고 생각합니다. 지금은 조금 딱딱하게 느껴지거든요. ‘차량 관리’는 결국 스마트폰 앱을 통해 나의 차 정보를 확인하기 위한 탭이니까, ‘내 손 안의 차고’ 같은 느낌으로 연출하면 멋지지 않을까요? 물론 앱 전체의 느낌과도 맞아떨어져야 하고 디자인적으로 생각해야 할 부분도 많아서 지금 당장 할 수 있는 일은 아니라고 생각하지만, 언젠가 해보면 좋겠다 싶어요.
[Life Story]
“성격은 무채색이지만, 일은 선명하게”
Q. 이제 주환 님 개인의 삶에 관한 이야기를 나누어 보려고 하는데요. 주환 님이 지금까지 살면서 가장 기억에 남는 도전과 실패의 경험은 무엇인가요?
학창 시절에 지인들끼리 모여 게임을 만든 적이 있는데, 그게 가장 기억에 남습니다. 제가 그때 게임을 좋아해서 게임 개발에 도전했던 건데요. 인원이 적어 한 사람이 여러 역할을 맡아야 했던 데다 제대로 된 멘토링을 받을 수 없는 환경이다 보니 쉽지 않았어요.
그래도 서로 아는 정보를 공유하고 또 계속 공부하며 필요한 역량을 조금씩 성장시켜 나갔어요. 처음에는 성과가 굉장히 불만족스러웠지만 차츰 개선되면서 나중에는 ‘이 정도면 게임이다’라고 스스로 자부할 만한 작품을 완성했습니다. 그때 잘 모르는 분야라고 해도 스스로 하고자 노력한다면 충분히 할 수 있다는 점을 배웠다고 생각합니다.
Q. 주환 님은 직장 생활이나 일상에서 언제 가장 행복하다고 느끼시나요?
단순하고 사소한 일에서 행복감을 느끼는 편이에요. 예를 들면 엘리베이터가 타이밍에 딱 맞게 온다든지요. 사소한 행운이 참 기분 좋더라고요. 제가 특별히 긍정적인 성격이라서 그런 건 아니에요. (웃음) 오히려 성격은 무채색에 가깝다고 생각합니다. 주변에 맞춰가는 경향이거든요. 잘 안 맞는 스타일과 함께할 때도 최대한 맞추려고 노력하는 편이고요.
Q. 평소 취미나 관심 분야는 무엇인가요?
1인 게임 제작이 취미예요. 개발부터 BGM·SE 등의 사운드 작업, 일러스트, 도트 등 모든 부분을 혼자 다 해요. 간단하게나마 하나의 게임을 처음부터 끝까지 내 역량으로 만드는 거죠. 물론 게임을 하는 것도 좋아해요. 친구랑 같이 게임을 하면서 스트레스를 해소하거든요. 주로 ‘로스트아크’를 많이 해요.
Q. 2024년 달성하고 싶은 주환 님만의 목표가 있다면 무엇인가요?
일단 첫째로는 회사에서 별 탈 없이 지내기요. (웃음) 그 다음엔 ‘운동’을 새해 목표로 잡고 있어요. 기본적인 근력을 키우고 싶거든요. 또, 운전을 시작하려고 합니다. 올해 운전 연수도 들을 계획이고요.
Q. 주환 님이 상상하는 ‘10년 후 나의 모습’은 어떤 모습인가요?
프리랜서로 어느 정도 돈을 번 다음 세계 여행을 다니고 있을 것 같아요. 지인 중에 실제로 그런 라이프스타일로 살고 있는 분을 보고 저도 그런 삶을 꿈꾸게 되었죠. 유럽에 있는 여러 국가를 두루 둘러보고 싶어요. 점점 나이를 먹다 보면 나중엔 그렇게 자유로운 마음으로 여행을 다니는 게 어려워지지 않을까 싶거든요. 해야 할 일도 많아질 거고 책임도 커질 테니까요.
Q. 마지막으로, 앞으로 차봇에서 어떤 개발자로 기억되고 싶은지, 그리고 특별히 감사의 마음을 전하고 싶은 분이 있다면 말씀해 주세요.
더도 말고 덜도 말고 ‘개발 잘하는 사람’으로 남고 싶습니다. 사실 개발 못하는 사람만 아니면 좋다고 생각해요. 그렇기에 제가 짠 코드를 보고 ‘엉망이네’라는 이야기가 나오지 않도록 꾸준히 학습하고, 더 심혈을 기울여 개발을 해 나갈 것이고요.
그리고, 정문기 부문장님과 승철 님께 정말 감사드리고 싶습니다. 제가 업무 중 모르는 게 있거나 난관에 부딪힐 때마다 항상 도움을 많이 주셨어요. 두 분의 가이드가 없었다면 힘든 일이 많았을 것 같습니다. 감사합니다.