개발의 모든 분야, 모두 정리해 드립니다

개발의 모든 분야, 모두 정리해 드립니다

일자

상시
유형
아티클
태그
이 아티클은 <비전공자가 개발자로 일하는 방법> 시리즈의 3화입니다. 


개발자가 아닌 사람들은 개발 분야에 대해 이야기 할 때 ‘개발이 개발이지, 뭐가 나뉘어?’라고 생각하기 쉽다. 하지만 그 안을 자세히 들여다보면, 개발이라는 큰 카테고리 안에도 정말 다양한 세부 분야가 존재한다. 이런 사실을 잘 모르는 사람은 개발자에게 전문 분야가 아닌 개발을 맡기거나 질문하기도 한다. 그러나, 한국어와 영어 간의 차이 만큼은 아니더라도 개발 분야 간에는 새로운 공부가 필요할 만큼의 차이가 존재한다. 따라서 개발자가 되기로 마음을 먹었다면, 어떤 선택지들이 있는지 먼저 파악하고 빠르게 선택지를 정해서, 그 분야에 선택과 집중을 하는 것이 정말 중요하다.

간혹 개발자로 경력을 시작하기 전, 다양한 분야에 관심을 가지고 모두 한 번에 시도하는 사람이 있다. 하지만, 처음 개발자로 경력을 전환할 때는 한 분야에만 집중해도 시간이 모자라다. 먼저 한 분야에 집중해 개발자로 경력을 전환하고, 그 이후에 다른 분야에 관심을 가져도 늦지 않다. 위에서 설명한 것처럼 개발 분야 간의 차이는 큰 편이지만 전혀 업무 경험이 없는 상태에서 새롭게 공부하는 것보다, 한 분야에서 경력을 쌓은 후 다른 분야로 넘어가는 것이 비교적 쉽다. 왜냐하면 개발 분야들은 서로 영향을 주고받으면서 발전해왔기 때문이다.

나 역시 개발이라는 큰 카테고리 안에서 다양한 분야를 경험한 케이스다. 모바일 앱 개발자에서 시작해 백엔드 엔지니어로 그 이후에 웹 프론트엔드를 하다, 데이터 엔지니어와 데브옵스 업무까지 경험했다. 그리고 현재는 머신러닝 컨설팅 업무를 하면서 여러 데이터 사이언티스들과 함께 일하고 있는데, 이런 경험 덕분에 비교적 각 직군 별로 상세한 정보를 전달할 수 있게 되었다. 물론 다른 글의 서두에서 밝힌 것처럼, 나의 경험이 모든 직군의 경험을 대변하지 않기 때문에 그 부분을 참고해 필요한 부분을 취사선택하면 된다.


개발 분야 1 : 모바일 앱


누군가 전혀 개발에 대한 사전 지식이나 경험 없이 개발에 도전해보고 싶어한다면 우선 추천하는 건 모바일 앱과 웹 프론트 개발이다. 그 이유는 이 두 분야가 개발 과정에서 변화가 즉각적으로 보이기 때문에, 비전공자가 좀 더 쉽게 흥미를 얻을 수 있다. 모바일 앱 개발은 안드로이드 앱과 아이폰(iOS) 앱 개발이 있다. 개발에 관심을 가지고 있는 사람들의 평균적인 프로필을 고려한다면, 대부분 안드로이드 휴대폰이나 아이폰 중 하나를 쓰고 있을 것이다. 이 경우 개인의 컴퓨터를 활용해 즉각적으로 모바일용 앱을 개발할 수 있고, 개인의 휴대폰에서도 해당 앱을 사용해볼 수 있어 진입장벽이 낮게 느껴진다.

ⓒ 셔터스톡


단, 안드로이드 앱 개발은 어떤 컴퓨터로든 개발이 가능하지만, 아이폰 앱은 애플 사의 컴퓨터(맥북, 아이맥 등)을 통해서만 개발이 가능하기 때문에, 아이폰 앱 개발을 희망한다면 사전에 애플 사의 컴퓨터를 준비해야 한다.


