회사를 옮기면서 바뀌게 된 것은 내가 개발하는 분야, 같이 일하는 동료, 회사 메일 주소만이 아니었다. 새로운 곳은 예전과 비교하면 상당히 적은 인원으로 운영되고 있었다. 전 회사에서는 어떤 것을 개발해야 한다고 한다면 적어도 두 명이서 일하게 했는데 한 명의 공백이 생기는 것에 따른 리스크를 줄이고자 하는 결정이었지만 나로선 책임이 분산되는 효과도 있어 조금은 부담감을 덜며 편하게 일할 수 있었다. 반면 이곳은 개발자가 총 다섯 명이다. 그것도 서버 2명, 안드로이드, IOS, 웹 각각 1명씩. 서비스를 한다면 어느 하나 포기할 수 없는 영역을 한 명 또는 두 명이 맡게 된다. 여기서 나의 역할은 모바일 사용자 비중이 가장 높은 안드로이드 개발자. 그것도 나 혼자. 이전에는 대기업의 톱니바퀴라고 불평불만을 쏟아내던 나는 이제 서비스를 멈출 수도 있는 있는 자동차의 바퀴가 된 셈이다.
타이어가 펑크 나서 멈춘다고 생각하면... 끔찍하다
게다가 이곳은 민첩하게 움직여야 하는 팀이었다. 이미 인스타그램, 틱톡 같은 성공한 서비스를 경험하며 눈이 높아질 대로 높아진 Z세대가(바로 그 Gen Z) 우리 서비스의 주 사용층이었기 때문에 우리는 인스타그램의 스토리나 틱톡의 비디오 이어 보기 기능을 완전히 동일한 퀄리티로 제공하진 못하더라도 비슷한 걸 내놓으며 따라가야 했다. 여기에 더해 서비스가 살아있다는 느낌을 줘야 하기 때문에 업데이트 주기도 짧아야 했다. 추가하려는 기능에 비해 주어진 시간은 짧았고 사람은 부족하다 보니 개발자 각자가 해야 할 일이 아주 많았다. 전 회사에서 내가 하루에 했던 일을 1로 친다면 이곳에서는 2.5에서 3 정도는 하게 된 것 같다. 내게 주어진 책임뿐만 아니라 할 일도 예전에 비해 두세배 늘어나게 된 셈이다.
설상가상으로 나는 원래 안드로이드를 전문적으로 했던 개발자가 아니었다. 토이 프로젝트로 몇 번 앱을 만들어 출시해봤지만 서비스를 개발하는 일은 취미로 하는 것과 차원이 달랐다. 입사 전에 나름 충분히 공부했다고 생각했는데 일하다 보면 여전히 부족한 것이 보였고 옆에서 도와줄 시니어 개발자가 있는 것도 아니라서 공부하는데 오랜 시간이 걸렸다. 주어진 시간은 짧고 할 일은 많으며 책임은 오로지 내게 있는데 잘 모르는 분야를 개발해야 하다 보니 머리가 터질 것 같았다. 상황이 이렇다 보니 개발을 보수적으로 하게 됐다. 직접 새로운 것을 익히고 만들려고 하기보다는 일단 빠르게 다른 사람들이 써서 검증된 것, 오픈소스에서 Star를 많이 받은 것을 찾게 됐던 것 같다. 기존 코드에서 잘 돌아가는 부분이라면 쓰임새를 잘 알아보지 않고 복사 붙여 넣기 하게 되기도 했다. 한 줄 한 줄 한 땀 정성스레 어떤 코드가 어떻게 동작하는지 모두 알고 가야 한다고 생각했고 이렇게 해야만 개발자의 실력을 키운다고 생각했던 과거의 나는 초조함 때문에 온 데 간데없었다. 나의 성장보다는 일단 내게 주어진 역할 문제없이 수행해내는 것이 급선무였다.
주어진 시간은 짧고 할 일은 많았다
이런 업무 방식이 한두 번 정도만 갈 것 같았지만 서비스 주기에 따라서 세 달, 네 달 이어졌고 점점 길어짐에 따라 개발자로서의 능력이 정체되는 것은 아닐까 걱정이 됐다. 과거의 방식을 고집하는 개발자는 남들은 다 아는 것을 모르게 되고 결국 뒤처지게 될 테니까. 그런데 거의 1년 정도 지난 지금 과거의 고민들을 되돌아보면 개발자로서 오히려 많이 배운 것 같다. 물론 내가 고민했던 부분들까지 채우진 못했지만 내가 생각하지 못한 측면으로 많이 배운 것 같다.
일단 안드로이드 개발자는 나 혼자이다 보니 새로운 기획이 나오면 개발 일정을 오로지 스스로 관리해야 했다. 옛날 같으면 개발 일정은 나와 같이 일하는 시니어의 영역이었고 나는 그냥 따라가기만 하면 됐다. 하지만 이곳에는 내가 말하는 것에 따라서 릴리즈 일정이 바뀔 수 있게 됐다. 그리고 내가 바꾼 일정에 따라서 마케팅 팀은 광고와 콘텐츠 준비를 하게 되고 기획팀은 다음 기획안에 대해서 준비하게 된다. 이렇기 때문에 일정보다 빨리 완료한다면 문제가 안됐지만 연기가 된다면 우리 팀 전체의 일정이 미뤄지게 되는 것으로 이어졌다. 그렇다고 내 입장을 고려해 일정을 넉넉하게 잡을 수도 없었다. 우리는 민첩하게 움직여야 하는 팀이었으니까. 그래서 나는 현재 할 수 있는 능력과 새로운 기획의 규모와 난이도 그리고 주어진 시간까지 모두 합산해서 가능한 정확하게 일정을 산출해야 했다. 처음에는 호기롭게(?) 빡빡하게 잡기도 하고 걱정이 앞선 나머지 지나치게 넉넉하게 잡기도 했지만 시간이 지남에 따라서 내가 할 수 있는 능력을 고려해 어느 정도 영점조준은 할 수 있게 됐다. 덕분에 다른 사람과 일할 때 필수적인 일정 관리 방법을 배우게 된 것 같다.
개발을 언제까지 할 수 있을지 맞추는 것만큼 어려운 일도 없다
그리고 안드로이드에서 발생한 모든 버그는 내가 고쳐야 할 몫이 됐다. 예전 회사에선 나와 같은 부분을 보는 사람이 있어 심적으론 의지가 됐었는데 여기는 안드로이드를 할 줄 아는 사람이 나밖에 없었고 이는 곧 버그를 고칠 수 있는 사람이 나 밖에 없다는 것을 의미했다. 그래서 나는 거의 배수진을 친 심정으로 버그를 고쳐야 했다. 크래쉬 리포트에 예상치 못한 새로운 버그가 뜨거나 유저들이 보내는 버그 제보가 재현이 되지 않을 때면 숨이 턱 막혔다. 해결 방법을 찾지 못해 주말에도 일하고 밤잠을 설치는 일도 종종 있었지만 나 아니면 고칠 사람이 없는 절박한 환경에서 나온 초인적인 능력 덕분인지 심각한 버그들은 어떻게든 고치게 됐던 것 같다. 물론 이 시간은 돌이켜보면 고통스럽기는 했다. 하지만 이 과정을 통해서 내가 자주 실수하는 부분, 버그가 발생할 수 있는 부분을 경험적으로 깨닫게 됐고 릴리즈 전에 어떤 테스트가 필요한지 알게 됐다. 무엇보다 아마추어 개발자라 생각했던 나도 이제는 어느 정도는 할 수 있다는 자신감을 얻게 됐다. 버그로 두들겨 맞는 동안 나도 모르게 내공을 쌓아가고 있던 것 같다.
내겐 상승하는 집 값만큼이나 무서운 차트다.
그럼에도 불구하고 여전히 걱정되는 부분들은 있다. 언젠가 동료 안드로이드 개발자가 생긴다면 그분은 내가 짠 코드, 설계한 구조를 어떻게 평가할까? 혹시 내가 안드로이드 국룰을 지키지 않으면서 개발하고 있는 것은 아닐까? 변경 가능성, 보안, 퍼포먼스 측면까지 고려하며 큰 그림을 그리면서 개발하고 있는 걸까? 다른 안드로이드 서비스에서는 모두 쓰고 있는 유용한 라이브러리리 또는 디자인 패턴을 놓치고 있는 것은 아닐까? 5년 차 개발자로서 필요한 자질을 모두 갖추고 있는 걸까?
하지만 예전보다는 걱정에 대해서 조금은 여유로워진 것 같다. 과거에는 해결 방법을 모른 채 마음만 초조했다면 이제는 내가 이 고민을 어떻게 풀어가야 할지 깨달은 느낌이다. 요즘엔 주말이나 일하는 도중 여유가 생길 때마다 안드로이드 미디엄을 통해 새로운 라이브러리와 사용후기를 읽어보며 요즘 개발 트렌드를 따라가고 있다. 그중에서 새로운 라이브러리 몇몇은 최근 프로젝트에 조심스레 넣어보기도 했다. 나중에 자신감이 생기면 다른 기능도 넣어볼 생각이다. 그리고 다른 팀에서 운영 중인 서비스의 소스코드를 받아서 나 혼자 다른 사람의 코드를 리뷰해보고 있다. 내가 평소에 고민해왔던 구조적인 문제점들을 어떻게 풀고 있는지, 놓치고 있던 유용한 기능은 어떤 게 있는지, 잘 짠 구조는 어떤 것 일지 직접 물어보진 못하고 코드를 통해서 간접적으로나마 배우고 있다. 이렇게 조금씩 내가 고민해왔던 부분을 채워가 보려고 한다
물론 이렇게 혼자서 해보는 일들도 언젠가는 한계에 봉착할 것 같다. 아무리 내가 열심히 해도 협업에서 오는 시너지까지 보다 뛰어날 수는 없으니까. 그래도 일단 내가 할 수 있는 데까지는 해보려고 한다. 1년 전에는 내 영역 밖이라도 여겼던 것들을 지금은 자연스럽게 하고 있으니 어쩌면 지금은 한계라고 여겼던 것들도 1년이 지나면 한계가 아닐 수도 있지 않을까. 철없는 용기일 수도 근거 없는 자신감일 수도 있지만 내가 원하는 것을 얻지 못하더라도 내가 예상하지 못했던 성장을 할 수 있지도 않을까 하는 기대가 된다. 과연 앞으로는 어떤 일들이 있을지 궁금하다.