쮸니어 안드로이드 개발자의 카카오페이 입사 후 적응기

쮸니어 안드로이드 개발자의 카카오페이 입사 후 적응기

시작하며

안녕하세요! 저는 올해 2월 말 카카오페이 안드로이드 개발팀에 입사한 포비입니다.
글을 시작하기 전에 입사한 지 3개월이 갓 지난 제가 어떤 내용으로 사람들에게 도움이 될 수 있는 내용을 공유할 수 있을지 고민했는데요, 카카오페이 안드로이드 신입 개발자로 입사 후 경험한 온보딩 과정 및 수습 기간에 대한 내용과 이 과정 속에서 제가 했던 생각들을 공유하려고 합니다. 기술적인 내용보다는 카카오페이에 대해서, 특히 카카오페이 안드로이드 개발팀에 대해서 궁금하신 분들 또는 신규 입사자 분들에게 가벼운 도움이 되지 않을까 생각합니다 :)

온보딩 과정

안드로이드 개발팀에 입사하게 되면 온보딩 과정을 거친 후 실무에 투입됩니다. 저보다 2개월 먼저 입사한 haero.ro(해로)는 온보딩 기간을 실무 투입 전 준비 운동을 하는 기간이라고 표현했는데 정말 찰떡이라고 생각합니다. 👍

온보딩 과정은 다음과 같은 프로그램으로 구성되어 있습니다.

  • 온보딩 스터디
  • 채용 과제 리팩토링

그리고 준비 운동답게 다음과 같은 목적을 가지고 온보딩 과정을 진행했습니다.

  • 스터디를 통해 안드로이드 개발에 필요한 지식을 리뷰하고 카카오페이 앱에서 사용한 개념 및 스킬에 익숙해진다.
  • 스터디한 내용들을 과제에 적극 적용해보고 카카오페이 앱 구조에 익숙해진다.

온보딩 스터디

온보딩 과정의 첫 번째 프로그램은 온보딩 스터디로, 코틀린, 코루틴, 안드로이드, 아키텍처, DI, 테스팅에 대한 내용을 중점적으로 리뷰하는 방향으로 진행했습니다. 4주라는 시간은 모든 내용을 깊게 파고들기에 부족했기 때문에 새롭게 알게 된 부분과 이미 알고 있던 내용을 확장하는데 집중했습니다.
그리고 스터디한 내용에 대하여 매주 발표를 진행하고 이에 대한 피드백을 주고받는 시간을 가졌습니다. 발표라는 단어 탓인지 공부했던 내용을 처음으로 발표할 때는 정말 긴장이 되었습니다. 하지만 실제로 진행해보니 발표보다는 학습하면서 이해한 방향과 활용 포인트에 대해서 피드백을 주고받는 시간이라 표현하는 것이 더 적합한 것 같습니다.
또 하나 발표시간이 재밌었던 이유는 학습한 내용이 실제 카카오페이 앱에서 어떻게 사용되고 있는지 확인할 수 있었던 것입니다. 평소 delegation 패턴을 직접 사용해본 적이 없고 다소 피상적으로 학습하고 넘어갔는데 카카오페이 앱에서는 delegation을 적극적으로 사용 중이었기 때문에 직접 코드로 확인하며 이해할 수 있었습니다.
그리고 에러 핸들링에 대해서도 얘기를 나누던 중 카카오페이 앱에서 코틀린의 runCatching을 적극 활용하여 공통 에러 핸들링을 하고 있다는 것을 알게 되었습니다. runCatching도 새롭게 알게 되었을뿐더러 앱의 에러 핸들링 방식도 확인해볼 수 있었습니다.

이렇게 온보딩 스터디를 통해서는 개발에 필요한 기술들을 리뷰하며 익숙해지는 시간을 가질 수 있었고, 이들 중 몇 가지는 추후 과제 리팩토링을 진행할 때 적용해보면 좋겠다고 생각했습니다.🧐

채용 과제 리팩토링

스터디 다음으로는 채용 과제를 카카오페이 앱의 구조로 리팩토링 하는 시간을 가졌습니다. 약 4주간 혼자 스터디를 하면서 개발이 너무 하고 싶었던 걸까요.. 스터디에서 피드백받았던 내용도 적용하며 하루빨리 과제를 진행하고 싶었습니다!!
저는 채용 과제를 할 때 MVP 아키텍처를 사용했었고, 심지어 DI도 적용하지 않았기 때문에 사실상 리팩토링이 아닌 재건축을 시작했습니다.😂 이미 한번 진행했던 과제이기 때문에 기능 개발에 집중하기보다는 구조적인 개선과 카카오페이 앱 스타일을 경험하는 것을 타깃으로 진행하였습니다.
새롭게(?) 과제를 진행할 때는 클린 아키텍처 기반의 MVVM, 공통 에러 핸들링, DI, 테스트 코드 작성, 빌드 시스템 맛보기에 초점을 맞추었습니다. 그동안 DI에 대해 학습하면서 관성적으로 인지하고 넘어갔던 “테스트 가능한 구조”를 직접 이해할 수 있었던 점이 흥미로웠는데요, 각 레이어에서 디펜던시의 인스턴스를 직접 만들어서 사용하는 것이 아니라 외부에서 주입해줌으로써 다양한 시나리오에 대한 테스팅이 가능했습니다. 그리고 지금까지 혼자서 공부할 때는 개발에만 집중하느라 빌드 시스템에 대한 이해가 전혀 없었습니다.

(빌드만 되면 그만이지.. 앗..아ㅏ🤭)

그래서 이번 과제를 진행하면서 빌드 스크립트를 gradle 기반에서 kts 기반으로 마이그레이션, 코틀린 Object를 통해 디펜던시의 버전을 관리하는 것도 적용해봤습니다. 아직 부족한 부분이 많기 때문에 테스트나 빌드 시스템에 대해서는 앞으로도 계속해서 학습이 필요할 것 같습니다.

서비스 배치

온보딩 과정을 마무리하고 업무에 투입되기 전에 팀장님과 1 on 1 하는 시간을 가졌습니다. 온보딩 과정에 대한 내용과 앞으로 안드로이드 개발팀에서 해보고 싶은 서비스가 있는지에 대한 얘기를 나누는 시간이었습니다. 온보딩을 도와주신 다른 팀원들도 해보고 싶은 서비스에 대해 틈틈이 생각해보면 좋을 것 같다고 말씀해주셨기 때문에 계속 고민을 해왔습니다.
개인적으로 모든 서비스를 다 경험해보고 싶었던 입장에서 하나를 결정하는 것은 쉬운 일은 아니었지만 결국 저는 계정 서비스에서 개발자의 길을 시작해보기로 결정했습니다. 3,700만 사용자를 대상으로 하는 계정 서비스에 대해 막중한 책임감이 부담이 될 수도 있었지만, 대규모 서비스에 기여하는 것에 대한 로망이 더 컸기 때문에 계정 서비스를 선택하게 되었습니다.

계정 서비스를 맡게 되다

계정 서비스에서는 사용자 세션 관리, 본인인증 등 안드로이드 클라이언트에서 계정과 관련된 모든 일을 진행하고 있으며 카카오톡 페이 서비스, 카카오페이, 카카오페이 비즈니스에서 공통으로 사용 가능한 Account SDK를 만들어 나가고 있습니다.
업무를 하기 위해 가장 먼저 위키를 보면서 계정 쪽 내용들을 확인했는데요, 문서로 계정 서비스 플로우를 이해하기에는 어려운 내용들이 다소 있었습니다. 백문불여일견이라고 이런 부분들은 코드를 확인하고 직접 플로우를 재현해보니까 역시 이해도 잘 되더라구요!
이러던 와중 첫 번째 업무로 CS 건을 할당받았습니다. 첫 번째 업무라 저만의 업무 루틴이 없었기 때문에 일단 무작정 노션에 나름대로 업무 처리 방식을 설계해봤습니다. 생각한 순서대로 지라에 할당된 이슈를 확인하고 히스토리를 파악했습니다. 지금까지 경험해보지 못했던 복잡한 코드를 이리저리 찾아다니고, 문제를 확인하고, 원인을 찾고 그리고 해결하기까지 생각보다 시간이 걸렸던 것 같습니다. 그렇게 수정한 코드는 한줄이었지만 모든 게 낯설었기 때문에 사이드 이펙트는 없는지 확인에 확인을 거듭했던 것 같습니다.😅
역시 직접 한번 작업을 마무리해보니 지라를 사용하는 법과 업무 프로세스도 알 것 같더라구요. 현재는 계정쪽 업무는 아니지만 이터레이션 단위의 작업을 할당 받아 진행하고 있기 때문에 이번 이터레이션이 끝나게 되면 이터레이션 프로세스에 대해서도 익숙해질 것을 기대하고 있습니다.👍

팀원들

입사하고 정말 좋았던 부분 중 하나가 팀원들이었습니다! 팀원들끼리 얘기하는 것을 들어보면 때로는 친구처럼, 때로는 형제처럼 대화에서 오가는 편안함이 있었고 회사라서 오는 딱딱한 느낌이 없었습니다. 물론 인생의 첫 직장이기 때문에 다른 회사 분위기를 잘 모르지만🤔 저에게 있어 팀 분위기는 정말 만족스러웠습니다. 편안한 팀 분위기 덕분에 하고 싶은 이야기가 있거나 아젠다가 있으면 이를 팀 레벨로 꺼내는 게 더 수월하겠다는 생각이 들었습니다.
그리고 아무래도 신입으로 입사하다 보니 회사 생활하면서 배울 점이 정말 많을 것이라고 생각했는데 역시 팀원들에게 배울 점이 정말 많았습니다. 의사표현을 조리 있게 잘하시는 분, 의사소통을 잘하시는 분, 팀에 적극적으로 기술 공유를 하시는 분, 기술 트렌드에 강하신 분 등 개발팀이지만 개발 외적인 부분에 있어서도 각자의 장점이 뚜렷하고 배울 점들이 많다고 느꼈습니다. 저도 팀원들의 장점을 마구 흡수하고 무럭무럭 성장해서 다른 누군가에게 영감을 줄 수 있는 개발자가 돼야겠다는 생각을 했습니다!