안드로이드 앱 개발 학습 관련 상세 정보
안드로이드 앱은 ‘자바(Java)’나 ‘코틀린(Kotlin)’이라는 언어로 개발할 수 있다. 두 언어 모두 안드로이드 개발에 많이 활용되는데, 안드로이드 개발자로서의 장기적인 커리어를 생각한다면 자바를, 비교적 쉽고 빠르게 앱을 개발해보고 싶다면 코틀린을 선택하면 좋다. 앱 개발에 공통적인 내용인데, 앱 개발은 크게 UI를 처리하는 그래픽과 관련된 부분 그리고 내부에서 앱의 작동 로직을 담당하는 부분으로 나뉜다. 따라서 모바일 앱을 학습하는 과정은 다음과 같다. (1) 먼저 프로그래밍 언어를 배우고 (2) 그 다음 모바일 앱에서 UI를 구성하는 방법을 배운 후에, (3) 마지막으로 프로그래밍 언어를 통해 UI를 조작하는 방법을 배우는 과정이 일반적이다. 한국에서는 압도적으로 안드로이드 휴대폰 사용자가 많기 때문에, 안드로이드 앱 개발자로 취업하면 더 풍성한 구직 정보를 찾을 수 있다.


아이폰 앱 개발 학습 관련 상세 정보
아이폰 앱 개발은 오브젝티브 씨(Objective-C)나 스위프트(Swift)를 통해 이뤄진다. 비교적 사이즈가 크거나 오래된 앱들은 오브젝티브 씨를 쓰는 경우가 있으나, 최근에는 대체로 스위프트를 통해 개발하는 경우가 일반적이다. 아이폰 앱 개발을 선택한다면 안드로이드와 반대로 한국에서는 사용자가 적기 때문에 취업의 기회도 그만큼 줄어든다. 하지만 안드로이드와 다르게 아이폰 앱 개발을 하기 위해 맥북과 같은 애플 사의 컴퓨터를 투자해야만 배울 수 있어 개발자 공급 자체도 적은 편이다. 초기에 노력해서 어느 정도 실력만 갖춘다면 상대적으로 좋은 대우를 받을 수 있다. 그리고 미국이나 일본 등에서는 아이폰 보급 비율이 굉장히 높아 모바일 앱 개발과 해외 취업을 한번에 노리는 사람에겐 아이폰 앱 개발이 더 나은 선택이 될 수 있다.


개발 분야 2 : 웹 프론트엔드


모바일 앱 개발 외 다른 추천 분야 중의 하나로는 웹 프론트엔드다. 모바일 앱 개발과 웹 프론트엔드 두 분야를 합쳐서, ‘클라이언트 개발’이라고도 부른다. 클라이언트 개발은 서버 개발과 대비되는 용어로, 서버가 사용자의 요청이 들어오면 관련된 정보를 넘겨주는 역할을 한다면, 클라이언트는 서버로부터 들어온 정보를 사용자가 보기 좋게 가공하고 손쉽게 활용할 수 있게 도와주는 분야다.

웹 프론트는 브라우저 상에서 일어나는 변화를 만들어내는 개발자다. 해당 개발에는 대표적으로 자바스크립트와 타입스크립트를 사용한다. 자바스크립트는 가장 잘 만들어진 언어 혹은 배우기 쉬운 언어라고 말하기는 힘들지만, 현존하는 언어 중 한 가지만 배운다고 가정했을 때 제일 많은 것을 만들 수 있는 언어다. 다르게 말하면, 투입 대비 효율이 좋은 언어다. 다양한 하이브리드 앱 솔루션을 활용해 모바일 앱도 만들 수 있고, 자바스크립트로 백엔드 영역도 개발할 수 있다. DevOps 그리고 머신러닝 분야까지도 자바스크립트로 만들어진 여러 라이브러리가 존재한다. 그래서 만약 웹 프론트엔드로 경력을 시작한다면, 한 언어로 다른 분야를 넘어갈 수 있는 기회가 생기기 쉽다. 더불어 빠르게 기술 발전이 일어나고 있는 분야이기 때문에, 학습할 수 있는 능력만 갖추고 있다면 해당 분야의 전문가가 되는 데 비교적 짧은 시간이 걸린다.


개발 분야 3 : 백엔드


