본문 바로가기
Ein News

개발자는 누구인가? (개발자 11가지 유형)

by Ein’s 개발일기 2023. 1. 18.

  브라우저의 웹 화면이나, 모바일의 앱 화면처럼 "개발자"라고 하면, "소프트웨어"를 생각합니다. 그러나 컴퓨터와 코드에 초점을 맞추더라도 개발자 유형을 설명하는 데는 많은 여지가 있습니다.

 

  "JavaScript 개발자" 또는 "Python 개발자"와 같이 그들이 사용하는 프로그래밍 언어에 따라 개발자를 분류할 수 있지만, 개발자가 무엇을 만들고 있는지, 자신의 개발 중 역할이 무엇인지는 알 수 없습니다. 또한 개발자가 여러 언어를 알고 있는 것이 일반적입니다. 따라서, 개발자 유형은 만드는 서비스와 개발 작업 역할 중심으로 유형을 분류하는 게 좀 더 자연스럽습니다.

 

개발자란?

  우리는 소프트웨어가 개발자 스토리의 핵심이라는 사실을 인지합니다. 그것은 다양한 형태를 취할 수 있습니다. Microsoft의 SQL Server 데이터베이스 소프트웨어 뒤에 있는 프로그래밍 팀의 구성원은 개발자입니다. 이러한 데이터베이스에 저장된 정보로 작업하기 위해 구조적 쿼리 언어를 사용하는 사람도 개발자가 될 수 있습니다. 한 개발자는 회로 기판에 내장된 컴퓨터 운영 체제를 만듭니다. 또 다른 사람은 여러 다른 소프트웨어 프로그램 간의 상호 작용을 자동화하기 위해 Bash 스크립트를 작성합니다. 이러한 모든 유형의 개발자는 코드로 무언가를 구축했습니다.

 

 

11가지 개발자 유형

  여기서는 모두 11가지 유형의 개발자를 검토할 것입니다.

  1. 프런트엔드 웹 개발자 (Frontend Web Developer)
  2. 백엔드 웹 개발자 (Backend Web Developer)
  3. 풀스택 웹 개발자 (Full-Stack Web Developer)
  4. 모바일 앱 개발자 (Mobile App Developer)
  5. 데스크톱 소프트웨어 개발자 (Desktop Software Developer)
  6. 데이터 사이언티스트(Data Scientist)
  7. 인공지능/머신러닝 개발자 (Artificial Intelligence/Machine Learning Developer)
  8. 게임 개발자 (Game Developer)
  9. 운영 체제 개발자 (Operating Systems Developer)
  10. DevOps 엔지니어 (DevOps Engineer)
  11. 보안 개발자(Security Developer)

1. 프런트엔드 웹 개발자 (Frontend Web Developer)

  프런트엔드 개발자는 웹사이트의 사용자 인터페이스에 중점을 둡니다. HTML 및 CSS 기술을 사용하여 사이트의 모양과 느낌을 제어하고 종종 모바일 및 데스크톱 브라우저와 같은 다양한 반응형 화면을 제공합니다.

  프런트엔드 개발자는 일반적으로 JavaScript를 사용하여 사용자를 위한 반응형 경험을 만듭니다. 이러한 개발자는 동적 클라이언트 애플리케이션의 생성 속도를 높일 수 있는 JavaScript 라이브러리 및 프레임워크에 익숙한 경우가 많습니다.

  프런트엔드 개발자는 웹사이트 성능 향상, 이미지 최적화, 브라우저에서 JavaScript 및 markup 로드 시간을 단축하기 위해 노력합니다. 대부분의 프런트엔드 개발자는 검색 엔진 최적화(SEO) 및 웹사이트 접근성에도 중점을 둡니다.

 

프런트엔드 개발자는 웹 디자이너?

  많은 프런트엔드 개발자는 (디자이너이기도 하지만) "프런트엔드" 업무에 더 중점을 둡니다. 마찬가지로 많은 웹 디자이너는 HTML과 CSS에 정통하며 자신을 개발자라고 생각하지 않습니다. 많은 조직에서 디자인은 개발팀과 분리해 디자인팀을 별도로 구성합니다. 누가 디자인을 생성하든 웹 페이지에 생명을 불어넣고, 애플리케이션에 사용자 경험을 작동하게 하는 것은 프런트엔드 개발자의 몫입니다.

 

