본문 바로가기
생각정리

9년차 안드로이드 개발자의 비정통 학습기

by soulduse 2025. 12. 18.

안드로이드 개발을 시작한 지 벌써 9년이 되었다. 돌이켜보면 제대로 된 개발 서적 한 권 처음부터 끝까지 읽어본 기억이 없다. 책장에는 몇 권 사두긴 했지만, 대부분 특정 챕터만 펼쳐보고 다시 닫아버렸다.

체계적 학습과 맞지 않았던 나

사실 나는 대학에서 컴퓨터 공학을 전공했다. 하지만 성적은 엉망진창이었다. 주입식으로 또는 책으로 공부하는 건 나에게 전혀 맞지 않았다.

https://soulduse.tistory.com/155

 

개발자로써의 저의 커리어는 망했습니다.

안녕하세요 처음으로 제 인생 이야기를 해보려고 합니다. 전 지방대 컴퓨터 공학과를 나왔지만 코딩 관련된 성적은 C-~B+가 전부이고 졸업할 당시 실제로 아는 지식이라곤 하나도 없다시피 했습

soulduse.tistory.com

"이걸 왜 배워야 하지?", "이걸 배워서 어떻게 써먹는 거지?" 같은 질문에 답을 찾지 못하면, 내 흥미는 극한으로 떨어졌다.

자료구조 시험을 앞두고 트리와 그래프의 이론을 달달 외우는 건 고역이었다. 하지만 나중에 앱에서 계층적 카테고리를 구현해야 할 때, 그때는 트리 구조가 왜 필요한지 단번에 이해가 됐다. 문제는, 시험이 끝나면 다 까먹었다는 거다.

이러한 내 성격 탓에 아마도 앞으로도 이런 식의 야생 학습을 지속하게 될 것 같다. 체계적으로 배우지 못하는 게 약점인지, 아니면 실전 중심으로 빠르게 배우는 게 강점인지는 모르겠다. 다만 확실한 건, 나는 이 방식이 아니면 배울 수가 없다는 것이다.

실전 중심의 학습

내 학습의 70%는 앱을 만들면서 그때그때 부딪히는 문제를 해결하는 과정에서 이루어졌다. "이 기능을 구현하려면 어떻게 해야 하지?"라는 질문에서 시작해서, 필요한 부분만 골라먹듯 배워나갔다. 체계적이지 않았지만, 확실히 기억에는 남았다.

나머지 20%는 GitHub에서 실력 있는 개발자들의 코드를 뜯어보며 익혔다. 특히 스타가 많은 오픈소스 프로젝트를 클론받아서 하나씩 까보면서 "아, 이런 식으로 코드를 구조화하는구나", "이렇게 패턴을 적용하는 거였구나" 하며 코드 스타일을 체득했다. 마지막 10%는 Stack Overflow와 구글링으로 급한 불을 끄는 시간이었다.

멈춰버린 학습 곡선

아이러니한 건, 9년차가 되었지만 Compose가 뭔지도 제대로 모른다는 점이다. 2021년 Compose가 정식 출시된 이후로 내 학습은 거의 제자리에 멈춰있다. 여전히 Layout은 xml로 작성하고, Activity와 Fragment로 화면을 구성한다.

최신 트렌드를 따라가지 못한다는 건 알고 있다. 하지만 솔직히 말하면, 지금 당장 Compose를 배워야 할 필요성을 느끼지 못한다. xml로도 충분히 앱을 만들고 출시할 수 있으니까.

필요가 만든 학습

돌이켜보면 내 모든 학습은 '필요'에서 시작됐다.

음악 플레이어 앱을 만들다가 백그라운드에서 음악이 끊기는 문제를 겪으면서 Activity와 Service의 라이프사이클을 깊이 이해하게 됐다. 그전까지는 onResume, onPause 정도만 알고 있었는데, 음악이 멈추면 안 되니까 죽어라 공부했다.

Spring Boot로 서버를 직접 구축하면서 의존성 주입(DI)의 편리함을 경험하고 나서야 "앱에서도 이게 필요하겠다" 싶어서 Dagger를 공부했고, 나중에는 Hilt로 갈아탔다. 그전까지는 그냥 싱글톤 패턴으로 때우고 있었다.

하지만 더 큰 문제가 있었다. Activity나 Fragment에 모든 화면에 대한 로직과 API 호출, 핵심 비즈니스 로직들이 모두 다 들어가 있으니 조금만 화면이 복잡해져도 엄청나게 방대한 클래스가 탄생했다. 한 파일에 1,000줄이 넘어가는 건 예삿일이었고, 심할 때는 2,000줄을 넘기기도 했다. 만들 때는 괜찮았다. 어차피 내가 다 아는 코드니까.

하지만 시간이 흘러 유지보수할 때마다 곤욕이었다. "이 버튼 클릭 이벤트가 어디 있지?", "이 API 호출은 또 어디서 하는 거야?" 하면서 스크롤을 끝없이 내리다 보면 정신이 아득해졌다. 3개월만 지나도 내가 짠 코드인데 마치 남의 코드 보는 기분이었다.

좀 더 나은 방안을 찾다가 MVVM을 알게 되어 적용했다. ViewModel로 로직을 분리하고, Repository 패턴으로 데이터 처리를 분리하니까 확실히 코드가 정리되더라. Activity는 진짜 '화면'만 담당하게 됐다. 물론 처음엔 "이렇게까지 해야 하나?" 싶었지만, 나중에 유지보수할 때 과거의 나에게 감사했다.

서버가 장애로 다운됐을 때 앱이 완전히 먹통이 되는 참사를 겪고 나서야 로컬 캐싱의 중요성을 깨달았다. 그때부터 Room과 SQLite를 공부하기 시작했다. 사용자들이 "앱이 안 돼요"라는 리뷰를 남길 때마다 가슴이 철렁했던 기억이 아직도 생생하다.

