(Diary) 개발자의 주무기와 보조무기는 뭘까?

HALO

출처 trustedreviews.com

위의 짤은 FPS에서 무기를 2개씩 들고다니는 방식을 도입해 대유행시킨 게임 해일로.

보조무기의 역사

내가 전역 후 복학할 즈음, 당시 취업 준비를 하던 선배들이 하던 이야기는

개발자가 되려면 두 개의 무기를 가져야 한다였다.

주무기는 당연히 전공지식을 비롯한 개발.

보조무기는 바로 영어였다.

구분 주무기 보조무기
1 개발, 전공지식 영어

굳이 표로 나타내자면 이러하다.

그리고 시간이 흘러 내가 4학년이 되고 휴학을 했을 무렵엔 아래와 같이 바뀌어있었다.

구분 주무기 보조무기
1 개발, 전공지식 영어
2 개발, 전공지식 문제해결능력

흔히틀 코테, 코딩 테스트라고 부르는 알고리즘을 잘 푸는 것이 보조무기로 요구되었다.

그렇다면 영어는 이제 필요없어진 걸까?

아니다. 유창한 회화는 차치하고 주로 영어로 작성되는 공식 문서를 읽고 이해하고, 적용할 수 있는 게 기본값 이 되어버린 것이다.

표를 수정하자.

구분 기본값 주무기 보조무기
1 - 개발, 전공지식 영어
2 영어 개발, 전공지식 문제해결능력

그럼 알고리즘만 더 공부해서 코딩 테스트를 잘보는 것으로 귀결되었을까?

아니다. 내가 대학생이건, 신입이건 포트폴리오를 제출하는 것이 트렌드가 되었다.

즉, 당시 개발자를 지망하는 사람은

개발과 전공지식은 회사가 기대하는 바만큼은 충족하되, 영어 문서의 독해와 쓰기에 대한 능력을 보유하고 있으며,

취업하고자하는 회사가 출제한 코딩테스트를 통과하는 것으론 부족해졌다는 뜻이다.

왜냐? 코딩테스트가 보편화되면서 이를 타파하기위한 강의도 많아졌고, 학습을 위한 온라인 저지 사이트도 그만큼 늘었기때문이다.

즉, 인재를 채용하고 싶은 회사가 원하는 변별력 을 포트폴리오를 통해 어필하기 시작한 것이다.

지원자들의 수준 또한 계속해서 상향 평준화가 되어, 신입지원임에도 신입답지않은 포트폴리오들이 첨부되곤 한다.

구분 기본값 주무기 보조무기
1 - 개발, 전공지식 영어
2 영어 개발, 전공지식 문제해결능력
3 영어, 문제해결능력 개발, 전공지식 포트폴리오

점차 요구사항이 늘어나면서, 포트폴리오의 어뷰징을 방지하기위해 회사가 또 다른 방식을 창조해냈다.

바로 과제 전형.

이제 신입지원자도 과제 전형을 통과하여 가고자하는 회사의 취업문을 열고 있다.

구분 기본값 주무기 보조무기
1 - 개발, 전공지식 영어
2 영어 개발, 전공지식 문제해결능력
3 영어, 문제해결능력 개발, 전공지식 포트폴리오
3 영어, 문제해결능력, 포트폴리오 개발, 전공지식 실무능력

실무를 경험하려 회사에 지원하는 신입들이 이미 어느 정도의 실무능력을 가지고 있을 정도로 수준이 상향 평준화가 된 것이다.

본 포스팅에서 언급하고자하는 것은 취업의 고달픔은 아니다.

정말 언급하고 싶은 부분은 취업 그 이후이다.

취업 후엔 주무기만 열심히 강화하면 될까?

험난한 취준과정을 거쳐 모바일 관련 신입사원이 되었다고 가정하자.

(나는 별로 수긍하진 않지만) 회사에서 분류한 나의 직군인 Android를 예시로 들어보자.

팀에서 나의 성과를 인정받기위해 노력하는 신입사원 아무개.

Android 뿐만 아니라 iOS도 맡아서 처리하면 더 성과를 낼 수 있을까? 고민이 된다.