2. 백엔드 웹 개발자 (Backend Web Developer)

  백엔드 개발자는 일반적으로 웹 서버 소프트웨어, 데이터베이스 및 실행되는 운영 체제에 대한 전문 지식이 필요한 서버 측 애플리케이션을 구축합니다. 가령 Linux 운영 체제, Nginx 또는 Apache 웹 서버, MariaDB 또는 PostgreSQL 데이터베이스와 같은 기술을 필요로 합니다.

  백엔드와 프런트엔드 개발 사이의 경계는 HTML을 프런트 엔드의 브라우저로 보내는 하나의 서버 측 스크립팅 언어인 PHP, jsp와 같은 기술로 인해 흐려집니다.

  WordPress 및 기타 인기 있는 CMS와 Laravel과 같은 개발 프레임워크를 지원하는 PHP는 웹에서 가장 일반적인 서버 측 스크립팅 언어입니다. 여전히 백엔드 개발자는 C# 및 Microsoft의. NET 프레임워크, Python, Java, Ruby on Rails 또는 Node.js와 같은 기술을 사용할 수 있습니다.

  백엔드 개발자는 웹 사이트의 클라이언트 쪽을 관리하는 팀원과 협력하여 작업할 수 있습니다. 서버 측 개발에는 양측의 긴밀한 결합이 덜 필요한 프런트엔드 서비스를 지원하는 API (Application Programming Interfaces) 생성도 포함될 수 있습니다.

 

3. 풀스택 웹 개발자 (Full-Stack Web Developer)

  풀 스택 개발자는 프런트엔드 및 백엔드 개발자의 작업을 모두 수행할 수 있습니다. (하지만, 이것이 일반적인 풀스택 개발자의 급여가 다른 개발자의 두 배라는 의미는 아닙니다.)

  2022년 StackOverflow에서 개발자를 대상으로 실시한 설문조사에 따르면 응답자에게 자신의 역할을 설명하라는 요청을 받았을 때 "풀스택 개발자"가 가장 많이 응답했다는 것이 흥미롭습니다(거의 47%).

Top types of developers types in 2022. (출처:  StackOverflow )

4. 모바일 앱 개발자 (Mobile App Developer)

  "응용 프로그램"이라는 용어는 소프트웨어 개발의 많은 부분을 포함합니다. 데스크톱에서 웹에 이르기까지 애플리케이션은 최종 사용자를 위해 작업을 수행하는 도구입니다.

  "앱"으로 축약하면 스마트폰, 태블릿 및 기타 모바일 장치에서 실행되는 애플리케이션을 먼저 생각하는 경향이 있습니다. 그리고 모바일 앱을 만들려면 전문적인 유형의 개발자가 필요합니다.

  모바일 앱 개발자는 소프트웨어 개발 키트(SDK) 및 Apple의 iOS 또는 Google의 Android와 같은 기기 운영 체제용 애플리케이션을 구축하는 데 사용되는 관련 도구에 익숙합니다.

  Swift는 iOS의 기본 프로그래밍 언어이며 Java와 Kotlin은 Android에서 가장 많이 사용됩니다. 또한 Apache CordovaNativeScript와 같은 대규모 앱 구축 도구 에코시스템은 웹 친화적인 JavaScript, HTML 및 CSS를 기반으로 하는 코드를 기본 모바일 소프트웨어로 변환할 수 있습니다.

 

5. 데스크톱 소프트웨어 개발자 (Desktop Software Developer)

  데스크톱 개발자는 개인용 컴퓨터와 워크스테이션에서 실행되는 소프트웨어 응용 프로그램을 만듭니다.

  개발자는 일반적으로 특정 운영 체제용 데스크톱 애플리케이션을 구축하므로 이 분야의 활동은 Microsoft의 Windows, Apple의 macOS, Google의 Chrome OS 및 오픈 소스 운영 체제 Linux와 같은 플랫폼의 상대적인 시장 점유율을 반영합니다.

  Statcounter는 전 세계 웹 사이트 방문에서 수집한 데이터를 사용하여 2022년 8월에 Windows가 데스크톱 운영 체제 중에서 74%의 시장 점유율을 차지한다고 추정했습니다.

