평소에 좋아하는 개발자님인 '엘리'님의 직무전환 스토리를 듣고
태도에서 배울점이 많아
영상 내용을 정리하였습니다. 🙏🏻
www.youtube.com/watch?v=wD8GnE_AJQQ
# 결국은 시장성
- 대학생 때부터 시스템 프로그래밍에 대한 관심이 많았음
- 삼성전자에서 근무 시, C와 C++ 임베디드 업무를 하다가 안드로이드가 나오면서 안드로이드 팀으로 반강제적으로 이동하게 됐음
- 미국으로 취업을 준비할 때도, 임베디드 및 스프링 백엔드에 관심이 있었으나 안드로이드에 대한 수요가 높아서 기둥을 세웠던 안드로이드 개발자로 취업함
# 주니어 시절
- 삼성전자에서 근무 시 애플리케이션을 만든 것이 아니어서 실무경력이 부족한 편이었음
- 이를 보충하기 위해 공식사이트에서 다양한 것을 배우고, 운영체제 버전마다 바뀌는 변경사항을 빠르게 습득하고자 했음
- 안드로이드로 전문가로 어느정도 인정을 받으며 회사의 아키텍처 문제점, 코드 관리 문제점, 팀 프로세스의 문제점, 테스팅의 결여 등 다양한 이슈에 대해서 건의하고 문제를 해결하고자 했음
- 시니어는 아니었지만, 시니어 대우를 받으면서 여러 가지 프로젝트를 리드하고 주니어들을 멘토링 함
# 안드로이드 개발의 문제점
- 우리나라의 경우 안드로이드 사용자가 아이폰 사용자보다 많지만 미국의 경우 아이폰 사용자가 더 많았음
- 고객이 시간적 여유와 예산이 충분하다면 웹서비스 구축 후 아이폰 애플리케이션을 만들고, 그다음 안드로이드 애플리케이션을 만드는 순서로 진행되곤 했었음
- 하지만 예산 및 기간문제로 안드로이드 프로젝트까지 진행되지 않는 경우가 다수 발생함
- 내가 열심히 만든 어플리케이션이 전체 모바일 사용자가 다 사용하는 것이 아니라, 시장의 반도 안 되는 영향력을 가지고 일을 하게 되니 한계를 느꼈고 아이폰 개발에 관심을 가지게 됨
# 아이폰팀으로 가기까지
- 안드로이드 팀에서 시니어로 성장할 수 있는 상황이었지만, 그 당시 승진보다는 역량 강화에 관심이 있었음
- 하지만 회사는 수익을 창출하는 곳이다 보니 어느 정도 성장한 안드로이드 개발자가 갑자기 아이폰 개발팀으로 가기에는 무리가 있었음
- 에이전시 업체 특성 상 개발자가 프로젝트를 몇 시간 했느냐에 따라서 회사의 수익이 결정되기도 했음
- 따라서 개발자가 공부를 하거나 다른 트레이닝을 받게 되면 회사 입장에서는 손해를 보는 상황이었음
- 내가 어떤 전략을 가지고 가야 회사에서 나를 아이폰 팀에 넣어줄 것인가에 대해 고민하기 시작함
- 한 장의 제안서를 작성함
: 아이폰의 개발자 수가 안드로이드보다 많지만, 고객들이 아이폰 프로젝트까지만 하는 경우가 많기 때문에 프로젝트 몰림 현상이 심했음
: 안드로이드 팀은 프로젝트가 없을 때는 느슨하지만, 프로젝트가 몰리면 갑자기 바빠지는 경향이 있음
: 모바일 개발자들의 인력 분배가 유동적이지 못함
: 프로젝트 몰림 현상이 심해 유동적으로 개발 인력을 쓸 수 없고, 서로 하던 일만 하기 때문에 서로 배우는 것이 없었음
: 개발자도 회사에서 배우는 것이 있고 성장을 해야 계속 회사에 남아있는데 회사에서 얻을 것이 없기 때문에 퇴사하는 경우가 생김
: 이 문제를 해결하기 위해, 모바일 안드로이드와 아이폰 둘 다 할 수 있는 트레이닝 기회를 제공하는 것이 어떨지 제안함
: 해당 플랫폼에서 이미 안정적으로 개발할 수 있는 인원에 한해서 서로 공부할 수 있는 리소스들을 공유한 후 개인 시간에 공부하고
회사에서는 기존 프로젝트를 하면서 8대 2 비율로 진행하는 것이 어떨지 제안함
: 2는 다른 플랫폼에서 발생하는 작은 버그나 쉬운 UI를 구현하는 것부터 시작해서 어느정도 실력이 쌓이면 리드하는 개발자와 함께
프로젝트를 해나가면서 점진적으로 실력을 늘려가는 방식
: 아이폰 팀이 바쁠 때 안드로이드 팀에서 스스로 공부한 인원이 작은 이슈를 해결하거나 기능들을 구현하면서 도와주는 방식
- 이 제안서를 승낙 받은 후, 참여하고 싶은 지원자를 받아 크로스 트레이닝을 시작하게 됨
# 백엔드가 하고 싶어요
- 백엔드 팀과 프론트엔드 팀에서는 모바일 개발에 대한 지식이 전혀 없는 개발자가 있었음
- 모바일 클라이언트를 고려하지 않는 비효율적인 백엔드 API를 디자인하는 경우가 생김
- 백엔드 팀에 가서 배우고 위 문제점들을 개선하고 싶은 욕심이 생김
- 이사님에게 제안서를 제출함
: 백엔드가 어떻게 모바일 클라이언트를 위해 개선할 수 있을지 어필함
: 내가 왜 백엔드로 가야하는지에 대한 내용을 어필함
- 이사님의 승낙을 받았으나, 시니어 안드로이드 개발자 구하기가 굉장히 힘든 상황이었기 때문에 매니저가 못 보낸다고 반대함
- 내가 대체 불가능한 개발자가 되고 높은 연봉을 받으면 좋을 수 있지만, 이 상태에 머물러 있으면 다른 좋은 기회가 생겨도 그 기회를 잡을 수 없다고 생각했음
- 이슈가 생기면 이 문제를 해결할 수 있는 사람이 나밖에 없기 때문에 나 혼자 독박을 쓰게 되는 경우도 생김
- 내가 잘 한다고 해서 계속 그것만 붙들고 있다면 나만 손해라고 생각함
- 내가 인정을 받았다면, 문서화를 하거나 프로세스를 만들거나 나와 함께 관리할 수 있는 다양한 사람들에게 함께 공유하면서 내가 내 지식을 나눠주고 누구나 관리할 수 있게 하는 것이 오히려 손해가 아니라 더 좋은 기회를 잡을 수 있다고 판단함
- 매니저를 설득한 방법 : 팀에 있는 실력이 좋은 두 사람을 뽑아서 시니어가 될 수 있도록 트레이닝을 시키겠다고 제안함
그 두 사람이 시니어로 성장하면 나를 백엔드 팀으로 보내달라고 약속함
- 팀 내에서 '이 사람은 진짜 되겠다'라고 점찍어둔 개발자를 뽑아서 열심히 트레이닝 시킴
- 백엔드로 갈 수 있었으나 임신을 하게 되어 출산휴가를 가게 됨
# 출산휴가로 휴가를
- 휴가기간 동안 많은 일들을 하지는 못했지만, 아이폰/안드로이드 애플리케이션도 만들고 .NET도 공부하여 MVC 기반의 서비스를 만들어 봄
- 앵귤러를 이용한 웹앱플리케이션을 만들거나 제이쿼리와 부트스트랩 등을 써보거나 포트폴리오 웹사이트를 만들었음
- 파이널 컷 프로 영상편집 툴을 배워 아이의 성장 모습을 담은 주간 비디오를 만들어 부모님께 보내드리기도 함
# 회사로 복귀
- 출산 휴가기간 동안 다양한 프로젝트를 하며 갈증을 해소하고 나니, 실무에서 만들고 있는 백엔드 프로젝트가 사이드 프로젝트의 퀄리티가 크게 다르지 않다고 느낌
- 에이전시 회사에서 퀄리티 있는 코드를 작성한다는 것은 사치가 될 수 있겠다고 느낌
- 자신만의 서비스와 제품을 만드는 개발 문화가 있는 곳으로 이직을 하기로 생각함
- 좋은 시스템 디자인, 좋은 아키텍처, 테스팅이 가능한 곳에서 일하고 싶었음
# 이직 그리고 성장
- 이직한 회사는 웹서비스, 아이폰, 아이패드 애플리케이션이 출시되었으나 안드로이드 앱이 없어서 빠르게 안드로이드 앱을 출시해야 했음
- 글로벌하게 사용되는 어플리케이션이기 때문에 인도나 브라질과 같이 저사양 모바일을 사용하는 나라에서도 잘 동작하도록 만들어야 했음
- 좋은 설계를 해나갈 수 있는 경험이었고, 주변의 좋은 개발자들과 함께 많이 성장할 수 있었음
- 약 2년 뒤, 테크리더와 동등한 위치로 올라가게 되었고 회사에는 다른 변화가 발생하게 됨
# 회사의 욕망! 하이브리드?
- 유능한 CTO가 구글에서 일할 당시부터 연구해온 기능이 있었음 => 하이브리드
- 회사는 어떻게 하면 웹에서 동작하는 것을 모바일 플랫폼에서도 똑같이 구현할 수 있을까? 일의 중복을 어떻게 하면 피할 수 있을까? 고민하게 됨
- 중요한 포인트는 다른 언어나 다른 플랫폼 툴을 이용해서 하는 것이 아니라, 타입 스크립트를 그대로 재사용하는 것이었음
- 당시에는 이 하이브리드 기술을 반대하는 입장이었음
- 안드로이드는 이머징마켓에 있는 사용자가 많았기 때문에, 대부분 아주 예전 안드로이드 운영체제를 사용하는 사람이 많았음
- 저사양 인터넷을 사용하는 이용자가 많았는데 웹뷰가 엄청 느리다는 단점이 있었음
- 단순히 웹기술을 하이브리드를 이용한다고 해서 모바일에 동작할 수 있도록 만드는 것이 아니었음
- 모바일에서 고려해야 하는 것들을 웹에서도 다 구현을 해야 했음
(ex) 모바일은 터치 베이스 기능을 많이 사용하고 제스처까지도 사용하는데 이 또한 웹에서 다 구현을 해야 하는 것 등
- 반대를 많이 했으나, CEO는 위험부담은 알겠으나 일단 해보고 싶다는 입장이어서 심각한 고민에 빠지게 됨
# 거절과 약속
- 팀원의 사기가 떨어지는 상황이었음
- 열심히 안드로이드 제품을 출시하고 상도 받았는데, 하이브리드는 위험부담이 너무 큰 기술이라고 생각했음
- 엔지니어링 매니저의 조언 : 반대하지만 그래도 회사에서 원하는 거니까 네가 회사를 위해서 할 수 있는 게 무엇인지 생각해보고 앞장서서 회사에 대한 애정을 보여주는 게 어떻겠니. 무모해 보일 수 있지만 최선을 다 해보고 실험을 통해서 어느 정도 성공하는지 보는 것도 재미있지 않겠니?
- 이 모바일 팀에 남아서 웹팀과의 브릿지 역할을 할 것인지? 아니면 웹팀(프론트엔드)으로 들어갈 것인지? 둘 중에 고민하게 됨
# 프론트엔드, 그 불타는 심장 속으로
- 연봉, 성장, 역량에 대한 만족감이 그 당시 높은 상태였고 기술상으로도 프론트엔드 실무 경험을 쌓으면 좋을 것 같다고 판단함
- 모바일 사용자가 원하는 기능을 내가 더 잘 안다고 생각했고, 어떻게 해야 안드로이드에서 동일한 사용감을 가질 수 있을지 알기 때문에 웹팀에 들어가도 좋겠다고 생각함
- 존경하는 CTO가 있었고, 코드 리뷰도 받을 수 있는 상황이었고, 사용자와의 인터렉션이 많이 발생하는 메인 코어팀이기 때문에 배울게 많겠다고 생각함
- 하지만 단기간 안에 웹 기술을 이용해서 모바일 플랫폼을 위한 기술을 만들어내야 하기 때문에 워라벨이 망가진다는 단점이 있었음
- 남편과 부모님도 왜 그렇게 빡세게 사냐며 질타를 함
- 모바일 팀에서 테크 리더로 리더십을 발휘하며 편하게 생활하고 있었는데, 다시 전혀 실무 경험이 없는 상태에서 프론트엔드 팀으로 가야 되는데 내가 과연 잘할 수 있을까?라는 고민을 함
- 테크 리더를 하다가 주니어처럼 새로 배워야 하니 연봉이 내려가지 않을까? 하는 걱정도 하게 됨
- 어떻게 할지 고민하는 찰나에 CTO가 지목하여 함께하고 싶다고 제안하셔서 합류하게 됨
- 왜 나를 지목했나?
1. 안드로이드 개발자였지만, 웹과 아이폰 애플리케이션을 사용하던 사용자가 안드로이드를 사용할 때 이질감을 느끼지 않으면서 안드로이드만의 사용감을 가지고 갈 수 있도록 고민하고 문제점을 개선하려고 했다는 것
2. 모바일을 위해서 백엔드 팀과 만나서 개선사항들을 제안했던 것
3. 어떤 것을 하더라도 전문가는 아니지만 최선을 다해 공부하고 전문가가 되려고 노력했던 것
4. 여러 개발자를 도와주려고 노력했던 것
- 몇 달 간은 안드로이드 팀도 이끌어가면서 웹 팀에서도 업무를 진행했음
- 모바일 팀에서 이끌어냈던 생산성을 어떻게 프론트엔드 팀에서도 낼 수 있을지 계획서를 작성하여 제출함
- 회사에서 트레이닝해주지 않아도 나 스스로 어떻게 생산성을 이끌어 낼 것인지, 어떻게 회사에 이익을 가져다줄 수 있을지, 어떤 기능을 구현할 것인지 계획서를 작성함
- 리더로 계속 성장하고 싶었는데, 다시 프론트엔드 팀으로 가면 리더를 하기가 어려운 상황이었음
- 웹팀에는 프론트엔드만 10년한 경우도 많았고, 리더가 되려는 개발자도 많았음
- 다행히 회사에서 연봉을 깎지 않았음
- 회사 전체적인 도메인 지식이 있고, 가지고 갈 수 있는 가치가 컸다는 것을 CEO가 인정해 줌
- 그 후 얼마 지나지 않아 팀장에서 그룹장으로 승진함
'Programming > 프로그래밍 내용 정리' 카테고리의 다른 글
Docker를 사용하여 MySQL 설치하기 (0) | 2022.04.17 |
---|---|
[Jenkins] CI, CD, 젠킨스에 대해 알아보자 (0) | 2021.07.29 |
[Git] Git-flow 전략에 대해 알아보자 (0) | 2021.06.11 |
REST API가 뭔가요? (0) | 2021.02.15 |
[JAVA] ArrayList가 뭔가요? (0) | 2021.02.15 |