멘토지원
파트너스
현직자 클래스
멘토 찾기
Best 질문답변
사수 없는 개발자, 당장 어떻게 미래를 준비해야 할까요?
삼성전자 · 로봇개발그룹
약 2년 전
💬 멘티의 질문


안녕하세요 멘토님! 저는 작은 회사에서 펌웨어 개발자로 일한 지 11개월이 된 사회 초년생입니다.


 ©Kevin Ku


회사 일에 점차 적응하게 되면서 고민이 생겼습니다.

 

고민 1) 전공이 컴공이 아니라 코드를 짜고 있지만 잘 하고 있는지 모르겠고, 실력이 초보에서 머물고 있는 것 같습니다. 문제는 일을 잘하고 있는지 프로그램을 잘 짜고 있는지 알고 싶은데 회사 안에서 조언을 구할 분도 없어서 고민입니다. 멘토님은 사회 초년생 시절에 실력을 어떻게 쌓았는지 궁금합니다.

 

고민 2) 프로그래밍 언어를 c언어만 사용해도 될까요?

학생 때 c, java, python 등 여러 언어를 배우긴 했지만, 현재 회사에서 c를 사용하고 있어 c언어만 사용해왔습니다. 하지만 많은 센서들의 라이브러리가 c++로 되어 있는데요. 펌웨어, 임베디드, 로보틱스 분야에서 많이 사용되는 코드는 c와 c++ 중 어느 것인지 궁금합니다. 또한, 자료구조와 알고리즘을 공부하려고 하는데 어떤 언어를 사용하는 것이 좋을까요?

 

고민 3) 이직에 대한 고민입니다.

항상 새로운 일을 하는 것이 좋아서 현재 하는 일은 재미있습니다. 하지만 전문적으로 도움을 구할 수 있는 분이 없고, 때문에 실력이 늘지 않고 제자리인 것 같고, 이 상태로 새로운 것을 만들어 나아가야 한다는 점이 막막합니다.

 

최근에 큰 회사로 이직을 하는 게 앞으로의 커리어에 도움이 될 것 같다는 생각이 들었습니다. 회사에 같은 분야 경력자분이 없어 실력을 많이 키울 수 없다는 건 제 핑계일까요?

 

적다 보니 너무 길어졌네요. 바쁘신데 긴 글 읽어주셔서 감사합니다 :)

💬 H 프로 멘토의 답변


안녕하세요. 멘티님! 반갑습니다! 멘티님의 고민을 읽고 반갑다는 생각이 먼저 들었습니다! 저도 비슷한 처지에서 비슷한 고민을 해왔고, 지금도 하고 있는 입장에서 제 생각을 말씀드릴게요, 참고 부탁합니다.

 

저는 기계공학을 전공하고, 의지와는 상관없이 대학원부터 로봇 소프트웨어(비전)를 시작해서, 지금은 10년 이상, 소프트웨어 직군에서 근무를 하고 있습니다. 저도 소프트웨어 비전공자로서 여러 가지 힘든 점 그리고 고민이 많았어요.


멘토님께서는 임베디드 영역에서 시작을 하셨군요! 임베디드 영역에서는, 컴퓨터 구조론+컴파일러 이론 그리고 운영체제가 기본 배경이 되는 이론이라고 생각이 듭니다. 당장은 라이브러리를 활용해서 개발을 하는 게 주요 업무겠지만, 이 분야에서 정말 수준 높은 역량을 쌓으려면, 해당 과목의 이론과 오픈소스 기여 혹은 수정 등을 통해 실력을 쌓아야 해요.

 

컴퓨터 구조론 같은 경우는, RISC-V의 오픈 소스를 주석을 달며 이해하면서, 나만의 CPU 설계 등을 조금씩 해볼 수 있겠고, 컴파일러는 LLVM의 오픈소스를 활용해서, 주석을 달면서 이해해가면서 이론과 실제를 비교할 수 있겠네요. 그리고, 운영체제는, Linux from scratch 등의 오픈 소스를 이해해가며 실력을 키울 수 있어요!

 

저도 계속 회사 업무 외적으로 공부를 하고 있는 입장이고, 하면 할수록 끝은 없는 거 같아요. 제일 중요하다 생각하고, 관심이 가는 것부터 깊이 또 넓게 확장해 나간다면, "진짜" 실력이 천천히 하지만 분명히 쌓일 거예요.

 

이제, 질문 주신 것들을 하나씩 제 생각을 공유드릴게요.


 ©Christopher Gower


배움의 한계가 있는데, 이직하는 게 나을까요?

뭔가 주먹구구식으로 배우는 느낌이고, 누군가한테 체계적으로 배운다는 느낌이 안 든다는 말씀이시지요? 사실 저도 그랬어요. 회사라는 곳이 다들 바쁘고, 학교처럼 체계적으로 가르쳐주지도 않고(사실 학교도 기대만큼은 아니었지요), 알아서 살아남아야 하는 곳인 거 같아요.

 

저도 초년생 때는, 그러한 부분을 기대했으나, 이제 누군가를 가르치는 입장이 되니, 열심히 가르쳐봐야 언젠가 부서를 옮기거나, 퇴사하는 직원들도 생기고, 또 어떤 직원은 저와는 다른 온도에서 살아서, 깊이 뭔가를 이해하고 발전하는 걸 원하지 않는 분도 계시기도 했어요. 


