※ 여기서 잠깐, 일반인을 위한 간단한 약어 정리
IT = 정보 기술 (인터넷 기술 아님 주의)
CS = 컴퓨터 과학
EE = 전자 공학
QA = 품질 보증
AI = 인공 지능
ML = 기계 학습
DB = 데이터베이스
UI/UX = 사용자 인터페이스/사용자 경험
Dev = 개발
Ops = 운영
HPC = 고성능 컴퓨팅
PM = 프로젝트 매니저
GPGPU = 그래픽 카드를 이용하여 과학 시뮬레이션, 수치 해석, 머신러닝 학습 등을 하는 것
IT 서비스 계열
초창기 IT 직군 중 개발에 관련된 직무들입니다. 이쪽 중소 기업은 코딩 노예의 본진입니다. 일단 분류 자체가 전문 기술이나 학문 전공이 아니라 회사의 업종, 성향에 따라 나뉘어집니다.
1. SI (system integration) -- 시스템 통합
쉽게 말해 비IT 회사나 학교/병원/정부기관 등에서 사람이 수기로 하던 행정 업무를 자동화하는 업무입니다.
예를 들어 "새학기 시간표를 자동으로 짜주는 프로그램을 만들어주세요", "옷을 파는 홈쇼핑 웹사이트를 만들어주세요", "맥도날드 키오스크를 작동시키는 프로그램을 만들어주세요" 같은 프로젝트를 수주받아서, 해당 업무가 가능한 기술을 가진 개발자들로 팀을 꾸려 프로젝트를 진행하는 일을 합니다.
쇼핑몰 업계라고 하면, 쇼핑몰 업체들이 각자 사이트, DB, 회원 정보, 결제 등등을 담당하는 인력을 다 채용하는 대신에 이에 특화된 관련 SI/SM 업체에 외주를 주는 식입니다. 코인 거래소도 직접 거래소 시스템을 개발/운영하는 경우도 있지만, 아주 큰 기업이 아닌 이상은 블록체인 SI 기업에 외주를 맡기는 경우가 많습니다.
프로젝트의 납품 기한이 정해져 있고, 비용을 받아 진행하다보니 가능한 한 적은 개발자로 짧은 시간에 굴리는 게 이득인 구조가 된다는 점, 프로젝트의 성격을 본사에서 마음대로 결정할 수 없다는 점 등 때문에 소규모 SI 업체에서는 돈을 벌기도, 성장하기도, 건강하기도 어려운 경우가 생기기 쉽습니다.
SI라고 해서 다 옛날 기업인 것은 아닙니다. 스타트업인데 자체적으로 서비스를 운영하는 게 아니면 보통 SI입니다. 6개월 국비 지원을 받아 공부하거나 하면 SI업체를 많이 소개받게 되는데요, 함정카드가 더 많기 때문에 조심해야 합니다. 함정카드가 아니더라도, 회사 특성 상 자체 플랫폼에 기반한 사업을 하는 것이 아니기 때문에, 처음으로 시작하는 연봉이나 기술 스택 등에 불이익이 있을 수도 있습니다.
위는 중소기업 이야기이고, 대기업 계열사의 경우 삼성SDS 같은 큰 SI/SM 업체를 꾸려 내부에서 프로젝트를 하기 때문에 같은 SI라고 해도 연봉도 높고 상대적으로 복지도 좋습니다. 일은 상대적으로 재미없다고 듣기는 했습니다만 하기 나름이겠죠? 프로젝트라고 해도 그 성격이 중소기업과 다른 경우도 많습니다. 제조업쪽인 경우 기계/전자/화공 등의 도메인과 관련된 프로그래밍을 많이 하게 되기 때문에 독특한 매력이 있습니다.
SI 에서 경우에 따라서는 프리랜서로 일하는 사람도 있습니다. 회사에서 보험료, 식대 등으로 떼가는 금액이 없기 때문에 + 여러 프로젝트를 동시에 받아 일할 수 있기 때문에 돈을 더 많이 벌기도 합니다. 물론 실력이 좋아야겠죠? 그리고 퇴직연금/건강보험 지원이나 세금 감면 혜택 등도 받기 어렵기 때문에, 항상 상위호환은 아니고 선택 사항입니다.
2. SM (system maintenance) -- 시스템 유지보수
SI를 보내 완성된 프로젝트를 회사 내부에서 업그레이드, 버그 수정 등을 하는 업무입니다. SI와 관련이 깊기 때문에 SI/SM을 함께 하는 경우도 많습니다. 업무 특성 상 일을 잘해도 회사가 보기에는 본전 치기로 보인다는 단점이 있습니다.
중소기업 신입은 2천 중반 ~ 3천 초반 정도 받게 됩니다, 계열사의 SI/SM 업체는 IT계열보다 비IT계열의 인사 체계에 가깝기 때문에 그냥 회사원과 비슷하다고 보면 됩니다. 호봉제인 곳도 있습니다. 연봉대는 5년차 기준 4천대, 5천대, 6천대, 7천대로 급간이 있고, 연봉 인상률이 안정적인 편(으로 들음)입니다. 우리FIS, 삼성SDS, 한국정보통신 등의 회사에서 급여를 가장 많이 주고, 그 다음으로 현대오토에버, LG CNS, 농협정보, SK C&C, 미라콤 등이 추격하는 걸로 압니다.
3. 솔루션 개발
쉽게 말해 더블 클릭하면 실행되는 프로그램을 만드는 업무입니다.
이 직군도 사실 구분이 굉장히 애매한데요, 지금처럼 웹/모바일 등이 보편화되지 않았을 때 이렇게 많이 불렀고, SI/SM처럼 다른 회사의 프로젝트를 수주받는 것이 아니라 자기 회사만의 프로그램을 만들어 파는 회사의 개발자라고 생각하시면 됩니다.
4. 금융 IT
쉽게 말해 은행 내부의 전산직입니다. 금공이라고도 부르는 한은, 금감원, 코스콤 등에도 있습니다. 그외에도 카드사, 보험사, 신용평가사 등등 다양한 관련 분야를 포함합니다. 내부적으로 계정계, 채널계, 정보계, 보안 등등 다양한 계열로 나누어져 있고, 각각의 업무에 필요한 기술이나 대우가 다른 편입니다.
일반적인 프로그램과는 다른 요구사항이 많기 때문에 금융IT개발 경력은 다른 개발 경력과 구분합니다. 업무 분위기나 급여 정책도 다른 IT기업보다 은행권에 더 가깝습니다. 들어가는 데 면접보는 것도 인적성에 가깝습니다.
요새는 다른 핀테크 업무나, 토스(비바리퍼블리카), 카카오페이, 카카오뱅크 등 기존의 금융IT 개발과 더불어 신기술을 요구하는 곳이 많습니다. 이런 곳은 업무 분위기가 은행권보다는 그냥 IT기업군에 가깝습니다. 돈도 많이 줍니다. 예를 들어 토스는 어느 정도 경력 쌓고 들어가면 바로 억대 연봉자가 됩니다. 물론 금융쪽은 그냥 돈을 많이 줍니다.
Game 계열
게임은 굉장히 독특한 소프트웨어입니다. 게임 개발은 결코 다른 테크 개발보다 쉽지 않습니다. 어려우면 어렵죠. 하지만 업무 강도가 높고, 급여가 일에 비해 굉장히 짭니다. 금액 자체가 적은 것은 아닌데, 하는 일에 비해서는 상대적으로 모자랍니다. 돈보다는 개발자들의 게임에 대한 열정으로 굴러가고 있습니다.
게임 개발은 수학(산수)이나 최적화 기법이 가장 널리 직접적으로 활용되는 분야입니다. 또한 여러 CS 기반 지식을 게임이라는 특수한 상황에 적용하는 업무를 하게 됩니다. 그래서 공부를 많이 해야하고, 경력도 많이 쌓아야 합니다. 무엇보다 성공적인 게임(...)을 많이 거쳐오는 게 좋기 때문에 운도 좋아야 합니다.
1. 게임 클라이언트 개발자
게임 클라이언트는 쉽게 말해 여러분의 데스크탑에서 실행되는 부분을 말합니다. 전통적으로 Windows에서 C++, C# 등을 이용해서 데스크탑 클라이언트 개발을 해왔고, 요새는 안드로이드, iOS 등 모바일 플랫폼에서의 게임 앱 개발도 많이 합니다.
데스크탑 클라이언트에는 다이렉트X, OpenGL 등 그래픽스 기술이 필요합니다. 자연히 라이브러리/OS 호환성이나 GPU 가속 기술 등도 잘 알아야 합니다. 코드만 알아서는 안 되는 것이죠.
모바일 클라이언트는 데스크탑보다 모자란 계산능력/용량을 최적화하고, 통신 프로토콜과 통신 과정에서의 보안 등의 이슈를 해결해야 합니다. 결국 하드웨어나 미들웨어 수준의 내용도 잘 알아야 합니다.
2. 게임 서버 개발자
LoL 같은 팀 대전 게임, 메이플 같은 RPG 게임이나 대부분의 모바일 게임에는 서버가 있습니다. 인터넷으로 여러 사용자들이 함께 실시간으로 게임을 해야 하기 때문입니다. 그런데 단순히 로그인/로그아웃이나 아이템 획득 목록을 저장하는 것만 서버의 기능이 아닙니다. 게임 서버에는 다양한 문제가 발생하고, 그런 문제를 해결하는 것도 서버 개발자의 일입니다.
실시간으로 대전하는 FPS 게임의 예) 사용자들의 클라이언트에서 보내는 정보가 서버에 모아지고, 서버에서도 클라이언트로 계속 정보를 보내주는데요, 글로벌 서버 수준이 되면 빛의 속도가 너무 느려서 지연이 생기기 마련입니다. 이런 문제를 온갖 테크닉과 최적화로 해결해야 합니다!
3. 엔진 시스템 엔지니어
게임 개발을 위해 사용하는 다양한 엔진이 있는데 (ex. 물리 엔진) 수학/물리, 전공 지식을 활용해 이런 엔진을 개발하는 업무입니다. 제가 아는 사람 중에는 없어서 자세한 것은 잘 모르겠습니다.
게임 중소기업은 추천하는 경우가 거의 없습니다. 유명한 큰 기업은 구로의 등대 넷마블, 판교의 3N(NHN, NEXON, NCSOFT), 크래프톤(배그), 스마일게이트 정도인데 회사마다 내부 사정이 이것저것 다릅니다. SKP 카르텔이 쎈 곳도 있습니다. 극히 최근에는 포괄임금제 제재를 받아 연봉 인상률에 타격이 큰 것으로 알고 있습니다.
이유는 안 찾아봐서 잘 모르는데, 게임 쪽에 몸담고 계신 분들 중 잘하시는 분들이 독일이나 미국 같은 외국계에 많이 계시더라구요. 게임에 관심있는 분들은 해외 취업도 같이 고려해보시는 게 좋겠습니다. 게임 덕후들은 콘솔/패키지/인디 게임 류를 좋아하는 경우도 많은데 우리나라는 아무래도 MMORPG 개발에 비교우위가 있어서인지 다른 장르는 많이 약하더라구요.
Device 계열
노트북, 데스크탑 컴퓨터, 서버실의 서버 같은 일반적인 컴퓨터들이 아니라 모바일 기기, 센서 기기, 프린터, 가전이나 자동차 등에 탑재된 작은 컴퓨터(스마트 뭐시기), 드론 등등 공간/동력 등 환경의 제약이 큰 곳에 내장된 소형 임베디드 장비들을 다루는 업무입니다. 특수한 하드웨어를 잘 알아야 되는 경우가 잦습니다.
1. 모바일 앱 개발자
모바일 게임 클라이언트 개발과 비슷해 보이지만, 업계가 판이하게 달라 분리했습니다.
여러분의 스마트폰에 있는 다양한 어플을 개발하는 일을 합니다. 단순히 어플의 기능을 구현하는 경우도 있고,
본래 데스크탑에서나 되던 걸 최적화를 통해 모바일에 이식하는 일도 있다고 보면 됩니다.
안드로이드는 JAVA나 Kotlin 같은 JVM 계열 언어를 이용하여 많이 개발합니다. 한편 iOS는 Swift나 Objective-C 같은 전용 언어를 이용해야 합니다. 또한, 서버(백엔드)와 통신해야 하기 때문에 통신/네트워크 쪽도 잘 알아야 합니다~
2. 임베디드 엔지니어
임베디드 장비에서 구동되는 시스템/응용 소프트웨어를 개발하는 업무입니다. 기존의 멍청한 장비들은 하드웨어 추상화가 덜 되어, 어셈블리나 비슷한 수준의 C로 코딩해야 되고 하드웨어에 대해 (너무) 잘 알아야 해서 전자과의 분야라고 생각되었으나, 요새는 점차 하드웨어 의존도가 낮아져 컴공에서 많이 진입합니다. 드론 제어 같은 것들도 하드웨어를 넘어가면 이쪽이라고 보면 됩니다.
같은 모바일 디바이스를 다루더라도, 모바일 앱을 개발하는 것과 모바일 시스템 소프트웨어, 모바일 OS를 개발하는 것은 전혀 다릅니다! 누가 삼전에서 모바일 관련 일을 한다고 하면 위에 소개한 모바일 앱 개발자보다는 임베디드 엔지니어에 가깝다고 보면 됩니다.
예전에는 유비쿼터스라는 마케팅 용어를 만들어 뜨려고 했으나 잊혀졌고, 몇 년 전에는 스마트라는 마케팅 용어를 만들었으나 용어가 너무 남용되서 이득을 못봤을거고, 최근에는 IoT라는 마케팅 용어를 만들어 떡상하려고 노력하고 있지만 결과는 잘 모르겠습니다. 대충 임베디드 기기 사이에 네트워크 레이어를 추가하는 게 IoT라고 보면 됩니다. 요새는 임베디드 기기에서 인공지능을 심으려는 노력을 하고 있습니다.
3. 펌웨어 엔지니어
BIOS나 각종 스마트 가전 제품(TV 등)에 들어가는 펌웨어를 다루는 업무입니다. 사용자가 그 프로그램을 써서 뭘 할 때 필요한 거라기보다는 전자기기가 기본적으로 동작을 하도록 하는데 필요한 걸 만든다고 보면 됩니다.
임베디드 엔지니어와 펌웨어 엔지니어가 엄청 막 구분되는 건 아닙니다만, 펌웨어는 일단 쉽게 교체할 수 있는 소프트웨어가 아니라, 특정 하드웨어에 박혀있어서 전원을 킬 때 시작된다던지 항상 돌아간다던지 하는 것들입니다. 근데 요새는 별로 Firm 하지는 않다네요 플래시메모리에 넣으면 되어서(...)
Web 계열
웹은 현재 그냥 개발자라고 하면 웹 개발자를 의미한다고봐도 될 정도로 뜬 분야입니다. 공급도 가장 많고, 수요도 가장 많으며, IT기업이든 비IT기업이든 모든 회사에서 필요로 합니다. 예전에는 SI업체에서 수주를 받아 사이트를 만들었다고 한다면, 요새는 각 회사에서 웹 개발 팀을 따로 두고 있습니다.
지금 가장 빠르게 변화하고 있기 때문에 개발자가 계속해서 공부해야한다는 인식을 만들어낸 분야입니다. 구글, 페이스북, 아마존, 등등 다양한 글로벌 IT 공룡 기업이 뭘 하는 지 보면 결국은 웹을 기반으로 한 플랫폼입니다. 우리나라에서 새로 대기업급에 진입한 네이버/라인과 찐 대기업인 카카오도 마찬가지이고, 급성장한 스타트업인 토스(비바리퍼블리카), 배민(배달의민족), 쿠팡 등등 모두 웹/앱 플랫폼을 기반으로 하고 있습니다.
1. 프론트엔드 엔지니어
여러분이 파이어폭스, 크롬, 사파리로 웹사이트에 접속하면 나오는 페이지를 만듭니다. 정확하게는 그 페이지를 통해 사용자와 서버가 상호작용하는 창구를 만듭니다.
※ 참고로 사이트를 기획하고 디자인하는 업무는 UI/UX 디자이너라고 따로 있습니다.
홈페이지 만드는 그런 거는 쉬운 거 아닌가 하겠지만, 여러분의 홈페이지는 한 명만 들어가서 그렇습니다. 수만 명이 들어가서 온갖 이상한 방법으로 버튼을 눌러 트래픽을 발생시키는 사이트를 회사의 별 희한한 요구사항 아래에서 계속 정상적으로 돌아가게 해야하는 일입니다. 사이트가 정지하면 회사 입장에서 손해가 엄청나게 크겠죠?
기본적으로 HTML CSS JS를 스타트로 Angular/React/Vue 등 다양한 JS 프레임워크나 JAVA spring 프레임워크를 다룹니다. 특히 우리나라는 잘못 쌓아올린 역사 때문에 JAVA spring 갈라파고스라고 불릴 정도로 많이 씁니다.
전자정부 표준프레임워크
라는 끔찍한(?) 것이 있기 때문입니다.
그 외에도 그냥 인터넷과 관련된 거의 모든 것을 다 알아야 하며, 계속해서 웹의 환경이 변화하기 때문에 새로이 공부해야 하는 게 많습니다. 지금은 대충 5년 정도마다 격변이 일어나는 것 같네요.
2. 백엔드 엔지니어
기존에는 그냥 서버 개발자라고 불리던 직군인데 이름을 힙하게 바꾸었습니다. 힙함과 갬성은 신세대 개발자의 기본 덕목입니다. 대부분이 웹 서버이기 때문에 Web 계열에 속해 있지만, 딱히 그럴 필요는 없습니다.
서버 개발이라고 해서 직접 하드웨어 컴퓨터를 만들거나 하는 것은 아닙니다. 웹 프론트엔드 엔지니어나 모바일 앱 개발자가 사용자에게 보이는 부분을 만든다면, 백엔드는 사용자에게 보이지 않는 모든 것을 만드는 직군이라고 보면 됩니다.
도메인에 필요한 로직, API 서버, 각종 데이터베이스, 대용량 데이터 처리, 정보보안, 통신, 서버 가상화 등 다양하고 넓은 분야를 기반으로 하여 응용 소프트웨어를 개발합니다. 추천 기능, 검색 기능, 길찾기 기능 같은 웹 서비스의 기능들이 바로 백엔드 엔지니어가 구현하는 것입니다.
또한 서버가 뱉어주는 로그를 정리한다던지, 어뷰징 유저를 탐지한다던지 하는 작업도 합니다. 대부분의 보안 솔루션 개발도 역시 넓게 보면 백엔드 개발에 포함된다고 볼 수 있을 정도로 업무/분야 경계가 모호하고, 사람마다 기술 스택도 많이 달라 표준화하기는 어렵습니다. 같은 백엔드 엔지니어라도 이 회사에서는 핵심 인력인데 저 회사에서는 그냥 신입일 수도 있습니다.
3. 풀스택 개발자
혼자서 프론트엔드와 백엔드, 그외의 기타 업무를 혼자 처리하는 업무를 합니다. 뭔가 굉장한 사람처럼 보이지만 실제로 다 잘하기보다는 그냥 이것저것 조금씩 하는 경우가 대부분입니다. 외부로 서비스하는 핵심 프로젝트가 아니라, 내부에서 사용할 툴을 빠르게 개발한다던지 하는 백오피스 업무에 적합한 직무라고 할 수 있습니다.
하지만 스타트업처럼 사람이 귀하면 그냥 메인 프로젝트의 프론트엔드와 백엔드를 다 하기도 합니다. 이럴 땐 풀스택이라는 게 개발자를 싸게 굴리기 위해 만들어낸 용어가 아닌가 하는 감도 없지 않습니다. 둘 다 하면 당연히 돈을 두 배로 줘야 되는데 그렇지는 않습니다. 자꾸 이렇게 다 해주니까 코딩 노예라는 소리를 듣지
banhanul.tistory.com/8?category=849956
'인공지능 사람지능' 카테고리의 다른 글
일자리수요로봤을때 웹 백엔드 강세 (0) | 2021.04.29 |
---|---|
개발개발 (0) | 2021.04.29 |
리눅스 마스터 2급 실기 정리자료 + 시험일정 모음 (0) | 2021.04.28 |
시계오프너 잘못삼ㅋ 엉엉ㅜ (0) | 2021.04.28 |
바쁜 와중에 더 재밌는 구경 (0) | 2021.04.25 |