저는 개발자입니다.

다니고 있는 직장 동료들을 생각해보면 정말 많은 분야의 개발자들이 있어요. 웹, 앱, 서버, 데이터 분석, 머신러닝 등..

세세하게 나열하면 우리 회사만 10 개 분야의 개발자들이 있는 것 같아요. 그만큼 개발에도 분야가 정말 많다는 거겠죠.

그런데 그거 아세요? 어차피 개발자들도 어떤 분야가 있다 정도만 알지, 각 분야가 세세하게 들어갔을 때 어떻게 쪼개지는지까지는 잘 몰라요. 

 

이 글을 읽고 계신 분들도 아마 개발자라는 직업에도 종류가 많다는 것을 눈치채시고, 구체적으로 무엇무엇이 있는지 궁금해서 들어오셨을 거예요.

아주 세세한 부분까지는 파악이 안 돼도 개발자 종류에는 무엇이 있는지 알아두면 개발 업계를 이해하는 데 큰 도움이 될 거예요.

지금부터 그것들을 최대한 쉽고 빠르게 알려드릴게요 ㅎㅎ

 

 

Photo by Oli Woodman on Unsplash

 

 

임베디드(Embedded) 개발자

 

세탁기, 청소기, TV 등... 컴퓨터가 아닌 기계들도 컴퓨터처럼 계산을 하고, 숫자를 보여주고, 심지어 음성인식까지 해내는 세상입니다. 

이런 기기들도 모두 소프트웨어를 갖고 있기 때문인데, 이 소프트웨어는 누가 만드는 걸까요? 

맞습니다. 임베디드 개발자입니다.

 

 

임베디드 개발자들은 기계와 직접 통신할 수 있는 C언어와 같은 저수준 언어를 다룹니다.

저수준 언어일수록 프로그래밍 난이도가 높고, 불친절하죠.

다른 고급 언어들과 저수준 언어의 관계를 비유하자면,

고급 언어들은 지붕에 올라가라고 사다리를 직접 건네주지만

저수준 언어는 분해된 사다리를 건네서 직접 조립해서 쓰라고 말합니다 ㅋㅋㅋ

 

 

우리나라에서는 임베디드 개발자에 대한 인식이 좋지 않습니다.

가혹한 근무 환경, 저임금에 시달리는 사람들이 많기 때문이죠.

그런데 제 주변을 생각하면 개발자가 되기 위해 공부를 하는 사람들도 이 사실을 알고 이 분야를 꺼립니다.

개발자 지망생들이 이 분야를 꺼린다는 건, 공급보다 수요가 더 많다는 뜻이 되니 10년 뒤에는 또 어떻게 바뀔지 모르겠네요 ㅎㅎ

 

 

 

Photo by Andrew De Leon on Unsplash

 

게임 개발자

 

 

많은 개발자들이 '나는 게임 개발자가 될 테야' 라고 생각하고 개발을 시작합니다. 

기술이 많이 발전해서 FlowTensor 같은 툴을 이용하면 드래그앤드롭 만으로 게임을 만들 수 있는 세상입니다.

 

 

그러나 더 고도화된 게임일수록, 게임 개발자들도 여러 갈래로 나뉘어 분업을 시작합니다.

그렇게 갈라져서 나온 개발자들은 크게 네 가지로 구분할 수 있습니다.

 

 

먼저 클라이언트 개발자입니다. 클라이언트 개발자는 다시 유저들이 직접 보는 화면을 개발하는 프론트엔드와, 보여줄 데이터를 처리하는 백엔드 개발자로 나뉘죠. 

 

 

엔진 개발자도 있습니다. 배틀그라운드와 같은 총게임을 해보셨다면 '물리 엔진'이라는 용어를 들어보셨을 거예요. 

물리 엔진처럼 엔진 프로그래머들은 2D나 3D 환경에서 돌아가는 최적의 엔진을 구축합니다. 

 

 

마지막으로 툴 개발자가 있습니다.

게임 개발을 진행할 때, 처음부터 끝까지 순수 프로그래밍으로만 다 만든다면 매우 힘들 겁니다.

단순한 드래그앤드롭으로 맵을 만든다거나, 틀에 맞춰 메시지만 입력하면 알아서 퀘스트 시나리오가 생성되는 시스템이 있다면 게임 개발 속도에는 날개가 달리겠죠.

그걸 도와주는 게 바로 툴 개발자입니다. 툴 개발자는 게임 속 맵과 같은 요소를 쉽게 만들 수 있는 툴을 개발합니다.

 

 

 

 

Photo by Alina Grubnyak on Unsplash

 

 

데이터 관련 개발자 

 

'빅데이터 전문가'가 되고 싶다는 사람들을 참 많이 봤는데요. 

빅데이터 분야는 빅데이터 전문가 뿐만 아니라 데이터아키텍트, 데이터마이너, 빅데이터분석가 등으로 세분화할 수 있어요.

 

 

데이터 아키텍트는 방대한 양의 데이터를 비즈니스 측면에서 활용할 수 있도록 뼈대를 잡는 역할을 합니다.