그러다 보니, 뭔가를 체계적으로 가르치기보단, 최소한의 가이드만 주고, 비슷한 온도의 사람만 챙기게 되더라고요. 무슨 뜻이냐면. 현실은 현실이라는 걸 받아들이고 어떻게 스스로 실력을 쌓고, 앞으로 커리어를 발전시킬지를 전략적으로 생각해야 합니다.


제가 처음에 한 건 자격증이었어요. 정보 관련 자격증들을 두 개 이상 땄어요. 성취감은 있었지만, 실력은 그다지 향상된 것 같지는 않았습니다. 다음에 시도한 건 책이나 강의를 통한 공부였어요. 주로 읽고, 이해하는 데 초점을 맞추었는데, 어느 정도 도움은 되었으나, 뭔가 문제를 풀거나 프로젝트를 한 게 아니라, 제대로 이해하기에는 한계가 있었지요.

 

결국, 제가 찾은 제일 좋은 방법은, 오픈 소스를 통한 이해였어요. 각 영역별로 가장 좋은 오픈소스, 혹은 시뮬레이터 등이 공개되어 있고, 해당 코드를 분석하는 시각화 자료를 만들고, 라인 바이 라인으로 주석을 달면서, 이론도 연결해 보는 식으로 학습했어요. 그리고 나의 목표에 맞게 조금 수정해 봤어요. 이런 식으로 하는 게 가장 많이 배우고, 나중에 이직할 때 면접 때도 많은 이야기를 할 수 있게 되더라고요.

 

저는 우선 제 전공인 영상 처리 때도, 구현을 해내는데 초점을 맞추지 않고 가장 많이 쓰이는 오픈소스의 소스코드를 분석하는 것부터 시작했어요. 로봇 같은 경우는 터틀봇3를 구매해서, 올라가는 소스코드를 거꾸로 분석하면서, 이론과 연결 지었어요. 이렇게 하나씩 쌓여가면, 세계 최고 수준의 코드를 짜는 사람의 두뇌를 조금이라도 따라가게 되고, 몇 년 후에는 그냥 시킨 일만 하는 사람보다는 훨씬 높은 수준의 엔지니어가 될 수 있을 거예요. 


 

C와 C++ 사이 무엇을 우선순위에 둬야 할까요?

C와 C++ 간의 고민이시군요! 아마 임베디드 쪽에서는 C를 많이 쓰는 걸로 보이는데요, 사실 두 언어 사이에 가장 큰 차이는 객체 지향성입니다. 결국 규모가 커지고, 다양한 사람이 작업하는 코드가 될수록, 재사용성이 높은 C++, JAVA 등의 언어가 많이 쓰이지요. 임베디드 쪽에서는 C++이 지원이 되는지는 멘티님께서 더 잘 아실 거 같아요. C++, C#, JAVA 등의 언어는 로봇처럼 복합적인 일을 해서 다양한 사람들이 작업을 하는 일이나 웹에서 많이 쓰이고 있어요. 멘티님께서 보다 상위 레이어의 커리어로 확장을 하시려면, 객체지향 언어는 꼭 할 줄 아셔야 합니다

 

자료 구조, 알고리즘 공부는 보통 요즘엔 파이선으로 많이 합니다. 속도는 느리지만, 자료구조에 집중하기엔 좋습니다.(저는 C++로 했습니다만) 그냥 책을 읽어서는 도움이 되기 어렵고, 저는 나동빈 씨의 책을 읽고, 한 줄 한 줄 예시 문제 코드에 주석을 달며 이해하고, leetcode나 백준 같은 사이트에서 관련된 문제를 풀면서 공부했습니다. 요즘에는, 웹 관련 회사나, 대기업에서는 코딩 테스트를 반드시 응시하므로, 이런 식으로 6개월에서 1년 정도는 준비하는 걸 추천해 드려요. 


 ©Safar Safarov


큰 회사로의 이직이 맞을까요?

회사의 규모가 클수록 아무래도, 서로 도울 수 있는 사람을 만날 확률이 높아지는 건 사실입니다. 서로 자극이 되기도 하고, 서로 세미나도 하면서 상호 발전에 큰 도움이 되는 건 맞습니다!

 

다만 일반적으로 경력이 최소 6년 이상이 되어야, 대기업 같은 경우 지원이 가능해, 그전까지는 개인적으로 레벨업 하는 시간을 가지셔야 합니다. 위에서 말씀드린 것처럼 코딩 테스트도 준비해야 하고, 라이브러리를 사용하는 수준을 넘어서 수정하고, 최적화할 수 있을 정도가 되려면, 이론 공부와 오픈소스 분석을 통한 실력 및 포트폴리오 쌓기도 계속해 나아가야 합니다.

 

많은 분들이 이런 고민을 멀리하거나, 하지 않는 경우가 많아서 사실 이런 고민을 하고 계신 거 자체만으로도 정말 대단하다고 생각합니다! 멘티님만의 자기 계발 방법, 루틴을 찾으시고, 또 연락해 주세요! 감사합니다.



정말 자세하고 좋은 답변 감사합니다. 당장 어떻게 공부해야 할지 막막했는데, 하나하나 설명해 주셔서 도움이 됐어요 :) 오픈소스를 이용한 공부 방법은 생각을 못 했었는데 이론 공부도 하면서 열심히 봐야겠어요. 감사합니다.


H 프로 멘토
삼성전자 · 로봇개발그룹
IT개발/데이터
안녕하세요~
취업준비생과 회사생활을 막 시작한 분들의 말씀에 공감하고
함께 방법을 찾아갈수 있는 멘토가 되고 싶습니다.
같은 직무를 다룬 글
인기 있는 글
연구/설계
약 6년 전