초짜가 시스템 엔지니어로 입문하게 되었습니다.

tempman의 이미지

안녕하세요, 막 회사에 입사한 사회 초년생입니다.

프로그래밍과 큰 관련없는 분야를 공부하다가 회사에 입사하게 되었는데

어쩌다보니 시스템 프로그래밍을 하게 되었습니다.

용어도 아직 생소해서 제가 시스템 엔지니어라고 부르는 것도 맞는지도 잘 모르겠는데

얼른 회사 업무에 적응하기 위해서 공부를 하려고 합니다.

하게된 업무가 디바이스 드라이버를 작성??하는 업무로 알고 있습니다.

제 수준은 아주 얕게 C언어를 사용할 수 있고 Atmega128에 불을 켜보았고 이번에 처음으로

리눅스를 사용해보았습니다.

앞으로 어떤식으로 공부를 해야할지 잘 감이 안잡힙니다.

1. 이러한 초짜가 업무에 기여할 수 있는 실력까지 키우는데 어떤 과정을 거쳐야하는지,

어떤 공부를 해야하는지 알고 싶습니다.

2. 커널의 기본을 익힐 수 있는 책과 디바이스 드라이버에 대한 기본을 익힐 수 있는 책,
그리고 좀 더 디바이스 드라이버에서 심화되지만 바이블로 여겨지는 책을 알고 싶습니다.
(현재 모두를 위한 리눅스라는 책을 공부했는데 커널에 대해 너무 얕게 다루는 것 같습니다.
http://www.kyobobook.co.kr/product/detailViewKor.laf?barcode=9791188621408)

3. 시스템 프로그래밍 분야를 익히게 되었을 때, 다른 프로그래밍 분야에 어떤 긍정적인 영향을 줄 수 있는 지 알고싶습니다. 예를들어서 안드로이드 어플리케이션을 개발할 때, 어떠한 이유로 커널에 대한 지식이 있는 사람이 필요하더라 라는 식으로 다른 프로그래밍 분야에서 시스템 프로그래밍을 경험한 사람이 중요한 역할을 할 수 있는지 알고 싶습니다.

제가 몰라도 너무 몰라서 질문도 두서없이 하게 되었습니다

초행길에 길 잃은 아이에게 길을 알려주신다는 마음으로 알려주시면 정말 감사드립니다.

감사합니다.

AustinKim의 이미지

임베디드 리눅스 11+ 연차 개발자 입장에서 조금이나마 도움이 되면 좋겠다는 마음으로 의견을 남깁니다.

1. 업무에 기여할 수 있는 실력까지 키우는데 어떤 과정
임베디드 리눅스 업무가 매우 다양하지만 공통으로 키워야 하는 역량은 다음과 같이 말할 수 있을 것 같습니다.
+ 시스템 프로그램
+ CPU 프로세서(ARM/x86)
+ 디버깅(JTAG T32/ftrace/리눅스 디버깅 Feature)
+ 빌드 아키텍처(셸 스크립트, Make)

제 개인적 의견이지만 임베디드 리눅스 개발자의 핵심 역량은 '문제 해결 능력'이라 말씀드리고 싶습니다.

2. 좀 더 디바이스 드라이버에서 심화되지만 바이블로 여겨지는 책

안타깝게도 지금은 절판이 됐지만 다음 (IT EXPERT 리눅스 디바이스 드라이버) 책을 구해서 보시는 것이 어떨까요?
http://www.yes24.com/Product/Goods/1433632?scode=032&OzSrank=3

위 책에서 소개한 드라이버 코드를 작성하면서 감을 익히면 유익할 것 같습니다.

3. 시스템 프로그래밍 분야를 익히게 되었을 때, 다른 프로그래밍 분야에 어떤 긍정적인 영향

시스템 프로그래밍 분야 고수가 되면 다른 프로그래밍 분야에 긍정적인 영향을 끼칩니다.
프로그램 분야를 막론하고 해결하기 어려운 문제가 터졌을 때 '시스템 프로그래머'에게 도움을 요청하는 경우가 많습니다.

예전에 주위에서 너무 귀찮게 물어봐서 고수 '시스템 프로그래머'가 잠적하는 Side-Effect도 본적이 있습니다.

저의 의견
임베디드 시스템 프로그래머로 실력을 키우기 위해 가장 필요한 덕목은 '끈기'인 것 같습니다.
단기간에 실력이 업그레이드 되지 않으므로 꾸준히 연습을 하면서 오랫동안 내공을 키우는 것이 필요한 분야인 것 같습니다.

화이팅입니다!

(개인블로그)
http://rousalome.egloos.com