리눅스 프로그래머란? 리눅스 프로그래머에 대한 모든것

* 위키의 “리눅스 프로그래머” 라는 글이 현재의 글로 이동하였습니다. 양해를 부탁드립니다.

리눅스 프로그래머(혹은 개발자)

 Linux 혹은 Embedded Linux 기반의 환경에서 S/W를 개발 및 공급, 구축, 유지보수 등의 업무를 수행하는 일을 하는 사람들을 의미한다.

어떤 일을 하는가?

  • X86 기반의 시스템((인텔 Xeon 프로세서를 사용하는 서버))에 리눅스를 설치하여 구성한 서버를 개발 및 유지보수 하는 프로그래머.
  • 여기서 유지보수를 하는 사람들 중에는 프로그래머들 외에 유지보수 엔지니어들((대표적으로 네트워크 서버나 장비 유지보수 업무를 하는 엔지니어))이 있다. 이들과는 약간 의미가 다르다. (엔지니어들((유지보수 업무를 하면서 간단하게 쉘(Shell)은 사용하는 엔지니어들은 있다.))은 소스를 분석하거나 코딩을 하지 않는다.)
  • 백엔드(Back-End) 포지션이라고 불리기도 한다. 물론 백엔드 프로그래머라고 해서 전부 리눅스 환경에서만 하는건 아니지만 대부분 리눅스 기반의 환경((비용적인 측면에서 서버는 리눅스를 많이 사용한다.))에서 개발을 하는 경우가 많다.
  • 백엔드 포지션 서버 프로그래머가 반드시 리눅스의 시스템적인 지식을 알고 있어야 하는 것은 아니다. 하지만 리눅스 환경에 대한 이해와 지식을 알고 있으면 당연히 더 좋다.
  • ARM, MIPS 기반의 MCU에 임베디드 리눅스가 포팅된 환경에서 단말, 장치, 장비 등을 개발하는 프로그래머
  • Kernel/Device Driver 등을 포팅하거나 수정, 최적화를 하는 프로그래머
  • 팹리스(Fabless) 회사에 종사하는 프로그래머들도 있다. 시스템 반도체 제조사((삼성, Mediatek 이 대표적))에서 일할 수 있다.
  • 임베디드 리눅스를 포팅한 시스템 기반으로 제품을 제조하는 제조업체
  • Device Driver의 경우에는 주로 Chip 제조사(센서, 네트워크 등)에서 일할수도 있다. 안드로이드를 비롯한 리눅스 기반의 시스템에서 사용하는 Chip들은 Device Driver를 제공해 줘야 하기 때문이다.
  • Middle ware 포팅, 최적화, 수정 등을 하는 프로그래머
  • 오픈소스를 많이 사용하고, MCU의 아키텍처에 맞게 포팅하는 작업을 하기도 한다.
  • BSP를 제공하는 팹리스 회사에서도 이런 일을 하는 프로그래머들이 있다.
  • Linux Application 을 수정, 개발, 유지보수 하는 프로그래머
  • 임베디드 리눅스를 다루는 회사에서 주로 Linux Application을 개발, 수정, 유지보수 작업을 한다.
  • 주기적으로 시스템 소프트웨어(혹은 펌웨어)를 릴리즈 하는 프로그래머들도 이 작업을 주로 하게 된다.
  • 대다수의 임베디드 리눅스 프로그래머들이 기본적으로 수행하는 포지션이다.