그리고 계정 서비스 내에서도 정말 많은 도움과 케어를 받고 있는데요. TMI지만 저는 집에서 장남이라 위에 형이 없는데, 만약 내가 형들이 있다면 이런 느낌이겠구나! 싶은 생각을 계정와서 많이 했던 것 같습니다.😁

길드 활동

페이에서는 개인적인 업무 이외에도 팀 또는 길드 단위로 다양한 활동들을 진행하고 있습니다. 그중 하나로 전사적인 레벨에서 한 달에 한 번씩 진행하는 하우스키핑 데이가 있습니다. 평소에 업무를 진행하느라 잠시 미루어두었던 일들을 구성원들과 함께 해결하는 시간으로, 그 내용은 기술 부채 해소나 생산성 및 품질 향상을 위한 활동 등이 될 수 있습니다.
지금까지 두 번의 하우스키핑 데이를 진행했는데 가장 최근에 진행한 하우스키핑데이에서 안드로이드 길드는 Gradle의 version catalog를 도입해봤습니다. version catalog를 사용하면 서로 다른 프로젝트들이 같은 디펜던시 버전을 공유할 수 있습니다. 기존에 각 서비스 모듈에서 개별적으로 디펜던시 버전을 관리하고 있던 것을 version catalog로 중앙집중화할 수 있었습니다. 새로운 것을 알게 되고 적용해보는 것도 재밌었지만 입사하고 나서 팀원들과 함께 일해볼 기회가 많지 않았는데 이 기회를 통해 소통할 수 있었던 것이 좋았습니다.
이외에도 팀이나 길드 차원에서 스터디를 포함한 다양한 소단위 그룹을 진행하고 있으며 앞으로 더 다양한 그룹 활동을 진행할 예정입니다. 동료들과 소통하고 성장할 수 있는 기회가 많이 있는 것이 좋은 것 같습니다!

지난 3개월을 돌아보며

눈 깜짝할 새 3개월이라는 시간이 지나갔습니다. 입사 첫 주에 많이 긴장하고 있던 제 모습이 생각나네요.🥲 페이에서 뛰어난 동료들과 함께 저의 첫 직장생활을 시작한다는 것은 정말 설레는 일이면서 한편으론 많은 걱정도 안겨 주었던 것 같습니다! 온보딩 기간을 거치고 자그마한 업무를 진행하면서도 느낀 건 당장 내가 알고 있는 것보다 익숙하지 않고 모르는 것들이 더 많다는 것이었기 때문에 더더욱 고민이 많아졌던 것 같습니다.
하지만 이런 상황들 덕분에 저의 현상황을 인지하는 것이 더 쉬웠던 것 같습니다. 부족한 부분이 어떤 것인지 명확하게 알 수 있었고 부족한 부분은 스스로 채워가면서 몰랐던 내용을 하나하나 알게 되는 재미도 느낄 수 있었던 것 같습니다. 이 속에는 팀원들의 도움의 영향도 많이 있었습니다. 툭툭 던져주시는 격려와 응원들 덕분에 처음 했던 고민들을 많이 떨쳐낼 수 있었던 것 같습니다. 이제 잘하는 모습을 보여드리면 되겠죠!
고민들을 점점 떨쳐내면서부터는 앞으로 페이에서 어떤 개발자가 될 것인가에 대한 고민도 했던 것 같습니다. 많은 일을 하지는 않았지만 이 아주 귀여운 경험을 통해서도 느낀 것들이 많이 있더라구요. 일단 신입으로서 저의 일차적인 목표는 기술적으로 많이 성장하는 것인데요, 현재 팀에서 사용 중이고 언급되는 다양한 기술들에 대해 최대한 익숙해지고 팀에 적용해볼 만한 기술들은 공유해볼 수 있을 것 같습니다! 기술적인 성장 뒤에는 부캐를 육성하려고 합니다. 부캐의 능력은 개발 외적인 부분이 될 수 도 있고 업무 하는 데 시너지 효과를 낼 수 있는 저의 개성이 될 것 같아요. 어떤 부캐를 키우게 될 것인지는 앞으로 일하면서 차차 찾아봐야겠네요ㅎㅎ

자~ 저는 이렇게 본격적으로 카카오페이 안드로이드 개발자의 길을 시작하게 되었습니다! 앞으로 카카오페이에서 다양한 경험과 성장을 통해서 더 많은 것들을 기여할 수 있는 개발자가 되도록 하겠습니다!

긴 글 읽어주셔서 감사합니다. 🙇‍♂️

poby.peng
poby.peng

카카오페이에서 Android 개발을 하고 있는 포비입니다. 다양한 경험을 통해 사용자에게 보다 편리한 서비스를 제공하고 싶습니다.