Desktop operating system market share, August 2022. (출처: Statcounter)

  개발자는 소스 코드의 신속한 편집, 디버깅 및 컴파일을 위해 IDE(통합 개발 환경) 도구를 사용하여 프로그래밍할 가능성이 높습니다. 데스크톱 애플리케이션 프로그래밍에 널리 사용되는 언어로는 C#, C++, Swift 및 Java가 있습니다.

  데스크톱 소프트웨어는 로컬에서 실행되지만 최신 응용 프로그램은 제품 업데이트에서 클라우드 저장소를 통한 데이터 공유에 이르기까지 다양한 작업에 인터넷 연결을 사용할 수 있습니다.

 

6. 데이터 사이언티스트(Data Scientist)

  인간은 일상생활을 통해 많은 데이터를 생성합니다. 식료품점에서 계산하고, 웹 서핑을 하고, 교통 카메라를 지나치고, 휴대폰을 사용하고, 심지어 투표까지 합니다. 우리는 날씨, 지진, 우주의 전자기 신호와 같은 자연 현상의 데이터를 기록하는 시스템을 구축했습니다.

  데이터 과학자는 모든 정보에서 패턴을 찾아낼 수 있는 컴퓨터를 가진 수학 마법사입니다. 이러한 개발자는 Python 프로그래밍 언어 또는 R, Scala 또는 Julia와 같은 보다 전문적인 언어를 사용하고 있을 가능성이 높습니다.

  "빅 데이터"는 일반적으로 관계형 데이터베이스에 포함되므로 데이터 과학자는 프로그래밍 도구 상자에 SQL을 포함할 가능성이 높습니다.

 

7. 인공지능/머신러닝 개발자 (Artificial Intelligence/Machine Learning Developer)

  인공 지능(AI) 소프트웨어 개발자는 의사 결정과 같은 인간 행동을 모방하려고 합니다. 기계 학습(ML)을 추가하면 애플리케이션이 시간이 지남에 따라 더 똑똑해질 수 있습니다.

  AI/ML 애플리케이션은 일반적으로 복잡한 알고리즘을 사용하여 많은 데이터를 처리하므로 현장 개발자는 종종 데이터 과학자입니다.

  시장 조사 기관인 IDC는 AI 관련 애플리케이션, 하드웨어 및 서비스의 전 세계 매출이 2021년에 3,830억 달러를 초과하여 2020년에 비해 거의 21% 증가했다고 밝혔습니다.

 

  고객 관계 관리 소프트웨어와 전사적 자원 관리 소프트웨어는 AI로 강화된 애플리케이션 매출의 약 65%를 차지했습니다.

Value of AI software worldwide, 2020 vs. 2021. (출처:  IDC )

 

8. 게임 개발자 (Game Developer)

  컴퓨터 게임 개발자는 광범위한 기술을 사용합니다.

  그들의 소프트웨어는 데스크톱, 모바일 장치, 콘솔 또는 웹 브라우저에서 실행될 수 있습니다. 스토리라인은 군사 또는 스포츠 시뮬레이션, 1인칭 슈팅 게임, 전략 또는 롤플레잉과 같은 다양한 게임 장르를 수용합니다. 그런 다음 3D 그래픽, 음악 및 음향 효과가 있을 수 있습니다.

  인터넷에 연결된 게임 세계에서 대규모 멀티플레이어 게임 개발자는 가장 분주한 전자 상거래 사이트만큼 까다로운 백엔드 서버 및 데이터베이스 요구 사항에 직면해 있습니다.

  게임 개발자는 일반적으로 3D 렌더링 도구 및 기타 애니메이션 관련 소프트웨어에 대한 전문 지식을 가지고 있습니다.

  그리고 최첨단 기술에 초점을 맞춘 SlashData의 Developer Nation의 최근 개발자 설문 조사에 따르면 증강 현실(AR) 또는 가상현실(VR) 애플리케이션의 37% 이상이 AR/VR 게임인 것으로 나타났습니다. 추가로 27.9%의 프로젝트는 가상 세계 구축과 관련이 있었으며 일부는 게임용이었습니다.