어느 분야에서 일할 수 있는가? 

  • 네트워크 서버, 장비, 장치
  • 웹 서버
  • 데이터 서버(DB 서버)
  • 파일 서버
  • 네트워크 장비
  • NAS
  • 네트워크 스위치
  • Router
  • 게이트 웨이
  • VPN
  • WiFi AP 및 WiFi 전용 Router
  • VoIP 서버 및 게이트웨이
  • VoIP 단말기
  • 안드로이드 기반의 스마트폰((리눅스 커널이 탑재))
  • 안드로이드 포팅 작업
  • 삼성전자, LG전자(LG전자는 휴대폰 사업 철수함)
  • 안드로이드 기반의 테블릿 PC
  • 3G/LTE/5G 중계기
  • 3G/LTE/5G 통신 단말기
  • 카드 결제기
  • 버스 카드 단말기
  • 특수 목적 단말기
  • IoT 단말기
  • WiFi 단말기
  • IoT 단말기
  • 인터넷 전화기
  • 자동차 전장 시스템, 전장 부품 제조업
  • 멀티미디어 AVN
  • 네비게이션
  • 블랙박스
  • 기타 자동차 탑재 장비 및 탑재 부품
  • 시스템 반도체 제조업
  • ARM 기반의 SoC 제조
  • 삼성전자
  • Broadcom, NXP, TI, Mediatek, Realtek 등의 SoC 제조사
  • ARM 혹은 MIPS 기반의 CPU를 제조하는 중소 Fabless 제조사
  • 특수 목적 기능의 Chipset 제조사(Linux Driver 개발)
  • 센서, 네트워크 Chipset 제조사
  • 통신 시스템 혹은 장비 제조업
  • IPTV 셋탑박스
  • 3G/LTE/5G 모뎀 제조
  • 광랜 모뎀
  • 위성 통신 장비, 위성 통신 모뎀
  • 3G/LTE/5G 시뮬레이터
  • 인공 위성
  • 반도체 장비 제조업
  • 로봇 제조업
  • 가전 제품 제조업
  • 삼성전자, LG전자
  • 국방, 항공 분야
  • 방산 관련 제조업
  • 항공 제어 장비, 항공 시뮬레이터
  • 측정 계측 장비
  • 측정 및 계측 장비 제조업
  • 각 대학 연구소

어떤 언어를 사용하는가? 

  • 리눅스 프로그래머라고 해도 맡은 분야나 포지션에 따라 다르다.
  • x86 기반의 리눅스 서버를 개발하는 백엔드 프로그래머는 개발된 서버 데몬이나 어플리케이션에 따라 사용 언어는 다양할 수 있다.
  • C, C++, 파이썬, 자바, nodejs 등
  • Shell Script 는 기본적으로 사용할 수 있다.
  • 임베디드 리눅스 시스템을 다룬다면 아래와 같다.
  • 리눅스 Kernel, Device Driver
    * C
    * Midlleware
    * C, C++
    * Applications
    * C, C++, Python, Shell Script.
    * 여기서는 프론트엔드 프로그래머는 제외한다. 프론트엔드 프로그래머는 일반 리눅스건 임베디드 리눅스건, Windows 건 간에 사용언어가 달라지거나 하는 것은 없다.