백엔드는 여러 개발 분야 중 가장 전통적인 개발 업무로 인식되는 경향이 있다. 그렇기 때문에 거의 모든 언어들이 백엔드 개발을 지원한다. 가장 많이 활용되는 백엔드 개발 언어로는 자바, 파이썬, 자바스크립트지만, 그 외에도 정말 다양한 언어로 백엔드 개발을 할 수 있다. 만약 대기업이나 규모가 있는 곳의 백엔드 개발자로 일하고 싶다면 자바를, 비교적 쉽게 백엔드 개발을 배워보고 싶다면 파이썬을, 위에서 언급한 것처럼 한 언어로 많은 것을 하고 싶다면 자바스크립트를 선택하는 것을 추천한다.

백엔드는 모바일 앱 개발이나 웹 프론트 개발 업무와 다르게 서버 쪽 작업을 하는 업무를 뜻한다. 다양한 데이터베이스에서 데이터를 추출하고, 개발 작업을 통해 해당 데이터들이 어떤 식으로 클라이언트에 전달할지 규칙을 정하는 과정이다. 이 분야는 비전공자들이 선호하는 분야는 아닌데, 코드의 변화를 직접적으로 느끼기가 어렵기 때문이다. 그리고 백엔드 작업은 앞의 클라이언트 쪽 개발 업무에 비해 컴퓨터 공학적 지식이 필요하다. 반면에, 백엔드 업무는 이러한 컴퓨터 공학적 지식을 이해한다면, 작은 변화로도 전체 시스템 성능에 큰 변화를 만들거나 비용을 현저히 낮추는 등의 큰 임팩트를 만들 수 있는 분야다. 참고로 웹 프론트 개발과 백엔드 개발을 함께하는 포지션은 풀스택 개발이라고 부른다.


처음부터 도전하기 어려운 분야들


앞서 소개한 분야가 처음 도전해볼 만한 분야라면, 아래 분야는 비교적 난이도가 있는 분야다. 기존의 업무 경험을 바탕으로 해당 분야로 넘어가거나 학위가 요구되기도 한다.


데브옵스 (DevOps) / 클라우드 엔지니어
우선 데브옵스 혹은 클라우드 엔지니어링은 기존 시스템 엔지니어링 업무와 개발 업무 사이의 역할을 하는 것을 의미한다. 이전에는 코드를 짜서 서비스를 개발하는 업무와 개발된 소프트웨어를 배포하고 시스템을 관리하는 시스템 엔지니어의 역할 구분이 명확했다. 그런데 아마존 웹 서비스(AWS)의 등장과 더불어 시스템 접근성이 높아지고, 많은 것이 자동화됨에 따라 개발자가 시스템 엔지니어의 업무를 하거나, 시스템 엔지니어의 개발을 배워 중간 단계의 업무를 하는 경우가 많아졌다. 데브옵스라는 말 자체도 개발을 의미하는 Development와 시스템 관리를 의미하는 Operations가 합쳐진 단어다.

ⓒ 셔터스톡


이 업무는 어느 정도 개발에 대한 정보와 운영체제, 네트워크 등 인프라에 대한 이해가 함께 필요하다. 즉 바로 시작하기에는 이해해야 할 지식이 너무 방대하다. 그리고 개발의 넓은 부분을 아우르는 분야이기 때문에, 개발을 처음 시작하는 사람에게 어려운 요소가 많다.

하지만 데브옵스는 같은 회사 내 동료 개발자들의 개발 생산성을 극적으로 증대시킬 수 있는 업무이며, 끊임없는 모니터링을 통해 다양한 서비스가 막힘 없이 고객을 만나게 해주는 아주 중요한 역할을 수행한다. 업무를 자동화하고 조직 내 효율성을 개선하는 데 흥미를 느낀다면 도전해봐도 좋은 업무이다.


데이터 엔지니어
데이터 엔지니어는 한 회사에서 생성되는 다양한 데이터를 수집하고 가공해 데이터 분석가나 과학자가 업무를 수행하는 데 필요한 파이프라인을 생성하는 역할을 한다. 대체로 데이터 엔지니어는 코드를 직접 짜기 때문에 백엔드 엔지니어 경험을 가지고 있는 경우가 많다.

