프로그래밍/임베디드 프로그래머 생활

임베디드 프로그래머는 어떤 것들을 알아야 할까?

solution online 2020. 12. 2. 17:18
728x90
반응형

이번 글에서는 임베디드 프로그래머가 되려면 어떤 것들을 알아야 하는지 알아보겠습니다.

도대체 임베디드 프로그래머가 되기 위해 알아야 할 것 즉, 어떤 지식을 알아야 하는가?

대학교의 커리큘럼을 보면 기본적인 가이드 라인을 알 수 있습니다.
공대로 유명한 한양대학교의 커리큘럼을 한번 살펴보겠습니다(제가 나온 대학은 아닙니다…).
아래의 그림은 한양대학교 소프트웨어대학 컴퓨터소프트웨어학부의 이수 체계도 입니다.
빨간색으로 표시한 것들이 임베디드 프로그래머로써 기본적으로 알아야 할 이론들 입니다(사실 "Body of Knowledge" 라고 써 있는 즉, 전공 과목들은 다 알아야 하지만 제 경험상 임베디드 프로그래머에게 필요한 것들만 말씀드립니다.).

 

cs.hanyang.ac.kr/education/process.php

 

 

무언가 좀 많아 보이죠? 네 많습니다.
앞선 글들에서 몇 번 말씀드렸지만 할게 많습니다. 표시한 것들이 왜 필요한지 간단히 설명 드리겠습니다.

우선 임베디드 프로그래머는 전자기기의 전반적인 동작과 제어를 담당합니다. 그렇다 보니 소프트웨어적인 것 외에 하드웨어 적인 것들을 알아야 하는데요.
하드웨어에 속하는 이론이 아래와 같습니다
"디지털 논리, 마이크로프로세서"
나머지는 소프트웨어 적인 것들이라 보시면 됩니다.
(실제 제가 저 과목들을 다 들은 것도 아니고 한양대를 나온 것이 아니기 때문에 틀릴 수도 있습니다.)

우리가 프로그래밍을 한다는 것은 컴퓨터에 사람이 쓸 수 있는 여러 프로그램을 만든다는 것을 의미합니다. 그렇다보니 컴퓨터는 어떻게 생겼고, 그 컴퓨터를 쓰기 위해서는 어떤 것들을 알아야 하는지 배우게 됩니다.
그래서 "디지털 논리, 마이크로프로세서"를 제외한 과목들이 있는 것 입니다.

그렇다면 저 이론들을 모르면 프로그래머가 될 수 없는가?
대학을 나오지 않으면 프로그래머가 될 수 없는가?
아닙니다. 될 수 있습니다.
실제 전 대학교 4학년 때 처음 임베디드라는 분야를 대학원 선배를 통해 알게 됐고, 대학 졸업 후 직업학교를 들어가 6개월간 임베디드 공부를 했습니다.
2년제, 4년제 대학이든 직업학교든 프로그래머는 기본적으로 프로그래밍을 할 줄 알면 될 수 있습니다.
다만, 흔히들 말하는 최적화를 위해서, 내 프로그래밍 역량을 높이기 위해서는 이론 공부는 할 수 밖에 없습니다.
굉장히 개인적인 예를 들어보면, 한번쯤 들어보셨을 와우(world of warcraft) 라는 게임. 그 게임이 나왔을 당시 국내에서도 많은 아류 게임들이 나왔습니다. 지금도 그런지 모르겠지만 와우를 할 수 있던 컴퓨터 사양으로는 국내의 아류작들을 실행하기가 어려웠습니다.
왜? 여러가지 요소가 있지만 국내 특성상 빨리빨리 만들어야 하고, 일단 동작하는 것이 중요하니까요. 그렇다보니 많은 리소스를 사용하고 그만큼 컴퓨터 사양이 높아야 했습니다. 이런 현상은 지금도 마찬가지 입니다. 굉장히 유명하고 좋아보이는 게임에 따라 PC방 컴퓨터 사양이 바뀌니까요.

여담이 길었네요.
이론이 필요한 현실적인 얘기를 하나 더 해드리자면 바로 취업입니다.
프로그래머가 프로그래밍 언어만 다룰 줄 알면 되지! 라고 말씀드렸고, 너 나아가기 위해서는 이론이 필요하다고도 말씀드렸습니다.
회사란 곳은 돈을 벌기 위한 집단입니다. 많은 경쟁자들이 있고, 소수 인원만 뽑아야 하는 회사의 입장에서는 누구보다 더 많이 알고 있는 사람을 뽑을 겁니다.
왜? 누군가를 교육하고 일을 할 수 있을 때 까지 걸리는 시간도 돈이기 때문입니다.

그래도 저 이론들은 너무 많은 것 아닌가?
대학을 다니시는 분들이라면 커리큘럼 그대로 다 잘 배우시길 권해드리고 싶고요.
그래도 저 중에 몇 개만 추려본다면 "디지털 논리, 시스템 프로그래밍, 컴파일러, 소프트웨어 공학, 임베디드시스템, 네트워크 프로토콜" 정도가 될 것 같습니다.

그런데 프로그래밍 언어에 대한 이론이 안보이네요?
아마 저 과목들에 녹아 있을 것 같고요. 임베디드 프로그래머가 필수로 해야 할 언어는 "C언어" 이고, 남들과 차별을 두고 싶다면 어셈블러(assembler)를 공부하시면 좋습니다.

끝으로
프로그래밍 언어를 공부하고 사용하다 보면 자연스레 많은 지식을 알게 되지만 임베디드의 특성상 전자기기가 있어야 하고 전자기기에 대한 기본 이론이 없으면 시작조차 어렵습니다.
요즈음은 아두이노가 있어서 가장 기초적인 것들은 접해보기 쉽긴 하지만 실제 실무에서 사용하는 것은 많이 다릅니다.

공부란 참 괴롭고, 고통스럽고, 외롭기도 합니다. 그러나 한시간, 하루, 한달, 일년이 쌓이면 나도 모르게 남들보다 앞서 나가 있고, 새로운 것을 접해도 남들보다 빨리 습득하는 "나"를 발견할 수 있습니다.

1년 3년 고생해서 앞으로의 10년 30년이 편해진다면 투자할만 하지 않을까요?

다음 글에서는 공부할 수 있는 무료 사이트들과 도움이 될 만한 책들에 대해 설명드리겠습니다.

궁금한 사항은 언제든 댓글 남겨주세요~

728x90
반응형