연봉이나 처우는 어떤가?

  • 백엔드 프로그래머의 경우에는 소위 네카라쿠배라 불리는 IT 서비스 대기업의 경우에 신입부터 높은 연봉을 지급하는 걸로 알려져 있다.
  • 연봉 수준은 하단의 링크 참조
  •  IT 서비스나 게임 개발사의 경우에 백엔드 프로그래머는 나름 업계에서 어느정도 대우를 해주는 것으로 알려져 있다.
  • 서버 개발자는 프론트엔드 개발자에 비해 개발 인력도 상대적으로 적고 수요는 있으나 공급이 부족한 편이다.
  • 서버 개발자중에 DB쪽을 다루는 개발자가 있는데 이들 개발자들은 서버 개발자라도 보기도 한다. 하지만 DB 개발자들이 리눅스 서버에 대한 전반적인 것을 다 하기엔 힘들 수 있다.
  • DB 개발자들이 리눅스 기반의 서버만 하지 않는다. Windows 서버에서도 DB쪽을 다루기도 한다.
  • 임베디드 리눅스 프로그래머는 기업 규모나 업종에 따라서 천차만별이다.
  • 임베디드 리눅스 프로그래머들이 갈수 있는 곳은 삼성전자, LG전자, 하이닉스, 국내 팹리스 반도체 제조사, 반도체 장비 제조사, 네트워크 장치,장비 제조사, 자동차 전장 부품 제조사, 로봇 제조사 등에 진출할 수 있다.
  • 삼성전자, LG전자로 대표되는 전자 대기업들의 경우에는 임베디드 리눅스 프로그래머들의 연봉이나 대우가 제일 좋은 편이라고 보면 된다.
  • 현대차 계열사나 1차 벤더로 진출이 가능하다. 이들도 나름 높은 수준의 연봉을 받을 수 있다.
  • 전장 쪽은 약간의 차이는 있지만 경직되고 보수적인 기업 문화 때문에 프로그래머들의 적응이 어려울 수 있다.
  • 이쪽 분야는 여전히 기계적인 마인드로 무장되어 있는 윗사람들이 즐비하다. S/W 스러운 자유로운 프로그래머들은 뭔가 답답해 할수도…
  • 중견, 중소 규모의 제조 회사들에 대부분 진출이 가능하다.
  • 대기업 문이 좁은 편이라서 임베디드 리눅스 프로그래머들은 중견, 중소로 많이 진출하는 편이다.
  • 신입 연봉은 여전히 낮은 편에 속한다. 개발자 연봉 1억 시대가 열린다는 언론의 소식이 있지만, 이쪽에서는 남의 나라 얘기로 들릴 수 있다.
  • 대략 형성된 시세는 2천4백만원 ~ 3천만원 사이다.
  • 경력 10년이 넘어가면 연봉 5천만원 수준으로 점프가 가능하다. 물론 기업 혹은 사람마다 케바케이다.
  • 중견, 중소의 경우 경력이나 능력에 따라 다르지만 7천만원이 거의 한계일듯 싶다.
  • 하드웨어적인 요소를 다뤄야 하기 때문에 프로그래머라고 할지라도 몸을 쓰는 것을 각오해야 한다. H/W 엔지니어들과 부딪히는 경우가 많다.
  • 중소 제조회사의 경우에 근무 환경이 열악한 경우가 많다.
  • 업무 프로세스가 엉망인 회사가 있다. 하드웨어 문제를 디버깅하는데 프로그래머가 동원되는 경우가 허다하다.
  • 하드웨어적인 문제 때문에 무한 대기하다가 본의 아니게 야근을 하게 되는 경우가 있다.
  • 하드웨어가 준비가 안되어 있는데 급박한 일정을 강요하며 쪼는 경영진들이 존재한다. 프로그래머 입장에서는 어이가 없다.
  • 특히 리눅스쪽은 아직도 해당 지식이 전무한 중소기업들이 많기 때문에 하루~이틀이면 커널 패치, 드라이버 패치, 포팅 등이 뚝딱 되는줄 아는 꼰대들이 많다.
  • 테스트를 할때 테스트 장비가 충분히 지원이 되지 않는 경우가 많다. 특히 중소기업은 이 부분이 심각하다.
  • 규모가 작은 중소기업의 경우 검증팀(QA조직)이 없어서 프로그래머가 직접 개발, 검증을 해야 되는 경우가 있다. 프로그래머 입장에서는 짬뽕난다.
  • 규모가 작은 중소기업의 경우에는 개발, 검증, 테스트, 심지어 유지보수를 위해 출장을 마다하는 곳이 있다. 그러나 연봉은 적다는거…
  • 제조업으로 분류된 회사들이 많기 때문에 80년대 군대문화나 보수적인 조직문화를 가지고 있는 곳이 있다. 특히 임원진이나 부장급들이 꼰대들이 많다.(입만 털고 정작 일은 잘 안하고 못하는 꼰대들…)
  • 그럼에도 불구하고 사람은 항상 부족하다고 한다. 대기업 제외하고 임베디드 리눅스 프로그래머의 수요는 항상 발생한다.
  • 상대적으로 기업문화가 자유롭고 연봉 수준도 높은 외국계 기업 연구소 혹은 국내 지사(Mediatek 등은 한국 개발 인력을 채용하기도 한다.)에서 일하는 것도 괜찮은 방법이다. 물론 영어가 되어야 한다.