앱이 안정화되고 나니 이번엔 다른 고민이 생겼다. 사용자 리텐션을 어떻게 끌어올릴 수 있을까? 앱을 설치한 사람들이 한두 번 쓰고 지워버리면 무슨 소용인가. 그래서 인앱 리뷰를 공부했다. 적절한 타이밍에 리뷰를 요청하면 평점이 올라가고, 평점이 오르니 다운로드도 늘더라.

Firebase의 다양한 프로덕트들도 그때 알게 됐다. Analytics로 사용자 행동을 추적하고, Remote Config로 A/B 테스트를 하고, Crashlytics로 크래시를 모니터링하고. 푸시 알람도 그때 제대로 공부했다. "3일간 접속하지 않은 사용자에게 푸시를 보내면 다시 돌아올까?" 같은 실험을 하면서 FCM을 파고들었다.

이것도 다 책에서 배운 게 아니라, "어떻게 하면 사용자를 붙잡을 수 있을까"라는 절박한 고민에서 시작됐다.

넓지만 얕은 지식

이런 식으로 배우다 보니, 내 지식은 넓지만 깊이는 없다. 100개의 기술을 겉핥기식으로 아는 것 같다. 면접을 본다면 기초 이론 질문에는 버벅거릴 것 같다. "MVVM 패턴의 이론적 배경"보다는 "이렇게 하면 코드가 더 깔끔해지더라"는 식의 경험적 지식이 대부분이다.

가끔 "체계적으로 공부했다면 더 나았을까?"라는 생각이 든다. 자료구조와 알고리즘을 제대로 배웠다면, 디자인 패턴을 책으로 먼저 익혔다면 어땠을까.

하지만 동시에 이런 생각도 든다. 만약 체계적으로 배우려고 했다면, 과연 9년 동안 400개가 넘는 앱을 만들 수 있었을까? 책을 다 읽을 때까지 기다렸다면, 첫 앱 출시는 언제였을까?

AI 시대의 야생 학습

그리고 요즘은 이런 생각이 든다. 굳이 Compose를 직접 배워야 할까?

솔직히 말하면, 아직까지 Compose나 새로운 기술에 대한 갈증이 전혀 없다. 하지만 AI가 계속 발전하고 있다. Compose로 변경했을 때 AI가 UI를 더 잘 그려준다면? 그때는 직접 학습해서 적용하기보다는, AI에게 일을 위임하여 멋지고 화려한, 만족할 만한 UI를 만드는 데 사용할지도 모르겠다.

실제로 xml layout 방식은 AI가 그닥 아름답게 만들어주지 못한다. Claude에게 화면 구성을 부탁하면 기능은 동작하지만, 디자인적으로는 아쉬운 결과물이 나온다. 반면 Compose는 선언적이고 AI가 이해하기 쉬운 구조라고 하더라.

어쩌면 내가 Compose를 배우는 날은, 내가 직접 코드를 짜기 위해서가 아니라 AI와 더 잘 협업하기 위해서일지도 모른다. 이것도 나만의 야생 학습 방식일까? "필요할 때 필요한 만큼" 배우되, 이제는 "AI와 함께" 배우는 것.

비정통이지만 나만의 방식

결국 내 학습 방식은 비정통적이지만, 나에게는 맞는 방식이었던 것 같다. 문제에 부딪혔을 때 바로 해결하려고 발버둥 치면서 배운 것들은 책으로 배운 것보다 오래 기억에 남는다. 실패하고, 앱이 크래시 나고, 사용자에게 욕먹으면서 배운 것들은 절대 잊을 수 없다.

요즘에는 개발을 책으로 배우는 게 큰 의미가 없어진 것 같다는 생각도 든다. 물론 『클린 코드』나 『리팩토링』 같은 불변의 진리를 다루는 책은 여전히 가치가 있다. 하지만 특정 기술이나 프레임워크를 다루는 책은? AI 발전 속도로 인해 습득한 새로운 기술이 한 달이 채 되지 않아 구닥다리가 되어버린다.

가끔 상상해본다. 만약 내가 개발 관련 서적을 집필하게 된다면? 아마도 이 빠른 속도 때문에 집필하는 내내 수정만 하다가 결국 출간도 못하고 포기하게 될지도 모르겠다. "아, Compose 1.5 버전이 나왔네. 예제 코드를 다 바꿔야 하나?" 하면서 끝없이 개정판을 내거나, 아니면 아예 출간을 포기하거나.

그리고 AI에게 물어보기만 하면 최신 기술을 검색해서 내 수준에 맞게 쉽게 알려준다. "Compose에서 애니메이션을 어떻게 구현하는지 초보자도 이해할 수 있게 설명해줘"라고 물으면, 단계별로 설명하고 예제 코드까지 제공한다. 책 한 권 읽는 시간에 열 가지 기술을 배울 수 있다.

요즘은 어쩌면 가장 뛰어난 기술을 가장 쉽게 배울 수 있는 장이 열린 게 아닌가 하는 생각도 든다. 예전에는 고수의 코드를 보려면 GitHub를 뒤져야 했고, 새로운 기술을 배우려면 두꺼운 책과 씨름해야 했다. 지금은? AI에게 물으면 된다. 그것도 거의 무료로.

9년차 개발자지만, 여전히 배울 게 산더미다. 다만 그걸 어떻게 배울지는, 아마도 계속 내 방식일 것 같다. 그리고 이제는 AI라는 새로운 동료와 함께.

그게 나쁘지 않다고 생각한다. 아니, 솔직히 말하면 지금이 최고의 시대인 것 같다.

반응형