풀스택 엔지니어의 허상같은 글도 찾아보게 되고, Android도 깊게하기 어려운 데 iOS까지 손대다가 이도저도 아닐까 고민이 되기도 한다.

Android를 주무기로, iOS를 보조무기로 써도 될까?

그렇다면 그 비율은 어떻게 설정하는 게 이상적일까?

구분 Android iOS
Android 개발자 100 0
iOS 개발자 0 100
Case A 50 50
Case B 70 30
Case C 30 70

(실제론 불가능하겠지만) 쉬운 비교를 위해 각 영역에 대해 퍼센테이지로 정량적으로 표기해보자.

Case A

정확히 반반씩 하는 것이다.

특정 분야에 대한 전문성을 놓치게 되지 않을까 걱정되는 비율이다.

주무기를 잃어버리고, 보조무기 2개를 가지게 되는 꼴.

차라리 크로스플랫폼을 서브로 가져가는 게 좋지않을까? 하는 생각이 드는 경우이다.

Case B
Android의 비중을 낮추고, 일부 리소스를 iOS에 투자한다.

Android의 전문성이 약화되고, iOS는 주니어가 한계일 것만 같다.

Case C
Case B의 반대가 될 것이다.

그럼 안 하는 게 나은 거 아니야?

여기서부턴 완전히 나의 개인적인 의견으로만 작성한다.

모바일 사이드에서 시니어 엔지니어를 구하기 어려운 이유는 시니어 기준의 애매모호함도 있겠지만,

주니어나 시니어나 퍼포먼스의 차이, 혹은 코드 품질의 차이가 약간 존재할 뿐 빌드된 결과물만 평가하자면 별 차이가 없을 수 있기 때문이다.

Android든 iOS든 특정 플랫폼의 개발자로 본인을 정의하고 한계를 짓는다면 금새 매너리즘에 빠지거나 번아웃이 찾아오게 될 것이라고 생각한다.

서비스 기획하고, 디자인나오고, 기존에 작성된 아키텍쳐에 맞게 로직 작성하고, 테스트코드 짜고 반복. 반복 반복.

나는 아래와 같이 사고를 전환하길 바란다.

AS-IS
나는 Android 개발자 혹은 iOS개발자이다.

TO-BE
나는 A기술을 Android 혹은 iOS플랫폼에 구현하고 있다.

주무기와 보조무기를 특정 플랫폼에 종속시키지말고, 본인만의 기술 도메인을 쌓고 이를 가장 잘 구현할 수 있는 플랫폼을 보조무기로 장착하는 것.

이게 내가 추구하고, 가고 싶은 방향이다.

문제해결능력을 가진 직업인 소프트웨어 엔지니어 가 나의 꿈 중 하나이기때문이기도 하다.

보조무기에 장착한 플랫폼이 바뀌거나, 해당 플랫폼에 종속된 언어가 있어 언어도 바뀐다고 한들, 나의 주무기에 장착한 기술 도메인은 변하지않는 엔지니어가 되고 싶다.

부디 플랫폼을 주무기로 삼지않기를..

왜 이런 글을 썼는가?

요즘 교류의 중심에 있는 안드로이드 단톡방에서 아래 화두가 나왔기때문이다.

1
안드로이드 개발자가 ios까지 할줄아는게 경쟁력이있을까요? 아니면 한가지만 깊게 파는게 좋을까요?

이 질문에 대해 다양한 사람들의 다양한 의견이 나왔다.

물음표는 못 참는 병에 걸린 나도 의견을 제시하였고, 이에 대한 생각을 정리하고 싶어졌다.

사실 이러한 생각이 드는 이유는, Android 개발자에 비해 iOS 개발자가 매우 적기때문이다.

즉 수요는 있는데 공급이 없다.

이거에 대한 이유는 뭘까? 맥북이 비싸서? Apple 개발자 라이센스의 연간 구독료가 부담스러워서?

궁금하지만, 답을 모르니 적을 수가 없다.

이번 주 생각 정리도 이걸로 끝!

p.s 이번 포스팅의 트리거가 되어준 분들, 그리고 건강한 토론을 이어간 커뮤니티 소속분들에게 포스팅에서나마 감사를 표합니다.