소프트웨어 개발자 직군을 구분하는 기준
소프트웨어 개발자 직군을 구분하는 기준에 대해 알아보자.
1. 플랫폼 측면
1-1. 윈도우(Windows) 소프트웨어 개발자
윈도우 환경에서의 실행 및 데이터 처리를 하는 소프트웨어 개발자이다.
익혀야 할 기술들은 아래와 같다.
- 화면 및 데이터 처리: C# Winform, C# WPF, JAVA SWING, Win32API, Delphi, Visual Basic, Python QT GUI, Power Builder
- RDBMS: Oracle, MSSQL, MariaDB
- Grid Component: Chart FX, DevExpress, C1 Component
1-2. 웹(Web) 소프트웨어 개발자
웹 환경에서의 실행 및 데이터 처리를 하는 소프트웨어 개발자이다.
익혀야 할 기술들은 아래와 같다.
- Front-End(Client) 언어(화면 및 데이터 처리): HTML, CSS, JavaScript, JSON(JavaScript Object Notation), AJAX(Asynchronous JavaScript And XML)
- Front-End(Client) Library or Framework: React, Vue, Angular, jQuery, Semantic-UI
- Back-End(Server) 언어: JSP/Servlet, PHP, ASP.NET(C#), Python(Django)
- Back-End(Server) Library or Framework: Express.js(JavaScript), Django(Python), Spring(Java), Laravel(PHP), Rails(Ruby)
- 웹 서버(Web Server): IIS(Internet Information Services), Apache Tomcat, Apache
- RDBMS: Oracle, MSSQL, MariaDB
- Grid Component: Chart FX, DevExpress, ComponentOne
1-3. 앱(App) 소프트웨어 개발자
모바일 앱 환경에서의 실행 및 데이터 처리를 하는 소프트웨어 개발자이다.
익혀야 할 기술들은 아래와 같다.
- Android: Java, Kotlin(코틀린)
- 2개 중에 1개만 하면 된다.
- iOS: Objective-C(오브젝티브-C), Swift(스위프트)
- 2개 중에 1개만 하면 된다.
- 맥(Mac)이 있어야 개발 환경을 구축 할 수 있다.
1-4. 시스템 소프트웨어(임베디드) 개발자
IoT 환경(소형 기계, 센서 등)에서의 실행 및 데이터 처리를 하는 소프트웨어 개발자이다. 하드웨어 제어, 운영체제, 소량 네트워크 기능 등을 구현한다.
익혀야 할 기술들은 아래와 같다.
- 윈도우 화면 및 데이터 처리: Win32API, Visual C++, .NET, Delphi, C++ QT
- Console 화면 및 데이터 처리: Assembly Language, C, C++
1-5. 게임 소프트웨어 개발자
게임 환경에서의 실행 및 데이터 처리를 하는 소프트웨어 개발자이다.
익혀야 할 기술들은 아래와 같다.
- 유니티(UNITY) 환경: C#, 유니티 엔진
- 콘솔(게임기) 환경: WIN32API, DirectX 프로그래밍, Open GL
유니티 엔진이 나오기 전까지는 순수 상업용 게임을 개발하려면 WIN32API, Direct X 프로그래밍, Open GL 프로그래밍을 했어야 했다.
유니티 엔진 이후로는 C#과 유니티 엔진 이용하여 게임을 개발하면 된다. 하지만 일반 게임기(콘솔 게임기) 같은 게임을 개발하려면 WIN32API 언어를 꼭 공부해야 한다.
2. 업무환경 측면
2-1. 네트워크 소프트웨어 개발자
네트워크 환경에서의 실행 및 데이터 처리를 하는 소프트웨어 개발자이다. 순수 네트워크 기능만 개발한다.
익혀야 할 기술들은 아래와 같다.
- 윈도우 화면 및 데이터 처리: C# TCP/IP Socket, C# Serial Bus, Java Socket, Delphi Socket, Win32API, WinSock, Visual C++, .NET, WinSock
- Console 화면 및 데이터 처리: C Socket, C++ Socket, C# TCP/IP Socket, C# Serial Bus, Java Socket
- 솔루션: Zero MQ(Message Queue), IBM MQ(Message Queue), Apache Active MQ(Message Queue), Rabbit MQ(Message Queue)
2-2. 데이터베이스 소프트웨어 개발자
데이터베이스 환경에서의 실행 및 데이터 처리를 하는 소프트웨어 개발자이다.
익혀야 할 기술들은 아래와 같다.
- 윈도우 화면 및 데이터 처리: Power Builder, C# Winform, C# WPF, C# ADO.NET 기능 사용, JAVA SWING에 JDBC 기능 사용, Delphi DataBase Component
- RDBMS: Oracle, MSSQL, MariaDB
- BigData: Python, R, MongoDB
2-3. 솔루션(제품) 소프트웨어 개발자
여러 시스템 환경에서 문제 해결 상황을 찾은 후 제품화하여 데이터 처리를 하는 소프트웨어 개발자이다. 실행 환경이라는 제약이 없이 여러가지의 분야에 관련된 언어를 공부해야 한다. 다른 솔루션(제품) 소프트웨어를 개발하려면 기업 업무를 처리하는 ERP 솔루션 개발, 제조 생산 업무를 처리는 MES 솔루션 개발, 기타 V3, 알집, 알약, 엑셀, 파워포인트 같은 솔루션을 개발할 수 있다.
2-4. 공통업무 소프트웨어 개발자
고액 연봉을 받는 소프트웨어 개발자 직군 중 하나이다. 여러 가지 모듈이나 데이터 흐름의 공통적인 부분을 찾아 체계화하는 개발 업무를 맡는다. 개발 경험도 많아야 하고, 많은 업무를 알아야 하고, 그에 관련된 IT지식과 코딩(Coding) 스킬도 겸비해야 한다. 그렇게 때문에 고액 연봉을 받는 것.
2-5. AI(인공지능) 소프트웨어 개발자
고액 연봉을 받는 소프트웨어 개발자 직군 중 하나. 하지만 공부할게 한두 가지가 아니다.
익혀야 할 기술들은 아래와 같다.
- 인공지능 기본이론: Deep Learning(심층 학습), Machine Learning(기계 학습)
- 컴퓨터언어: Python Basic, Python Library
- 수학: 통계학, 선형대수학
- 인공지능 Library: 파이토치(PyTorch), 텐서플로(Tensorflow), 케라스(Keras)
- 컴퓨터 공학 지식: 소프트웨어 공학, 알고리즘, 자료구조
2-6. 블록체인(Block Chain) 개발자
금융 보안의 세부 분야이며, 블록체인(Block Chain) 기술을 활용한 소프트웨어를 설계하는 개발자이다. 블록체인(Block Chain) 기술을 활용하여 가상 암호 화폐(비트코인(Bitcoin), 이더리움(Ethereum) 등을 개발하기도 하며, 실생활에 사용할 수 있도록 대중화 하는 일도 한다.
익혀야 할 기술들은 아래와 같다.
- 컴퓨터 관련 지식: 프로그래밍 언어, 네트워크, 데이터베이스, 서버, 디지털보안, 자료구조, 알고리즘 등
- 프로그래밍 언어: C++, GO, JavaScript, Solidity
- 암호화 지식
- 대칭키(비공개키): DES, 3DES, AES, SEED, HIGHT, IDEA, RC5, ARIA
- 비대칭키(공개키): Diffie-Hellman 키 교환, DSS, ElGamal, ECC, RSA
- 금융경제의 흐름과 동향 파악을 하는 역량
2-7. SAP ABAP 소프트웨어 개발자
개발자 중에서 최고 연봉을 받는 직군이 아닐까 싶다. 3년 차 프리랜서 개발자가 월 천 이상을 번다고 한다. 이는 그만큼 들어기가 힘들고 진입장벽이 높다는 뜻.
독일 회사인 SAP에서 개발한 ERP 솔루션이 있다. 그것을 SAP ERP라고 부른다. ERP 솔루션이다 보니 업무 환경에 맞게 커스터마이징(Customizing) 해야 한다. 커스터마이징을 하려면 언어가 필요한데, 그 언어가 바로 ABAP(Advanced Business Application Programming)이다. 그래서 ABAP 개발자라고 부른다.
익혀야 할 기술들은 아래와 같다.
- Netweaver를 설치해서 공부.
- SAP 교육 센터에서 700만원이 넘는 교육 이수.
- SAP ABAP Certification 취득.
- 필요시 각 모듈(FI, PP, MM등) Certification 취득.
Reference
- 코딩 관련 유튜브 채널의 어느 한 댓글 내용 참고.