리눅스 프로그래머가 되려면?

  • 대학에서 컴퓨터 공학, 정보통신 공학, 전산학과, 전자공학과, 제어계측공학과 등을 전공하면 된다.
  • 대학에 따라서는 전공 과목에 “리눅스” 관련 과목이 개설되어 있는 경우도 있다. 이들 과목을 꼭 수강한다.
  • 학교 다닐때 끊임없이 리눅스를 다뤄보고 공부하고 직접 개발해본다.
  • 리눅스는 유료가 거의 없다. 모든 재료가 거의 공짜다! 널린게 오픈소스이고 문서도 많다.
  • 본인의 노트북이나 PC에 리눅스를 설치해서 사용한다. 요즘 리눅스는 유명 RPG 게임이나 금융 결제 용도가 아닌 이상 모든게 가능하다.
  • 임베디드 리눅스 프로그래머의 경우에는 오픈 하드웨어를 구입하여 직접 다뤄본다. 그리고 직접 프로젝트를 해본다.
  • 오픈 하드웨어 중 대표적인 하드웨어는 “라즈베리파이”이다. 코드도사의 문서를 검색해보면 라즈베리파이 관련 문서들이 있으니 참고할것.
  • 기타 오픈 하드웨어는 종류가 꽤 많다. 하단의 링크 참고
    * [[hardware:open_hw|Open Source Hardware]]
  • 6개월정도 되는 장기 리눅스 관련 교육을 받는다. 수료증을 가지고 있다면 리눅스 개발 관련 회사로 진출 가능성이 높다.
  • 비 전공자가 국비 교육을 받을 수 있으나 OS를 공부하고 개발을 하는 것은 아무래도 전공자가 유리한 편이다.
  • 그럼에도 비전공자라 할지라도 열심히 하면 충분히 가능하다.
  • 관련 자격증은 “리눅스 마스터”이다.
  • 리눅스 마스터는 1급, 2급 등이 있다.
  • 1급이 더 난이도가 있으며 네트워크 시스템 엔지니어나 리눅스 프로그래머를 생각한다면 따놓는 것도 괜찮다.

향후 전망은 어떤가?

  • IT 혹은 ICT 전체 시장을 봤을때 전망은 약간 엇갈리는 편이다.
  • 현재 IT 시장에서 필요로 하는 절대 다수의 인력은 주로 어플리케이션 Software 를 개발하는 프로그래머들의 수요가 많다.* Front-End
    * 웹(Web)
    * 안드로이드 앱(app), iOS 앱
    * Windows Application
    * Back-End
    * Server 개발
  • 그에 반해 임베디드 리눅스를 포함한 임베디드 소프트웨어 프로그래머들의 수요는 상대적으로 적다.
  • 전체를 100으로 봤을때 어플리케이션 쪽이 70~80 %, 나머지가 임베디드 프로그래머(Firmware, Linux 포함)
  • 주변의 임베디드 리눅스 프로그래머 들을 봤을때 30대 후반 이상의 나이든 프로그래머들이 많다.
  • 수요는 어느정도 있지만 신입 프로그래머들을 채용하기 어렵다. 신입 프로그래머들은 씨가 말랐다는 표현이 맞다.
  • 다소 보수적인 문화, 수직적인 지시, 끊이지 않는 일, 야근 등등 그동안 안좋은 이미지들의 복합작용에 의해 관련 전공자들이 임베디드 S/W 쪽을 기피하였다.((물론 한때 IT 프로그래머 자체를 기피하였다. 이공계 기피 현상이 한창일 떄가 있었다.))
  • 주로 제조업에 진출하다 보니 운신이 폭이 좁은 면도 있다.
  • 중국이나 대만에서 제공되는 값싼 칩과 손쉬운 개발 환경은 임베디드 리눅스 프로그래머들의 수요가 줄어들게 되는 계기가 되었다.
  • 스마트폰이 대세가 됨에 따라 많은 임베디드 프로그래머들이 일자리를 잃은 것도 사실이다.
  • 그렇다면 과연 미래 전망이 좋지 않은가?
    * 사람마다 의견은 갈린다. 임베디드 관련 업계는 이제 서서히 죽어간다는 의견이 있다.
    * 반면에 끊임없이 수요는 발생해서 필요로 한다는 의견도 있다.
    * 십수년 종사했지만 이직에 어려움은 없는 듯 하다. 그렇다고 해서 일자리가 안 불안한건 아니다.
    * 회사 매출이 줄어들거나 회사가 어려워지면 일자리가 불안해지는 것은 사실이다.
    * 리눅스 커널 포팅, 최적화, BSP 개발, Driver 개발 및 수정등의 일거리가 예전에 비해 확실히 줄어든 건 사실이다.
    * 스마트폰, 특히 안드로이드는 임베디드 리눅스 업계에 혜성처럼 등장해서 블랙홀 처럼 빨아들이는 역할을 하였다.
    * 이로 인해 관련 일을 하는 중소 규모 회사에 재직하는 프로그래머들이 많이 사라졌다.
    * 라즈베리파이 같은 오픈 하드웨어의 등장은 임베디드 리눅스 프로그래머에게 기회가 되기도 한다.
    * 여전히 임베디드 리눅스 기반의 시스템이 활용될 수 있다는 좋은 예이다.
    * 산업 전반에도 임베디드 시스템은 지속적으로 수요가 있는 것은 사실이다.
    * 다만 상대적으로 수요가 적을 뿐이다.
    * Back-End 프로그래머는 현재 시장이 추이를 봤을때 수요가 꽤 있는 편이다.
    * DB, API, 네트워크, 웹 서버를 개발하거나 유지보수를 하는 프로그래머이다.
    * Front-End 프로그래머보다 상대적으로 종사자는 적을 것으로 판단된다. 하지만 임베디드 리눅스 프로그래머보다는 수요는 많고 대우도 괜찮다고 볼 수 있다.
    * 최근에는 서버 개발시에 C, C++ 뿐만 아니라 파이썬, NodeJS 같이 다양한 언어로 서버 프로그래밍이 가능하다. 즉 유연하다는 뜻이 된다.

