IT&Computer

프로그래밍으로 뭘 할까? 프로그래밍의 분야

Seeker시커 2023. 9. 5. 22:08
반응형

길고 지겨울 코딩 공부에 앞서 나의 목표를 설정하고, 나아갈 길을 알아보는 것이 중요하다. 많이들 하니까 쉽게 뛰어들었다가 금방 하차하는 이유는 목표가 없이 시작하기 때문이다. 프로그래밍의 분야들을 살펴보고 나의 관심과 필요가 어디에 있는지 알아보자. 명확한 목표를 세운다면 길고 지루한 코딩 공부의 길을 즐겁게 나아갈수 있을 것이다.

 

프로그래밍으로 뭘 할까? 프로그래밍의 분야

 

luis gomes님의 사진: https://www.pexels.com/ko-kr/photo/546819/

 

1. 웹 개발 분야 이해하기

현재 개발자 시장에서 가장 수요가 많은 분야는 웹 개발 분야이다.

앞서 다른 글에서 언급했듯이 웹 사이트는 빠르게 사람들에게 서비스를 제공할 수 있고, 컴퓨터와 스마트폰에 모두 사용이 가능하다. 클라이언트와 서버에 대한 이해를 했다면 기본 개념은 이해했다고 볼 수 있다.

웹 개발은 많이들 들어봤을 프론트 엔드, 백 엔드 개발로 나눠진다.

1.1 프론트 엔드 개발

웹 개발에서 클라이언트 역할을 하는 브라우저에서 보여지는 부분을 개발하는 것이다.

html, css, javascript로 충분히 구현할 수 있으며, 페이지의 복잡도가 늘어날 수록 구현이 어렵고 어려운 코드가 쌓인데.

프론트 엔드 개발에는 다양한 라이브러리와 프레임워크가 개발되어 있는데 React, Angular, Vue가 대표적이다.

1.2 백 엔드 개발

프론트 엔드 개발과 반대로 백엔드 개발은 유저에게 보여지지 않는 서버를 개발하는 것이다. 초심자에게는 직관적이지 않아 이해가 어려울 수 있다. 다시 크게 나누면 Database 데이터베이스와 API Application Programming Interface로 나누어진다.

1.2.1 API

API는 서버를 클라이언트와 연결해주는 것으로, Java, Python, Kotlin, PHP, Ruby등의 언어가 사용되며 언어에 따라 대표 라이브러리와 프레임워크가 존재한다. Javascript도 API 개발에 사용 가능하다. 언어별로 장단점이 분명하여 취향대로 언어를 선택하면 된다.

1.2.2 Database

Database는 SQL, NoSQL로 나누어진다.

SQL은 언어가 엄격하지만 안정적이고 현재 더 우세하게 사용된다.

NoSQL은 비교적 최근에 생긴 방식으로 유연하고 간편하다.

프론트 엔드 위주로 공부 및 개발을 하고 백엔드를 가볍게 병행하고 싶다면 NoSQL을 사용해도 좋지만, 백엔드를 제대로 공부해볼 생각이라면 SQL을 먼저 배우고 나중에 NoSQL을 배우는 것이 추천된다.

 

2. 모바일 앱개발 분야 이해하기

웹은 스마트폰과 PC 모두 사용이 가능하지만, 아무래도 스마트폰 전용 앱이 사용하기 더욱 간편하고 사용자에게 더 깔끔한 경험을 제공할 수 있다. 앱이 있어야 유저의 스마트폰 홈 화면에 아이콘을 생성하고 푸쉬알림을 보낼 수 있어서 사용자를 붙잡아 두기에는 웹 보다 앱이 유리하다.

모바일 앱개발에서는 앱이 클라이언트의 역할을 하며 서버는 웹 개발과 완전히 동일하다.

2.1 모바일 앱개발의 어려움

모바일 앱은 아이폰과 안드로이드 용을 따로 만들어야 한다. 애플은 Swift, 안드로이드는 Kotlin 언어를 사용한다. 기업에서는 iOS와 안드로이드 개발 팀을 따로 둬야하기 때문에 비용이 증가한다.

이는 크로스 플랫폼으로 극복이 가능하지만 장단점이 있다.

- 전용 언어를 사용할 경우 각 운영체제의 모바일 환경에 최적화 하기 좋다.

- 크로스 플랫폼은 React native 웹의 요소를 사용하는데 구글의 Flutter, Dart를 사용한다. 개발 비용을 줄일 수 있고, 간단한 서비스를 제공하기에 좋다.

 

3. 데이터 분야 이해하기

인터넷과 모바일의 시대가 도래한 후로 데이터의 축적 속도는 어마어마하게 빨라졌다. 이 쌓여있는 데이터를 활용하기 위한 연구가 지속되고 있고, 맞춤 광고, 알고리즘 등으로 이미 우리도 경험하고 있다. 개발자에게도 데이터와 관련된 많은 역할들이 생겨났다.