Types of development using AR/VR. (출처:  SlashData’s Developer Nation )

9. 운영 체제 개발자 (Operating Systems Developer)

  수천 명의 개발자가 Linux에 기여하거나 Microsoft, Apple 또는 Google에 고용된 가장 인기 있는 운영 체제에서 작업하지만 여전히 독점적인 그룹입니다. 결국 SlashData 설문 조사에 따르면 전 세계 개발자 인구가 2,400만 명 이상인 것으로 나타났습니다.

  냉장고에도 Embeded 운영 체제가 있을 가능성이 높지만, 널리 사용되는 컴퓨터 운영 체제는 대규모 개발자 팀을 필요로 하며, 대부분은 전체 프로젝트의 소규모 구성 요소로 나눠 작업합니다.

  대부분의 운영 체제의 핵심은 CPU, 메모리, 파일 시스템 및 I/O 장치에 대한 액세스를 관리하는 커널입니다. C는 Microsoft Windows, Apple의 macOS 및 Linux 뒤에 있는 커널의 기본 코딩 언어입니다. 어셈블리로 작성된 일부 저수준 코드도 사용됩니다.

  그리고 안드로이드 커널은 리눅스 커널에서 진화했습니다.

  커널을 관리하는 운영 체제는 다양한 하드웨어 장치와 시스템 유지보수를 위한 드라이버가 있습니다. 그리고 시스템의 그래픽 사용자 인터페이스가 있습니다. 개발자는 이러한 구성 요소에 대해 C, C++, Objective C(macOS) 및 Python(Linux)을 사용할 수 있습니다.

 

10. DevOps 엔지니어 (DevOps Engineer)

  DevOps 엔지니어는 소프트웨어를 개발 단계에서 공개 릴리스로 빠르고 안정적으로 가져오는 도구 및 워크플로우를 관리합니다.

  "DevOps"는 "개발(development)"과 "운영(operations)"이라는 단어의 합성어로 실무자는 코드 관리에서 테스트, 배포, 모니터링, 유지 관리 및 문제 해결에 이르기까지 반복적인 소프트웨어 개발 작업을 자동화합니다.

  이 엔지니어들은 DevOps 도구 모음을 사용하여 소프트웨어 릴리스 주기를 단축하고 다양한 버전의 프로젝트 코드 기반을 관리하며 최종 제품이 예상대로 작동하는지 확인합니다.

  웹 개발에 사용될 때 DevOps 프로세스는 애플리케이션에 필요한 리소스가 사용 가능하고 웹 서버에서 적절하게 구성되었는지 확인할 수도 있습니다.

 

11. 보안 개발자(Security Developer)

  보안 개발자는 소프트웨어 및 컴퓨터 시스템 보안을 테스트하는 도구를 만들고 프로세스를 관리합니다.

  소프트웨어 개발에서 보안은 종종 DevOps 프로세스의 구성 요소입니다. 해당 환경에서 보안에 중점을 둔 사람을 SecDevOps 엔지니어라고 부를 수 있습니다.

  보안 개발자는 사이버 보안 공격과 위협으로부터 소프트웨어와 컴퓨터 시스템을 보호하기 위해 노력합니다. Python, Bash, Ruby와 같은 스크립팅 언어를 비롯한 다양한 도구를 사용하여 반복 작업을 자동화합니다.

  보안 개발자는 보호하려는 소프트웨어 및 시스템에 대한 심층적인 지식을 가지고 있어야 합니다.

 


 

  지금까지 서비스와 역할에 따른 11가지 개발자 유형을 살펴보았습니다. 그렇다고 개발자가 11가지 유형만 있는 것으로 생각하면 안 됩니다.

  여전히 많은 개발자가 하나 이상의 역할을 수행하며 대부분은 여러 프로그래밍 또는 스크립팅 언어에 익숙합니다. 아마도 이것이 우리 모두가 개발자 유형을 확실히 구분할 수 없는 이유이기도 합니다.

 

'Ein News' 카테고리의 다른 글

프론트엔드 웹 개발자 (Front-end Web Developer)  (0) 2023.01.19

댓글