흥미나 재미는?

  • 리눅스 OS 자체가 매우 흥미로운 운영체제중 하나이다.
  • 리누스 토르발즈님이 인류에게 꽤나 멋진 도구를 선물한셈.
  • 거의 모든게 오픈소스이고 무료이다. 단 GPL, GNU 등의 라이선스에 따라야 한다.
  • OS의 내부인 커널 자체가 오픈소스이다. 누구나 커널 소스를 자유롭게 볼수 있고 패치하여 써도 된다.
  • 지금도 꾸준히 커널은 릴리즈가 되고 있다.
  • 리눅스 덕분에 오픈소스가 Software 시장의 대세가 된거라고 볼 수도 있다.
  • 토르발즈님이 리눅스 커널 소스 자체를 처음부터 오픈해 버렸다.
  • 이제 오픈소스는 Software 기술에서 매우 중요한 수단이다.
  • 안드로이드도 리눅스 커널을 사용하여 구동한다. 이는 매우 상징적인 의미를 가지고 있다.
  • 무궁무진한 오픈소스 덕분에 프로그래머들은 마치 황금어장에 가득찬 물고기들을 잘 낚기만 하면 된다.
  • 네트워크 서버 시장의 70~80퍼센트를 리눅스가 장악하고 있다고 해도 과언이 아니다.
  • 네트워크 기능으로는 리눅스를 따라갈 OS가 없다고 해도 과언이 아니다.
  • 실제로 각종 네트워크 장치/장비들에 리눅스가 사용된다. 우리가 흔히 가정에서 사용하는 유무선 공유기(Router)도 리눅스가 탑재되어 동작한다.
  • 해커들이 매우 좋아하는 OS이다.
  • 온갖 해킹 도구 및 재료들이 리눅스 기반의 오픈소스들이 많다.
  • 실제 해커들 치고 리눅스를 모르거나 다루지 않은 사람들은 거의 없다고 봐야 한다.
  • 직접 OS 자체(커널)를 커스텀 작업을 통해 자신만의 OS로 만들 수 있다. 이는 엄청난 메리트이다.
  • 여전히 Mac OS나 Windows 는 소스 공개가 되지 않고 있다.
  • 당신이 해커를 꿈꾼다면 리눅스는 필시 알아야 할 것이다.
  • 해킹 도구들을 사용할 수 있는 리눅스 배포판이 있다. Kali 리눅스 이다. [[https://www.kali.org/]
'코드도사(codedosa.com)'에는 쿠팡파트너스 등의 제휴링크가 포함되어 있으며 수수료를 제공받을 수 있습니다.