3.1 데이터 엔지니어링

많은 양의 데이터를 효과적으로 처리하는데 특화된 기술이다. 작은 회사에서는 벡엔드 엔지니어가 데이터 엔지니어를 대신할 때도 있다.

3.2 데이터 애널리스트

데이터를 활용한 직관적 분석, SQF로 데이터 추출, 파이썬으로 데이터 분석, 발견한 인사이트를 팀원과 경영진에게 리포트 등으로 전달하는 역할이다.

3.3 데이터 사이언티스트

머신러닝을 이용해서 미래를 예측한다, 파이썬을 가장 많이 사용하고 머신 러닝을 서비스에 도입 시킬 방법을 고민한다.(유튜브 개인 맞춤 영상 추천 알고리즘 등)

3.4 머신러닝 엔지니어

백엔드 개발자가 머신 러닝을 배워서 역할도 가능하다. 머신 러닝 알고리즘을 실제로 서비스에 녹여내는 역할을 한다.

3.5 머신러닝 리서처

간단히 연구원이다. 새로운 머신러닝 알고리즘을 찾거나 기존 알고리즘을 개선하는 역할을 한다. 수학과 통계에 깊이가 있는 석/박사 학위자들이 많다.

 

 

4. 그리고 다양한 분야들

4.1 게임

웹게임, PC게임, 모바일게임, 콘솔게임 등 분야가 많다. 게임의 형태에 따라 개발 방식이 다르다.

Unity, Unreal 엔진이 가장 많이 사용된다.

Unity : C#

Unreal : C++

접근성이 높은 Unity가 시장에서 더 많이 사용되고 있다.

4.2 블록체인

가상화페, NFT, Defi 등이 있다. 클라이언트 쪽은 다른 분야와 유사하지만 서버 쪽이 탈 중앙화 되어 있다. 블록체인을 만들거나 블록체인 위에 올라가는 앱을 개발한다. 블록체인마다 사용하는 기술이 다르며, 이더리움 dAPP을 만들기 위해서는 Solidity 언어가 사용된다.

4.3 임베디드

냉장고, 스피커, 세탁기, 자동차 등에 들어가는 프로그램이다.

C언어 많이 사용하는데 이는 기기의 성능이 떨어지기 때문에 자원을 효율적으로 관리하기 위해서다.

성능이 좋은 경우 파이썬도 종종 사용된다.

IoT Internet of Things 에서도 임베디드 시스템 필요하다.

 

그 외 OS 개발을 위한 시스템 프로그래밍, 가상현실, 증강 현실 등의 분야가 있다.

시스템 프로그래밍 (OS 개발)

가상현실, 증강현실 

 

 

5. 그래서 어떤 분야를 배워야 할까?

목표가 명확하다면 (분야, 회사, 기술 등) 고민하지 않았을 질문이다. 모든 가능성을 열고 고민중이라면 웹 개발, 데이터 사이언스가 주로 추천된다.

웹은 수요가 많고 계속해서 시장이 커지고 있다.

데이터 사이언스는 뜨는 분야, 갈수록 데이터를 잘 활용하고 싶어하는 기업이 많고 AI 기술도 성숙해지고 있다.

범용적으로 활용가능한 분야이다.

 

웹 vs 데이터의 선택은 개인의 성향차이이다.

유저들이 사용하는 서비스를 직접 만들고 싶다면 웹을, 다양한 각도에서 데이터를 파악하고 수학적 기법 활용, 인사이트 도출하고 싶다면 데이터 사이언스가 좋다.

5.1 웹 개발 입문

웹에서도 시각적으로 보이는 결과를 만들고 싶다면 프론트 엔드, 데이터를 다루고 복잡한 시스템을 설계하고 싶다면 백엔드 분야가 좋다.

프론트 엔드는 HTML, CSS, Javascript가 필수적이며 React도 배워야한다.

백엔드는 선택지가 많은데 언어, 프레임워크, 데이터베이스를 선택해야 한다.

진입장벽이 낮은 언어로 파이썬과 널리 사용되는 프레임워크인 장고, 그리고 SQL이 추천된다.

Javascript의 프레임워크인 Node.js, Express.js를 활용하여 백엔드 개발을 할 수도 있는데, 이 때는 프론트/백 엔드 개발 모두 자바스크립트를 활용할 수 있어서 생산성이 높다.

5.2 데이터 사이언스 입문

데이터 사이언스 중 데이터 애널리슽와 데이터 사이언티스트는 파이썬이 확고한 선두주자이다. 진입장벽이 낮고 활용도가 좋은 파이썬을 먼저 배우는 것이 좋다. 또한 SQL에 대한 이해를 갖춰야한다.

 

 

프로그래밍으로 뭘 할까? 프로그래밍의 분야

반응형