많은 개발자들이 커리어를 고민합니다. 어느 정도 연차가 쌓이면 다들 개발자 커리어에 대해 고민을 하기 시작하죠. 여러 개발자들이 커리어에 대해 고민하는데요. 조금이라도 도움을 드리는 차원으로 몇 가지 정보를 포스트합니다.
 
1. 한국의 임베디드 개발 업체의 특성과 전문성
 
한국 임베디드 업체의 특징은 너무나 당연한 이야기지만 제품 개발 중심입니다. 제품 스팩과 가격을 결정해 수주를 받는 구조죠. 국가 기관이나 대기업으로부터 수주를 받습니다. IT 생태계를 이루는 다양한 업체와 협업하기도 하죠. 그런데 대부분 개발 업무는 아래 카테고리 중 하나일 겁니다.
 
- 제품 스팩 검토, 데이터 시트 리뷰
- 데이터 시트에 맞게 페리페럴 브링업 및 기본 동작 구현
- 버그 수정 및 안정화
- 인증 테스트를 거친 다음에 제품 개발 완료
 
대부분 업계의 임베디드 제품은 다양한 부품과 소프트웨어를 사용하지만, '리눅스 + Arm 프로세서 + 메모리 + 페리페럴(제품 스팩)' 구조가 대세입니다. 그런데 제품 개발에 초점이 맞춰져 있다 보니 개발자로써 전문성을 키우기 어려운 상황이라는 점이 단점입니다.
 
가장 대표적인 예를 들면요; 1~2개 제품을 리눅스 드라이버와 Arm 프로세서에서 개발했다고 가정하겠습니다. 이 쯤 되면 리눅스 드라이버나 Arm 프로세서에 대해 좀 알 것 같단 느낌이 들어요. 그런데 새로운 프로젝트의 스팩이 만약 리눅스가 아니라 다른 RTOS이고, Arm 프로세서가 아니라 RISC-V 프로세서이라면 어떻게 해야 할까요? 나는 리눅스와 Arm 프로세서 기반으로 개발했으니 이런 프로젝트는 못한다고 거절할 수 있을까요? 대부분 새로운 제품에서 요구하는 RTOS나 RISC-V의 구조를 분석해야 합니다. 수주를 준 업체가 부품을 정하면 이에 맞게 해당 부품(메모리, 페리페럴)을 분석하고 개발하기도 합니다.
 
물론 주니어 개발자 시절에는 다양한 제품을 개발하면 경력에 도움이 됩니다. 개발의 시야를 넓힐 수 있고 다양한 실무 경험을 키울 수 있죠. 사실 업계에서 가장 선호하는 개발자가 이런 유형이기도 합니다. 또한 다양한 RTOS나 CPU 기반으로 개발하면 공통으로 알아야 하는 스킬(TRACE32, JTAG 디버거, 회로도 분석 방법)을 익힐 수 있습니다.
 
하지만 7년 이상 개발 경력이 쌓이면, (본인이 원치 않던) 시니어 개발자의 길로 접어 드는데요. 누군가 "당신이 개발자로써 전문성이 무엇인가"라고 묻는 다면 딱히 내가 뭘 정말 잘 안다고 답하기 어렵습니다. 저도 유사한 상황을 겪었습니다.
 
모든 한국의 임베디드 업체가 제가 언급한 방식으로 운영되지는 않습니다. 나름대로 원천 솔류션을 겸비한 업체도 있겠죠. 시니어 레벨로 들어서면 전문성에 대한 질문을 할 필요가 있습니다.
 
2. 한국의 임베디드 개발자의 테크 트리
 
만약 전문성이 그리 요구되지 않는 제품을 개발하다가 연차가 쌓이면 계속 원하는 개발을 할 수 있을까요? 그렇지 않습니다. 대부분 업체에서 '관리를 하라'고 요구합니다. 어떤 기능에 대해 '기능 리더'를 맡아 달라는 게 아니라, 프로젝트 전반을 책임져 달라고 요구합니다. 문서를 취합하고 고객사의 전화를 받는 역할까지 맡길 원하죠. 동시에 개발도 잘 하라고 합니다. 그게 선임급 개발자가 할 역할이라고 주장하죠.
 
사실 임베디드 업체의 '기술 이사'급 정도의 매니저나 임원은 2000년대 초반에 개발을 했거나 하드웨어 출신 개발자인 경우가 많습니다. 네이버나 카카오 같은 소프트웨어 업체는 팀장이나 임원이 80년 생들로 구성돼 있는데요. 임베디드 업체는 고인물이 많아서 임원이나 매니저들의 연령이 "60년대 중반 ~ 70년대 초반"으로 형성돼 있습니다. 개발과 관리를 동시에 할 수 없다고 불만을 토로하면 이 분들이 잘 들어줄까요? 대부분 "잠꼬대 같은 소리하는군"이라고 무시할 것입니다. 예전에 (20년 전에) 자신이 개발과 관리를 동시에 한 무용담을 1시간 넘게 할 것입니다. 물론 20년 전에 개발했던 RTOS는 전체 소스 라인이 1000 밖에 안되는 심플한 베어 메탈 코드인 경우가 대부분입니다.
 
대부분 개발자들은 관리를 하기 싫어하는데요. 강아지가 목 줄에 이끌리듯이 관리를 하기 시작합니다. 물론 개발을 병행하죠. 시간이 들어 관리 업무에 더 많은 시간을 할애합니다. 이 쯤에 커리어의 갈림길에 들어 섭니다. 
 
   "개발자의 길을 갈 것인가", "관리를 할 것인가" 
 
용기 있게 개발자의 길을 가겠다고 선언한 분이 있지만. 많은 분들이 현실에 타협하면서 관리를 하기 시작합니다. 그런데 개발을 잘하는 캐릭터를 겸비한 분은 관리 능력이 떨어지는 경우가 많습니다. 또한 10여년 전부터 관리를 했던 매니저에게 밀리는 상황도 겪죠. 결국 관리도 못하고 개발도 못해 회사에서 버림 받는 처참한 상황을 맡게 됩니다.   
 
그렇다면 시니어 개발자로써 전문성을 키우려면 어떤 방식으로 개발을 해야 할까요? 이 내용은 다음 포스트에서 업데이트하겠습니다.
 

+ Recent posts