2021 TODO
작년에 작성했던 회고록을 토대로 2021년 TODO 리스트를 얼마나 달성했는지 확인해봤습니다.
안드로이드 스튜디오 공식 문서 모두 읽어보기
랩실 석사분과 함께 올해 초 안드로이드 공식 가이드 문서 읽기 세미나를 진행했습니다. 당연하게도 가이드 문서는 엄청난 양이었고, 각자의 스케쥴이 존재하였기에 Activity
와 Fragment
파트 모두 읽기로 방향을 바꿨습니다.
생각보다 제가 모르는 부분이 굉장히 많았고, 잘못 알고 있는 부분도 존재했습니다. 정말 무엇보다 중요한 것은 기본이다라는 사실을 느끼게 해주는 세미나였습니다.
테스트 코드 공부하기
회사의 프로덕션 코드에 테스트 코드를 본격적으로 도입하고자 야심차게 정했으나, 다른 일감의 우선순위에 밀려 거의 진행하지 못했습니다. 개인적으로 매우 아쉬웠습니다😥.
최소 2주에 한 번은 블로그에 글 작성하기
아마 가장 잘 지킨 TODO 중의 하나가 아닌가 싶습니다. 사실 1주에 한 번 블로그에 글을 작성하는 것이 원래 목표였으나, 블로그에 글을 쓰는 것은 저의 공부와 더불어 지식을 나누기 위해 글을 작성하는 것인데, 글을 쓰기 위해 억지로 공부할 거리를 찾아야하는 느낌이 들어서 2주에 한 번으로 목표를 변경했습니다.
토이 프로젝트 1개 이상 진행하기
저는 회사의 프로덕션 코드에 어떤 라이브러리나 기술을 도입하기 전에 공부 겸, 삽질을 줄이기 위해 토이 프로젝트를 만들고 적용해보는 일이 많습니다. 이번 년도에 적용을 목표로 한 주제는 Android11 Scope Storage 대응, 멀티모듈 연습을 위한 KMP(Kotlin-Multi-Platform), Compose 도입 이렇게 총 3개의 주제를 중심으로 토이 프로젝트를 진행했습니다. 세 프로젝트 모두 프로덕션 코드의 방향에 많은 영향을 끼쳐서 매우 만족했습니다.
코로나가 끝난다면 오프라인 행사 참여하기
여전히 코로나는 끝나지 않았기에 오프라인 행사는 참여하지 못했지만 온라인 행사를 2020년보다 더 많이 참여하게 되어 즐거웠습니다😊
회사
올해 초반 새로운 신입 개발자 분께서 안드로이드 팀에 합류하게 되어 함께 업무를 진행했습니다. 신입 개발자 분은 업무 진행 전 해당 업무에 대한 분석력이 뛰어나셨고, 확실히 혼자 코드를 작성할 때보다 많은 영감과 피드백을 받을 수 있었고 이슈도 꾸준히 공유하며 즐겁게 업무를 진행했습니다.
하지만 상반기가 지나가고 하반기가 시작될 즈음 회사에 웹 관련 업무가 매우 늘어나게 되었고, 저와 안드로이드 팀에서 일하시던 신입 개발자분은 웹 개발자로 포지션을 변경하게 되었습니다. 짧은 기간이었지만 누군가와 함께 팀을 이끌어나가는 경험을 가지게 되어 뜻깊은 시간이었습니다. 반면 작년에 다른 팀원분들과 함께 업무를 진행할 때와는 반대되는 입장이었기 때문에 책임감도 많이 느끼게 되었습니다.
하반기가 시작되고, 다시 혼자 안드로이드 개발 작업을 진행하며 많은 생각들이 들었습니다. 앞으로도 혼자서 개발을 진행한다면 과연 누군가와 함께 일할 때보다 더 성장할 수 있을까? 물론 혼자서 부딪히며 배우는게 많다고 하지만 동료와 함께 일하며 얻는 것은 포기하며 계속 이렇게 업무를 진행해야 하는 것일까? 내년부터 안드로이드 업무가 상대적으로 많이 줄어드는데 할 일이 없어지는게 아닐까?
이런저런 혼란한 생각이 들던 와중, 매니저님과의 정기 1대1 미팅에서 이런 저의 생각을 캐치하셨는지 혼자 업무를 진행하는데 어려움이나 회사에 바라는 것이 있냐는 질문을 던져주셨고, 저는 제가 현재 생각하는 부분들을 모두 말씀드렸습니다. 매니저님께서는 회사 차원에서 최대한 전달받은 부분을 해소할 방법을 마련해보겠다는 의사를 밝히셨고 저는 저의 의견이 제대로 전달된 것 같아서 만족하며 미팅을 마쳤습니다.
12월이 되고, 비교적 개발자 인원이 많은 회사에서 근무하시는 지인 개발자 분을 만났습니다. 그 분과의 대화에서 어느 회사에 다니던 결국 자기의 가치관이 중요하고, 동료가 있던 없건 자기 자신의 노력이 성장에 영향을 끼치는 1순위가 될 것이라는 생각이 확고하게 들었습니다.
그리고 저번주에 매니저님과 다시 한 번 1대1 미팅을 진행했고 저는 내년부터 iOS 업무에 도전하기로 했습니다.🚀 새로운 스택에 도전하며 성장의 발판을 마련하고 (물론 Android를 던지는 것은 아닙니다😂) 모바일 전반적인 업무를 담당하여 위 고민들을 해소할 수 있을 것 같았습니다. 물론 업무를 진행해봐야 체감할 수 있겠지만 매우 기대하고 있습니다.
DI 라이브러리 교체
회사의 기존 안드로이드 프로덕션 코드는 Koin이라는 DI 라이브러리를 사용하여 DI를 관리하고 있었습니다. 하지만 Android에서 Hilt라는 Dagger 기반의 DI 라이브러리를 공식적으로 지원하게 되면서, 저는 공식 라이브러리를 사용하는 것이 유지보수성을 고려했을 때 저 낫다는 판단을 내렸고, DI 라이브러리 교체 작업을 진행하는 것을 목표로 3분기를 맞이했습니다.
그 과정에서 약간의 문제와 이슈를 발견했지만 주변 개발자분들의 도움과 Hilt 가이드 문서 및 Hilt 깃허브 프로젝트에 있는 이슈들을 바탕으로 교체를 무사히 완료하게 되었습니다.
거의 모든 코드를 손대야 해서 상당히 쉽지 않았지만 모든 부분이 올바르게 작동하고 컴파일 타임에 DI 관련 에러를 검출할 수 있게 되어 만족스러웠습니다.
Firebase Distribution & Bitrise
회사에서 기존 QA 프로세스 진행 방식은 개발자가 feature/fix가 구현된 APK를 직접 뽑아서 해당 QA 팀원분에게 슬랙으로 전달하는 방식이었습니다. APK를 뽑는 시간도 걸리고 QA팀원분은 매번 슬랙 메시지를 확인하여 APK를 새로 받아야했으며, 간혹 잘못된 APK를 전달드리는 상황도 발생해서 여러모로 불편했습니다.
10월쯤 저는 Firebase Distribution에 대해 알게 되었고 더 나은 업무 진행을 위해 반드시 도입해야 한다고 생각하며 도입 작업을 진행했습니다. 더 이상 수동으로 APK를 체크하고 다운받을 필요가 없어져서 QA 팀원 분께선 매우 만족해하셨지만, 아직도 개발자가 직접 APK를 뽑아서 업로드 해야한다는 사실은 바뀌지 않았습니다.
그렇게 APK 업로드에 불편함을 느끼던 도중 자연스럽게 자동 빌드/배포 툴에 관심을 가지게 되었고 여러 툴을 살펴보던중 모바일에 특화된 Bitrise라는 툴을 도입해보기로 했습니다.
Bitrise는 GUI, CLI 2가지 환경에서 자동 빌드/배포 관리를 모두 지원하며 Firebase Distribution
배포 뿐만 아니라 Google Play Store
자동 배포도 제공합니다.
몇 번의 삽질 과정을 거친 후 도입을 끝마치니 더 이상 수동으로 APK 파일을 뽑아내거나 AAB 파일을 뽑아내서 업로드 작업을 진행해줄 필요가 없어지게 되었습니다. APK/AAB 파일을 뽑아내는 시간도 생각보다 길 때가 있어서 업무를 진행하다 흐름이 끊기는 느낌이 들었는데 이 부분이 해소되어 정말 편해졌다고 생각합니다.
행사
Google I/O Extend 2021 Korea Android
7월에 온라인으로 개최된 행사인데 많은 안드로이드 개발자 분들의 이슈 혹은 경험을 공유하고 배울 수 있어서 굉장히 재미있게 참여했습니다. 특히 Scoped Storage라는 주제의 발표는 Android 11 대응을 앞두고 있었던 저에게 많은 도움이 되었습니다.
Droid Knights 2021
2020년에 이어 올해도 참여했던 행사입니다. 국내 안드로이드 관련 행사 중 가장 큰 규모로 진행되는 행사이고 마찬가지로 개발자들의 경험을 공유하는 자리입니다.
올해는 온라인(게더타운)으로 진행되었고 트랙이 2개로 나뉘어 더 다양한 발표가 이어졌는데, Koin 걷어내고 Hilt로 마이그레이션하기 라는 주제로 발표하신 기정님의 강의와 액티비티:코드제로 라는 주제로 발표하신 승욱님의 발표가 인상깊었습니다. 내년에는 꼭 오프라인으로 참여하고 싶네요🥲
Devfest Korea 2021 — Android Jetpack Compose Codelab
하반기에 참여한 코드랩 행사입니다. iOS의 Swift UI, React, Vue 처럼 선언형으로 UI 코드 작성을 지원하는 라이브러리인 Compose에 대한 코드랩을 진행하는 행사인데, 확실히 선언형으로 UI 코드를 작성하는 측면에서 강력한 재사용성, 테스트 용이성을 체감할 수 있었으나 아직 프로덕션 코드에 도입하기엔 이른 감이 있다고 생각했습니다. 7월에 정식 버전이 출시되었으나 자잘한 버그가 꽤 존재했기에 도입하게 된다면 아주 작은 컴포넌트부터 조금씩 구현해볼 수 있을 것 같습니다.
개인 공부
올 한해 Effective Kotlin, Android Next Step등의 책을 읽으며 기록했고, Android Jetpack Compose 가이드 문서(지금은 많이 추가된), 안드로이드에 존재하는 모든 XXXActivity
, XXXFragment
클래스 분석 세미나, Kotlin in Action 세미나 등등 꽤 여러가지 세미나도 병행했습니다.
세미나 진행은 끝까지 끝내지 못하고 중단한 적도 있었고 아쉬운 부분도 많았기에 다음 시도에서는 조금 더 보완해서 진행 해야겠다는 생각도 들었습니다.
마무리
코로나가 2021년까지 이어져서 오프라인 행사가 온라인 행사로 전환된 점이 아쉬웠고 다양한 경험을 겪었던 한 해였던 것 같습니다.
회사에서 내년 OKR들을 선정하고 있는데, 개인적으로 과연 이 OKR들이 모두 이루어질지 궁금하기도 하고 (참고로 올해 회사 OKR은 모두 이루어졌다) 이룬다면 회사가 아주 커질 수 있을 것 같은 예감이 들어서 개인적으로 매우 기대가 됩니다.
개발팀 내부적으로 분기마다 회고 행사를 진행하는데, 개발팀 모든 분들이 분기마다 엄청나게 성장하고 계신다는 걸 알 수 있었습니다. 이는 저에게도 많은 자극이 되었고 좋은 개발팀에 속해있다는 느낌을 받았습니다. 내년에도 지금처럼 좋은 개발자분들과 함께 좋은 성장을 이뤄나갔으면 좋겠습니다🥳.