최근 메신저 서비스를 만드는 회사에 재직중이신 시니어 개발자분과 커피챗을 진행했다. 회사의 공식 면접이 아니라, 정식으로 지원하기 전에 회사에 대해 더 알아보고, 내가 해 온 경험이 그곳에서 필요로 하는 역량과 잘 맞을지 이야기해 보고 싶어 먼저 요청한 자리였다.
아쉽게도 커피챗이 면접으로 이어지지는 않았다. 그 이유를 한 가지로 단정할 수는 없지만, 지금까지 쌓은 경험을 돌아보고 이직을 위해 어떤 경험을 더 쌓아야 할지 고민하는 계기가 됐다.
이직을 준비하면서 관심이 가는 곳은 OTT, 웹툰, 메신저처럼 핵심 기능을 네이티브로 깊이 다뤄 볼 수 있는 회사들이다. 끊김 없는 영상 재생, 긴 콘텐츠의 부드러운 스크롤, 메시지의 실시간 수신과 동기화처럼 사용자가 매일 겪는 경험을 개선하는 일을 해 보고 싶다.
그런데 그 서비스의 핵심 기능과 내 경험을 나란히 놓아 보면 빈틈이 보인다. 회사에서도 사이드 프로젝트에서도 플레이어나 라이브 영상, 웹툰 뷰어, 소켓과 푸시 알림을 활용한 실시간 채팅을 실제 제품으로 만들어 본 적이 없다.
그래서 요즘은 이런 질문들을 자주 되뇌고 있다. '원하는 분야의 네이티브 경험을 앞으로 어떻게 쌓고, 내가 해 온 일은 어떻게 설명해야 할까?'
당장 답을 내릴 수는 없겠지만, 최근에 했던 생각과 들었던 조언을 정리해 보려고 한다.
그동안 다양한 경험을 쌓기 위해 여러 IT 동아리에 참여했다. 함께 프로젝트를 할 백엔드 개발자/디자이너를 만나, 혼자서는 만들기 어려운 앱을 팀의 힘을 빌려 만들어 보고 싶었다.
하지만 동아리의 프로젝트에는 대게 정해진 출시 시점, 즉 데드라인이 있다. 그 안에서 기획과 디자인을 정하고, 서버와 앱을 개발하고, 동작하는 제품을 출시해야 한다. 만들어보고 싶은 기능이 있더라도 어느 정도 타협해서, 기능을 덜어낸 MVP부터 만들게 된다.
그렇게 진행한 프로젝트는 데이터를 등록하고 조회하고 수정하는 기능이 중심인 경우가 많았다.
넓게 보면 CRUD 게시판을 크게 벗어나지 않앗다...ㅋㅋ..
팀으로 앱을 출시하는 경험은 쌓였지만, 영상 재생이나 실시간 채팅처럼 관심 있는 분야의 핵심 기능을 직접 구현해 볼 기회는 많지 않았다.
협업이나 API 연동, 화면 상태 관리를 개선해보는 경험도 물론 중요한 일이다. 다만 프로젝트를 여러 번 했다고 해서 원하는 분야의 기술의 깊이까지 자연스럽게 쌓이는 것은 아니었다.
함께 만들 사람을 찾으면 원하는 경험도 얻을 수 있을 거라고 생각했던 것 같다. 하지만 정해진 기간 안에 제품을 출시하는 데 집중하다 보니, 정작 깊이 다뤄 보고 싶었던 기능은 계속 뒤로 밀렸다.
이제는 원하는 경험을 쌓을 기회가 생기기를 기다리기보다, 직접 다뤄 보고 싶은 기능을 중심으로 프로젝트를 만들어 가고자 한다.
회사에서는 WebView 비중이 높은 하이브리드 앱을 주로 다루고 있다. 네이티브 개발은 BLE·건강 앱 연동이나 카메라 촬영처럼 기기 기능에 직접 접근해야 하는 작업을 중심으로 해왔다. 하지만 그 경험은 내가 관심 있는 서비스의 핵심 기능과는 결이 다르다.
그래서 회사에서 한 일을 설명할 때도 고민이 생긴다. WebView 중심이라고 짧게 말하면 실제로 했던 네이티브 작업이 잘 드러나지 않는다. 반대로 사용한 기술만 나열하면 어떤 문제를 해결했는지 전달하기 어렵다.
사이드 프로젝트를 통해 네이티브 앱을 꽤 많이 만들어왔다고 생각한다. 그런데 이력서나 포트폴리오를 심도있게 확인하지 않는 짧은 커피챗에서는 그 경험을 충분히 설명하기가 어려웠다. 경험을 쌓는 것과 그 경험을 상대가 이해할 수 있도록 설명하는 것은 또 다른 문제였다.
그동안 회사 밖에서도 시간을 많이 썼는데, 그 노력이 대화 안에서 잘 전달되지 않으면 답답하다. 관심 있는 분야를 직접 개발, 경험 해보지 않았다는 사실이 내가 해 온 일보다 더 크게 남는 것 같기도 하다.
네이티브 화면을 많이 만들어봤다는 설명에서 더 들어가야 할 것 같다. 어떤 흐름을 구현했고, 어디서 막혔고, 왜 그 방식을 선택했는지를 정리해야 한다. 결과 화면과 코드 사이에 있었던 판단도 함께 보여 주고 싶다.
새로운 분야를 해보지 않았다는 이유로 기존 경험까지 전부 부족하다고 묶어 버리고 싶지는 않다. 이미 한 일을 정확히 정리하면서, 앞으로 필요한 경험의 빈틈도 구체적으로 찾아보려고 한다.
지금부터 부족한 경험을 채우면 된다고 생각하면서도, 그러지 못한 채 시간만 더 흐르면 어쩌나 하는 걱정이 있다. 앞으로도 지금과 비슷한 업무를 이어 가다 보면, 내가 원하는 네이티브 개발 경험은 충분히 쌓지 못한 채 연차만 높아질까 봐 걱정된다.
연차가 올라갈수록 실무에서 더 깊이 다뤄 본 문제와 그에 걸맞은 역량을 기대받을 텐데, 정작 내가 쌓은 경험은 지원하려는 분야에서 요구하는 것과 다르면 어쩌지 싶다. 시간이 지날수록 그 간극을 메우기 더 어려워질까 봐 불안하다.
사이드 프로젝트를 계속하면 된다는 생각도 한다. 실제로 그렇게 해 왔지만, 회사에서 대부분의 시간을 보내면서 그 밖의 시간으로 부족한 부분을 계속 채워야 한다는 부담은 남는다.
이것은 앞으로 반드시 그렇게 될 것이라는 판단은 아니다. 다만 경력을 쌓으면 이직도 쉬워질 거라고 생각했던 때와 달리, 지금은 시간이 흐르는 것 자체에도 조급함을 느낀다.
이런 생각을 하다 보면 첫 회사를 선택하던 때로 돌아가게 된다. 당시에는 빠르게 온 제안을 받아 경력을 쌓고, 이후에 경력을 쌓은 뒤에 원하는 곳으로 이직하면 된다고 생각했다. 일단 경력을 쌓기 시작하면 다음 선택은 조금 더 쉬워질 거라고 기대했다.
돌아보면 당시 어떤 제품과 도메인에서 경험을 쌓고 싶은지 더 충분히 고민했으면 좋았겠다는 생각이 든다. 첫 회사에서 어떤 제품을 만들고 어떤 문제를 다루는지가 이후의 경력에 영향을 줄 수 있다는 점을 더 자세히 생각했으면 어땠을까 싶다.
그렇다고 회사에 책임을 돌리고 싶은 것은 아니다. 회사는 제품에 필요한 일을 하고, 나는 그 안에서 맡은 일을 해 왔다. 내가 원했던 방향과 실제로 쌓을 수 있는 경험을 당시의 나는 충분히 비교하지 못했던 것 같다.
그러나 이미 지나간 선택을 바꿀 수는 없다. 다른 곳에 갔다면 지금이 더 좋았을지도 알 수 없다. 후회만 반복한다고 다음 경험이 생기는 것도 아니다.
지금 할 수 있는 것은 다음 선택의 기준을 좀 더 분명히 만드는 일이다. 경력이 쌓인다는 사실에만 기대기보다, 내가 가고 싶은 곳에서 어떤 문제를 다루고 싶은지 계속 확인해야겠다.
뜬금없지만 당근 Android 밋업에서 들었던 원격 Gradle 빌드 캐시 발표가 기억에 남는다. 모듈이 많은 프로젝트에서 여러 사람이 빌드할 때 반복되는 작업을 줄이는 이야기였다.
혼자 개발할 때는 빌드가 느려도 내가 조금 더 기다리는 문제로 생각했다. 하지만 팀원 수와 작업 횟수만큼 그 기다림이 반복되면 팀 전체가 함께 해결해야 할 문제가 된다. 발표를 들으며 빌드 시간을 줄이는 일이 여러 사람의 작업 환경을 바꾸는 일이 될 수 있다는 점이 인상적이었다.
발표에서는 Gradle 소스까지 살펴보며 동작을 이해하고, 원격에서 캐시를 공유하는 구성을 설명했다. 로컬 캐시도 함께 활용하는 방식이었고, 원격 캐시를 쓰기 어려운 경우의 대안도 고려한 구성으로 기억한다.
앱을 빌드할 필요가 있는 개발자 외의 사람들도 그 환경을 활용할 수 있다는 이야기도 흥미로웠다. 하나의 도구를 개선한 결과가 그 도구를 만든 사람의 작업 속도에만 머무르지 않는 것이다.
경력이 많은 개발자가 익숙한 도구의 내부까지 다시 파고드는 모습도 존경스러웠다. 나도 문제를 만났을 때 그 정도로 깊이 들어가 볼 수 있을까 생각했다.
솔직히 그런 일을 할 수 있는 환경이 부러웠다. 궁금한 문제를 소스까지 들어가 확인하고, 필요한 인프라를 만들어 팀의 반복 작업을 줄이는 일을 나도 해보고 싶었다.
밋업에서 본 AI 도구 활용의 자율성과 이를 뒷받침하는 인프라도 부러웠다. 필요한 도구를 만들어 팀에 적용해 볼 수 있는 환경이라면, 혼자서는 떠올리기 어려웠던 문제도 만나게 될 것 같았다.
AI로 내가 만들 수 있는 범위가 넓어진 지금, 이런 실험도 해볼 수 있을 것 같다. 동시에 혼자 실험하는 것과 여러 사람이 실제로 쓰는 환경에 적용하고 개선하는 것은 다른 경험이겠다는 생각이 들었다.
그 발표를 들으며 '아, 이래서 큰 팀에서 일해야 하는구나' 하는 생각이 들었다. 혼자 일할 때는 고민할 필요조차 없었던 문제를 팀에서는 만나고, 동료들과 함께 풀어 가며 성장할 수 있겠다는 걸 깨달았다. 특정 네이티브 기능을 구현해 본 경력뿐 아니라, 팀의 문제를 깊게 살펴보고 내가 만든 개선이 동료들의 일에도 영향을 주는 경험이 필요하다고 느꼈다.
예전에는 서버가 필요한 앱을 만들고 싶으면 백엔드를 함께 해 줄 사람을 먼저 구해야 한다고 생각했다. 그래서 IT 동아리에도 많이 참여했다. 내가 할 수 있는 범위 밖의 일을 팀으로 해결하고 싶었다.
이제는 AI의 도움을 받아 그런 실험을 혼자 시작해 볼 수 있겠다는 생각이 든다. Claude와 Codex도 구독하고 있으니 도구는 이미 있다. 백엔드 경험이 부족하다는 이유만으로 시도하지 못한다고 생각할 필요는 줄어들었다.
가령 채팅을 실험한다면 서버의 기본적인 구성을 AI와 함께 만들고, 앱에서 연결이 끊기거나 메시지 전달이 늦어지는 상황을 직접 다뤄 볼 수 있을 것이다. 플레이어나 뷰어도 궁금한 문제 하나부터 시작할 수 있다.
질문을 하고 답을 받는 방식에서 더 나아가 보고 싶다. 기획과 구현, 검토를 나눠 진행하면서 혼자서도 작은 팀을 운영하듯 일해 보고 싶다. 잘 굴러간다면 작은 스타트업처럼 일할 수 있을까 하는 기대도 있다.
물론 역할 이름을 여러 개 붙인다고 팀처럼 일하게 되는 것은 아닐 것이다. 필요한 조건을 정리하고, 각 작업의 결과를 연결하고, 무엇을 받아들일지 판단하는 일은 내가 맡아야 한다.
서버 코드가 만들어졌다고 해서 내가 그 영역을 이해하게 되는 것도 아니다. 기본 개념을 공부하고, 코드와 로그를 읽고, 문제가 생긴 이유를 확인해야 한다. 작동하는 결과물과 내가 설명할 수 있는 경험 사이의 거리를 줄이고 싶다.
AI의 발전 속도를 보면 내 경험을 앞으로 무엇으로 설명해야 할지 불안해지기도 한다. 공부를 위해 AI 없이 하나하나 직접 코드를 작성해야 하나 싶기도 하지만, 이미 익숙해진 편리함을 포기하고 싶지는 않다. 대신 설계와 테스트, 디버깅 과정에서 내 판단을 남기는 방법을 찾아보고 싶다.
시니어 개발자분과 나눈 이야기에서 기억에 남은 것은 하나의 사이드 프로젝트라도 깊게, 하나의 스토리로 설명할 수 있어야 한다는 조언이었다. AI로 빠른 시간내에 만들었다는 사실만으로는 충분하지 않다는 취지였다.
AI 덕분에 확보한 시간을 더 완성도 높은 제품과 더 나은 UI와 UX에 투자할 수 있다는 이야기도 했다. 구현 속도를 보여 주는 데서 멈추지 않고, 사용자에게 어떤 가치를 주는지까지 봐야 한다는 말로 받아들였다.
이 조언을 듣고 나니, 지금까지 만든 앱도 기능을 구현하는 데서 멈추지 않고 더 살펴볼 필요가 있겠다는 생각이 들었다. 사용자가 실제로 어디서 불편을 느끼는지 찾고, 개선한 결과까지 확인해 봐야 내가 설명할 수 있는 이야기도 생길 것 같다.
지금 계속 만들고 있는 여행 앱 여비는 깊이를 쌓을 수 있는 대상이다. 무엇을 더 추가할지에 앞서, 지금의 사용 흐름에서 불편한 부분을 찾고 개선하는 작업을 해보고 싶다.
화면이 구현됐다는 기준에서 한 번 더 들어가 보고 싶다. 보기 좋은 화면이 사용하기에도 편한지, 사용자가 목적을 이루는 과정에서 막히는 부분은 없는지 확인해야 한다. 내가 익숙해서 지나치는 부분도 있을 수 있다.
제품을 성장시키는 일도 그 연장선에서 생각하고 있다. 더 많은 사람이 쓰게 된다면 어떤 문제가 생길지, 그때 무엇을 바꿔야 할지 고민해 보고 싶다. 현재의 규모나 앞으로의 성과를 크게 포장하려는 뜻은 아니다.
작게라도 개선 전후를 확인할 기준을 남겨 두려고 한다. 흐름을 비교하거나 실제 사용자에게 의견을 구하는 방법도 생각해 볼 수 있다. 예상과 달랐던 결과나 바꿨는데 나아지지 않은 부분도 기록할 만한 이야기다.
어떤 문제를 발견했고, 여러 방법 중 무엇을 골랐고, 바꾼 뒤에 무엇이 달라졌는지를 말할 수 있다면 좋겠다. 그런 설명을 할 수 있을 정도로 한 제품을 오래 살펴보고 싶다.
여비를 개선하는 것과 별개로, 관심 있는 네이티브 영역도 실험해 보고 싶다. 플레이어와 뷰어, 채팅을 한꺼번에 완성하려는 계획보다는 그중 하나를 골라 작은 범위로 들어가 보는 편이 현실적일 것 같다.
시작할 때 궁금했던 것, 구현 중에 막힌 부분, 검토했던 방식, 포기하거나 바꾼 선택을 기록하려고 한다. 나중에 결과 화면만 보여 주게 되지 않도록 작업하는 동안 판단을 남겨 두고 싶다.
커피챗에서는 여행 앱 여비를 어떻게 더 발전시킬지도 이야기했다. 이전에 게임 개발 경험이 있는 시니어 개발자분께서는 비행 중 인터넷이 안 되는 상황에서 친구끼리 블루투스로 즐길 수 있는 게임을 예로 들어주셨다.
나는 그런 아이디어까지는 생각하지 못했다. 여행 경비를 기록하고 정산하는 기능에서 더 나아가, 여행 중 함께 보내는 시간도 앱이 다룰 수 있는 경험이라는 생각이 들었다. 그분의 게임 개발 경험이 이런 아이디어를 떠올리는 데 도움이 됐을 것 같았다. 나는 게임을 만들어 본 적이 없어 여비에 게임을 넣는다는 생각 자체를 하지 못했던 건 아닐까.
여러 분야를 경험해 보고 싶은 이유도 여기에 있다. 직접 만들어 본 것이 많아지면, 같은 앱을 보더라도 떠올릴 수 있는 아이디어가 달라질 것 같다. 플레이어나 뷰어, 채팅을 만들어 보는 경험도 나중에 다른 제품을 개선할 때 뜻밖의 선택지가 될 수 있겠다.
그 게임을 지금 만들겠다는 계획은 아니다. 실제로 필요한지, 어떤 제약이 있는지, 만들 가치가 있는지도 아직 모른다. 다만 새로운 분야를 경험하는 일이 기존 제품을 깊게 만드는 일과 별개는 아니라는 생각이 들었다. 작은 실험에서 배운 것을 여비에 적용해 볼 수도 있고, 여비를 개선하다가 새로운 분야를 공부하게 될 수도 있을 것이다.
마침 WindowInsets.info에서 당장 계획해 둔 작업을 마쳤고, 여비도 최근 진행하던 개선 작업을 마무리했다. 앞으로도 두 프로젝트를 계속 발전시켜 나가겠지만, 지금은 새로운 시도를 시작할 여유가 생겼다.
지원하고 싶은 공고에서 요구하는 경험과 내가 보여 줄 수 있는 결과물을 비교해 보고 싶다. 그다음 이미 한 일을 더 잘 정리할지, 여비에서 깊이를 쌓을지, 새로운 분야의 문제를 다룰지 정하면 좋겠다.
특정 분야의 실전 경험이 중요하다면 그 실험을 더 깊게 가져가야 할 수도 있다. 여비를 계속 개선하는 방향이 적합할 수도 있다. 아직 대표 프로젝트를 확정했다기보다, 무엇에 시간을 쓸지 기준을 세우는 단계다.
하나를 골랐다면 만들기 전에 궁금한 점과 확인할 방법부터 짧게 적어 두고 싶다. 기능 목록을 늘리기 전에 이번 작업으로 어떤 경험을 남길지 정해 보는 것이 다음 시작이 될 것 같다.
원하는 분야의 네이티브 경험을 어떻게 쌓고 설명할까.
지금의 내 답은 기존에 해 온 작업과 그 과정에서의 판단을 구체적으로 정리하고, 아직 직접 구현해 보지 못한 영상 플레이어·웹툰 뷰어·실시간 채팅을 작은 범위부터 만들어 보고자 한다. 그리고 하나의 제품은 실제 사용자의 불편을 찾아 꾸준히 개선하며, 구현부터 개선 결과까지 하나의 이야기로 설명할 수 있는 경험을 쌓고자 한다.
이직에 대한 불안이 사라진 것은 아니다. 관심 있는 회사에서 필요한 경험과 지금의 경험 사이에 거리가 있다는 생각도 여전히 하고 있다. 그래도 그 거리를 내가 직접 해볼 수 있는 일로 조금씩 좁혀 보고 싶다.
첫 회사 선택은 되돌릴 수 없지만 다음에 어떤 문제를 다룰지는 정할 수 있다. 우선 지원하고 싶은 분야와 지금 가진 결과물을 나란히 놓고, 다음에 집중할 문제 하나를 골라 보려고 한다.
다음에 내 경험을 이야기할 때는 무엇을 만들었다는 설명에 더해, 왜 그렇게 만들었고 무엇을 확인했는지까지 함께 말할 수 있으면 좋겠다.
여기까지 쓰고 보니 내 고민이 꽤 정돈돼 보인다. 하지만 실제 마음은 이것보다 덜 깔끔하다. 기술적으로 성장하고 싶다는 이유만으로 이직을 바라는 것은 아니다.
많은 사람이 사용하는 서비스를 만드는, 이름을 들으면 알 만한 회사에서 일하고 싶은 마음도 있다. 다른 개발자들도 알아보는 곳에서 일하면 나도 개발자로서 인정받았다는 기분이 들 것 같다. 내가 성공했다고 느끼고 싶은 마음도 있다.
지금과는 다른 개발 환경을 경험해 보고 싶은 마음도 분명히 있다. 관심 있는 도메인에서 일하며 지금까지 접하지 못한 일을 해보고 싶다. 다만 환경이 달라진다고 지금의 고민이 모두 해결되지는 않을 것이다.
스스로 이런 마음에 열등감이나 도피라는 이름을 붙이기도 했다. 어떤 회사에서 어떤 도메인을 깊게 다루고 싶은지 명확히 정하지도 않은 채, 그저 이름을 들어 본 회사에 가고 싶어 하는 건 아닐까. 성장하고 싶다고 말하면서도 정작 회사의 이름값에 먼저 끌리는 내 모습이 안일하게 느껴져 부끄럽기도 하다.
그렇다고 인정받고 싶은 마음이 없다고 쓰고 싶지는 않다. 더 깊게 개발하고 싶은 마음, 내가 해 온 일을 인정받고 싶은 마음, 현재의 환경을 벗어나고 싶은 마음이 함께 있다.
앞으로 뭘 해야 할지는 조금 알겠는데, 그렇다고 마음까지 편해진 건 아니다. 아직 조급하고 부럽고 답답하다. 이번 글에는 그런 상태도 남겨 두고 싶었다.
개인 개발 경험과 커피챗, 당근 밋업에서 들은 이야기를 바탕으로 썼다. 시니어 개발자분의 조언과 발표 내용은 직접 인용 대신 내가 이해한 취지로 정리했다.
동아리 프로젝트는 데드라인 안에서 MVP를 내야 하니까 결국 CRUD 중심이 된다는 분석이 솔직해서 좋았어요. 원하는 회사의 핵심 기능과 내 경험을 나란히 놓고 빈틈을 확인하는 방식도 이직 준비에 바로 쓸 수 있는 방법 같아요. 플레이어나 실시간 채팅은 작은 사이드 프로젝트로도 깊게 파 볼 수 있는 영역이라, ExoPlayer 버퍼링 지표나 소켓 재연결 처리처럼 측정할 수 있는 숫자를 하나 정해서 개선 과정을 글로 남기면 커피챗에서 설명하기도 훨씬 쉬울 것 같아요.