데이터 엔지니어가 되기 어려운 이유는 이처럼 우선 풍부한 데이터베이스를 이해해야 하고, 인프라 지식이 필요하기 때문이다. 데이터 엔지니어는 다양한 곳의 데이터를 처리하는 업무 특성 상 여러 개의 데이터 베이스를 사용하는 경우가 빈번하다. 따라서 처음 개발을 접하는 사람에게는 너무 많은 내용을 한 번에 학습해야 한다. 그리고 데이터 엔지니어링은 방대한 양의 데이터를 한 번에 처리해야 하는 경우가 잦은데, 이를 위해 코드를 짜는 과정에서 컴퓨터 공학적 고려가 들어가야 하고, 이런 파이프라인이 인프라 위에서 어떻게 하면 적절하게 돌아가는지 등 시스템 아키텍쳐에 관련한 고민도 해야하는 포지션이다. 처음부터 데이터 엔지니어로 일을 하기 쉽지 않다.

하지만 데이터 엔지니어는 한 조직에서 데이터의 혈관을 책임지는 업무를 담당하고 있어, 데이터와 관련한 중요한 업무를 하게 되고 전문성을 쌓게 된다. 만약 개발 업무와 데이터 사이의 업무를 해보고 싶다면 관심을 가져봐도 좋다. 데이터 엔지니어는 대체로 자바, 파이썬, 스칼라를 쓴다. 미리 해당 언어에 익숙해지는 것이 필요하다.


데이터 과학자 (혹은 머신러닝 엔지니어)
데이터 과학이라는 분야도 굉장히 방대한 카테고리다. 한 문장으로 정의하기는 결코 쉽지 않다. 이 글에서는 통계학과나 머신러닝과 관련된 업무를 하는 데이터 과학자에 한정 지어서 이야기를 해보도록 하겠다.

이 분야는 굉장히 고학력자가 많은 분야다. 구글에서 운영하는 데이터 과학자들의 올림픽 같은 플랫폼 사이트 ‘캐글(Kaggle)’이 있다. 캐글 내에서 수시로 대회가 열려, 데이터 과학자가 본인의 실력을 확인하고 다른 사람들의 지식과 경험을 배우기 위해 모이는 곳이다. 그곳에서 2021년 리포트를 발행했는데, 무려 데이터 과학자의 64.1%가 석사 이상의 학력을 가지고 있는 것으로 발표했다.

ⓒ 셔터스톡


요즘은 워낙 좋은 머신러닝 라이브러리들이 있어 깊은 지식이 없어도 간단한 머신러닝 모델을 만들 수 있지만, 깊이 있게 파고들기 위해 수준 높은 통계학과 수학에 대한 이해가 필수적이다. 따라서 단순히 수업을 듣거나 과정을 수료하는 것만으로는 고학력자들과 학력 경쟁에서도, 전문 지식에서도 밀리기가 쉽다.

데이터 과학 분야에서는 주로 파이썬이나 R이라는 프로그래밍 언어를 많이 쓰는데, 해당 언어를 사용하는 방식이 백엔드에서의 코드 사용과도 달라 다른 분야의 프로그래밍 경험을 통해 데이터 과학자로 넘어가는 것이 쉽지는 않다.

다만 머신러닝이나 인공지능(AI)은 굉장히 대중적으로 관심을 많이 받는 분야이므로, 양질의 자료가 풍성하게 만들어지고 있다. 따라서 의지만 있다면 꼭 석사나 박사를 하지 않더라도 어느 정도 깊이의 머신러닝 공부를 하는 것이 불가능한 것은 아니다. 일정 수준의 학습을 마치고, 캐글 등의 사이트를 통해 자신의 실력을 입증만 할 수 있다면 꼭 학위가 없더라도 데이터 과학자로도 일을 하는 사례가 있다.



▶ <비전공자가 개발자로 일하는 방법> 시리즈 보러 가기



글ㅣ마르코
필자는 역사학도 출신 개발자로 대학 졸업 후 무역상사에 입사했으나 직장 상사들처럼 살고 싶지 않아서 퇴사 후 개발을 공부했다. 한국에서  개발자로 3개의 스타트업을 다녔고, 이후 프리랜싱, 개인 사업 등 다양한 일을 하다가 상해를 거쳐 싱가폴에서 개발자로 일했다.  현재는 IT영업 업무를 하면서 관련 글을 쓰고 있다. (https://brunch.co.kr/@imagineer)