이들은 중구난방으로 쌓이는 데이터 중 비즈니스에 필요한 정보만 뽑아내서 관리할 수 있도록 운영해요.

대기업 같은 경우 워낙 많은 데이터가 쌓이다 보니 이렇게 틀을 잡아줄 사람이 점점 더 필요해지는 상황입니다.

 

 

데이터 마이너는 데이터에 대한 분석 목적을 세우고, 거기에 필요한 정보만을 마이닝(채굴)하는 역할을 합니다.

그리고 채굴한 데이터를 목적에 맞게 변경하기도 합니다. 

그렇게 함으로써 비즈니스에 활용을 할 수도 있고, 문제점을 발견해서 작업 효율을 늘릴 수도 있습니다.

 

 

마지막으로 빅데이터 전문가는 데이터를 가지고 부가가치가 높은, 쉽게 말하면 '돈이 되는' 정보를 추출해냅니다.

사람들의 SNS 활동으로부터 쌓인 방대한 데이터를 가지고 그들의 행동패턴을 분석해내는 게 대표적인 예입니다.

데이터에 대한 지식뿐만 아니라 인문학적인 역량도 요구돼서 아무나 할 수 있는 직업은 아니라고.. 😂

 

 

 

Photo by Aideal Hwa on Unsplash

 

인공지능 개발자

 

 

데이터가 쌓였다면, 그것들을 기계에 학습시킬 수 있는 시대가 도래했습니다.

'기계(Machine)가 학습(Learning)한다' 는 뜻의 머신러닝 개발자도 자연스럽게 생겨났고, 나아가 딥러닝이라는 분야도 생겼습니다. 

 

 

머신러닝(Machine Learning, 줄여서 ML) 개발자는 말 그대로 '기계를 학습'시킵니다.

쌓여 있는 데이터를 잘 요리해서 기계에게 밀어넣죠. 

비유하자면 쌓여 있는 밀가루를 빵으로 구워서 먹여주는 역할을 한다고 할까요 ㅎㅎ

 

 

그렇다면 딥러닝(Deep Learning) 개발자는 어떤 역할을 할까요? 같은 러닝인데..

핵심적인 차이는 '학습 주체'에 있습니다.

머신 러닝 개발자가 데이터를 기계에게 직접 학습시키도록 한다면,

딥러닝 개발자는 '기계 스스로 학습'할 수 있는 환경을 조성해요.

알파고가 스스로와의 대국 연습을 통해 이세돌을 이길 수 있었던 것도 모두 딥러닝 덕분입니다.

 

 

 

 

Photo by Igor Miske on Unsplash



 

웹, 앱, 그리고 서버개발자

 

 

이들은 우리가 매일같이 쳐다보는 스마트폰 애플리케이션, 웹사이트를 개발하는 개발자입니다. 

우리와 직접 마주하는 화면상의 무언가를 만들어내는 사람들을 '프론트엔드(Front-end)' 개발자라고 합니다.

웹 개발자와 앱 개발자가 프론트엔드에 속하죠.

그리고 로그인부터 시작해 각종 기록, 데이터를 저장하고 프론트엔드 개발자들이 좀더 효율적으로 데이터를 보여줄 수 있도록 협업하는 관계에 있는 사람들을 '백엔드(Back-end)' 개발자라고 해요. 서버 개발자라고도 부릅니다.

 

 

아마 개발자가 아닌 사람들도 웹 개발자와 앱 개발자, 그리고 서버 개발자에 대해서는 한번쯤 들어봤을 확률이 높아요.

좀더 얘기를 하고 싶은 건, 앱 개발자입니다. 왜냐하면 우리가 아는 앱은 전부 같은 방식으로 개발된 앱이 아니거든요.

애플리케이션은 크게 분류하자면 네이티브 앱과 하이브리드 앱으로 구분할 수 있습니다.

 

 

차이점은 이렇습니다.

네이티브 앱은 순수 안드로이드, 순수 아이폰 전용 프로그래밍을 통해 개발된 것인 반면

하이브리드 앱은 화면을 구성하는 대부분이 사실상 '작은 크기의 웹사이트' 라는 데에 있죠.

다음, 네이버와 같은 대기업의 애플리케이션도 하이브리드 형태를 띄고 있어요.

하이브리드 앱이 좋은 점은 '웹 사이트 프로그래밍 하나로 앱까지 퉁칠 수 있다'는 것입니다. 

단점은 네이티브 앱만큼 빠르지 않다는 것, 네이티브 앱에서만 동작하는 기능들을 사용하지 못한다는 것이죠.

 

 

 

회사에서 스터디

 

 

지금까지 설명한 개발자 종류 이외에도 더 많은 개발자들이 존재해요. 

그만큼 '개발자'라는 직업은 좀더 깊게 들어가면 훨씬 더 많은 직업으로 쪼갤 수 있어요.

'개발자가 부족하다'는 말도 괜히 들리는 말은 아닌 것 같습니다 ㅎㅎ 

 

 

도움이 되셨나요?

긴 글 읽어주셔서 감사합니다 ☺️ 

 

 

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom