코드잇 Codeit/CS / 기타

[코드잇] 프로그래밍 오버뷰 (프로그래밍 분야와 학습 가이드)

꼽파 2023. 4. 8. 23:14


  • 웹 개발 분야

  • 모바일 개발 분야

  • 데이터 개발 분야

  • 그밖의 다양한 분야들

  • 비개발자의 코딩 활용

  • 웹 개발 분야

    웹 개발 

    • 웹 개발 = 프론트엔드 + 백엔드
    • 이미 수요가 많은 분야인데, 아직도 계속해서 커지고 있음.
      어떤회사나 프론트백엔드 개발자가 있음.
      그냥 소프트웨어 엔지니어라는 타이틀 되어 있는 곳도 다루고 있는 서비스가 웹 기반이라면 웹 개발자 뽑는거나 마찬가지
    • 관심있는 분야가 따로 없으면 수요가 많은 웹 개발이나 데이터 사이언스 분야로 진입하는 것이 좋음.
    • 유저들이 사용하는 서비스를 직접 만들고 싶다 → 웹 개발
    • 다양한 각도에서 데이터를 사용하고 싶다, 수학적 기법을 활용,인사이트 도입 → 데이터 사이언스

    프론트엔드(Front-end) = 클라이언트

    HTML, CSS, JS + React, Angular, Vue

    • HTML: 이미지, 글자, 버튼 등이 어디에 들어갈지 정해준다.
    • CSS: 이미지, 글자, 버튼 등의 요소에 크기나 색깔 같은 스타일을 입혀준다.
    • JavaScript: 유저 동작에 따른 사이트의 반응을 정해준다.

    학습 가이드

    - 추천 : 시각적인 것에 관심이 많고 눈에 보이는 결과물이 있어야 동기부여 잘되는 사람

    - HTML, CSS, JS + React
    - react가 몇 년 째 안정적으로 1등을 지키고 있음.


    백엔드(Back-end) = 서버 
    데이터베이스, API

    • 데이터베이스 : SQL, NoSQL 
    • API : Java, Python, Kotlin, PHP, Ruby, JS

    • 데이터베이스

    - SQL : 규칙이 엄격, 역사가 깊어서 안정적

    → 백엔드를 제대로 해보고 싶으면 배우기 (SQL→NoSQL)

    - NoSQL : 비교적 최근에 생긴 방식, 유연하고 간편 

     프론트엔드 위주로 공부하고 백엔드는 가볍게 한다면 배우기

     

    • API (Application Programming Interface)

    - 응용 프로그램 간의 상호작용을 가능하게 하는 인터페이스

    - 프로그램들이 서로 통신하고 상호작용하기 위한 규칙과 절차를 정의하는 것
    - API를 통해 소프트웨어 개발자는 외부 시스템에 요청을 보내고, 응답을 받아 처리하며, 서비스를 이용할 수 있음.

    - 백엔드 개발자가 API를 만들면 클라이언트와 서버가 소통할 수 있음.

     

    학습 가이드

    - 추천 : 데이터를 다루는 게 좋고, 복잡한 시스템을 설계하는 것이 좋은 사람

    - 언어, 프레임워크, 데이터베이스를 하나씩 골라야 하는데 선택지가 많음.

      안정적인 서비스를 구현하고 싶다면 프론트엔드와 백엔드를 각각 제대로 공부하고 싶다면
    언어 파이썬 JS언어 중 node.js
    프레임워크 Django Express.js
    데이터베이스 SQL SQL, MongoDB
    이유 파이썬의 진입장벽이 낮은 편
    장고에서 미리 해주는 게 정말 많다
    SQL이 필수이고 NoSQL은 선택
    가볍게 시작하는 단계라면 mongoDB같은 NoSQL도 좋음
    백엔드 개발을 제대로 하고 싶으면 SQL은 필수 

    - 한국에서 유독 Java 비중이 높지만 Java는 언어가 어렵고, 생산성이 떨어짐.
    - 처음 배우는 입장에서는 파이썬 Django / JS Node.js 추천함.


    모바일 개발 분야

     보통 개발자는 다음과 같이 분류함.

    • 프론트엔드 개발자 = 웹 프론트엔드 개발자
    • 모바일 클라이언트 개발자
    • 백엔드/서버 개발자

     모바일 개발을 위해서는 아이폰과 안드로이드 앱을 따로 만들어야 함.

    • 아이폰 - Swift
    • 안드로이드 - Kotlin

     크로스 플랫폼(Cross Platform)

    - 개발자를 따로 구해야 하니 기업에서 비용이 많이 소모되어 크로스 플랫폼이 등장함.
    - 크로스 플랫폼(Cross Platform)의 종류

    • React Native : 페이스북 
    • Flutter : 구글 (Dart라는 프로그래밍 언어를 사용)

    Swift & Kotlin
    - 모바일에 최적화된 형태
    - 충분한 인원과 충분한 시간이 필요함.

    React Native & Flutter
    - 서비스가 복잡하지 않고 높은 성능이 필요하지 않을 때 적합함.
    - 개발 비용이 적게 듦.

     

    ◆ 학습 가이드
    React Native vs Flutter
    - 현재 나의 상황과 목표에 따라 결정하면 됨.
    - 필요한 것만 배워서 빠르게 모바일 개발을 하고 싶다면 Dart와 Flutter
    - 자바스크립트와 리액트를 배울 계획이 있다면 React Native


    데이터 개발 분야

     데이터 엔지니어

    - 많은 양의 데이터를 효과적으로 처리
    - 데이터베이스와 빅테이터에 특화된 기술
    - 작은 회사에선 백엔드 엔지니어가 대신하기도 함

     데이터 애널리스트
    - 데이터를 활용해서 직관적인 분석
    - SQL로 데이터를 추출하거나 파이썬으로 데이터 분석
    - 발견한 인사이트를 팀원들과 경영진에게 전달

     데이터 사이언티스트
    - 머신 러닝을 이용해서 미래를 예측
    - 파이썬을 가장 많이 사용
    - 머신 러닝을 서비스에 도입시킬 방법을 고민

     머신러닝 엔지니어
    - 실제 프로덕트에 적용함.
    - 백엔드 개발자가 머신 러닝을 배워서 맡기도 함.
    - 머신러닝 알고리즘을 실제로 서비스에 녹여내는 역할.

     

     머신러닝 리서처

    - 새로운 머신러닝 알고리즘을 찾거나 기존 알고리즘 개선
    - 주로 수학, 통계에 깊이가 있는 석사, 박사 학위자

     

     학습 가이드

    데이터 애널리스트, 데이터 사이언티스트로 진입

    파이썬 vs R
    → 파이썬이 갈수록 더 확고한 선두 주자

    • 언어 : Python, R
    • 프레임워크 : NumPy, pandas, seaborn, PyTorch, TensorFlow
    • 데이터베이스 : SQL

    그밖의 다양한 분야들

    게임 개발 분야

    여러 형태가 있어서 축약해서 말하기 힘듦
       ex. 웹사이트 접속후 실행, 모바일 게임, 콘솔게임 등
     형태에 따라 개발 방식이 많이 다름

    게임개발에 가장 많이 쓰이는 기술 : Unity, Unreal

     

     Unreal 엔진 : C++ 기반

    - 조금 더 완성도 높은 결과물을 낼 수 있음.
    - 사용하는 툴이나 언어가 Unity에 비해 익히기 어려움.

     

     Unity 엔진 : C# 기반

    - 게임에 원하는 물체들을 드래그해서 넣을 수 있음.
    - 이 물체가 어떻게 동작할지는 C# 언어를 통해 코딩으로 구현함.

    → 대부분 둘이 비슷한 퀄리티를 낼 수 있어서 비교적 접근성이 높은 Unity가 시장에서 더 많이 사용됨.


    블록체인 분야

     비트코인, 이더리움, 솔라나, 카르다노 / 가상화폐, NFT, Defi / 탈중앙화 시스템
    - 웹사이트나 모바일앱은 기존과 동일
    - 백엔드가 탈 중앙화된 형태이지, 보여지는 부분은 일반적인 서비스와 크게 다를 게 없음.


     블록체인 엔지니어
    - 대부분 블록체인 위에 올라가는 앱인 DApp(Decentralized App)을 제작함.
    - 일반적인 백엔드 개발자와 다르게 블록체인에 대한 이해가 필요함.
    - 어떤 블록체인인지에 따라 개발에 사용되는 기술이 다름.
    ex. 이더리움 - Solidity(언어)


    임베디드 시스템(Embedded System)

     하드웨어를 동작하게 하는 기술 (ex. 냉장고, TV, 전등 등)
     이런 기계들에는 성능이 덜 좋은 컴퓨터가 들어가고, 세밀하고 효율적인 자원관리가 필요함.

     요즘에는 파이썬도 쓰이나, 대표적으로 C가 쓰임.

     


    사물인터넷(IoT Internet of Things) : 일상의 사물들이 데이터를 공유하는 기술

    시스템 프로그래밍 : 운영체제를 만드는 개발자로 하드웨어에 관한 지식이 필수임.
    그밖에 VR, AR 등 다양한 개발 분야가 있음.


    비개발자의 코딩 활용

    • 비개발자의 경우 아이디어 구현, 업무활용, 개발협업에서 코딩을 활용할 수 있음.

     

    아이디어 구현

    • 앱이나 웹사이트 제작을 통해 본인의 아이디어를 구현할 수 있음.
    • 개발을 위해서는 동업자인 개발자를 구하는 게 쉽지 않고, 본인이 개발 지식이 있어야 동업하기 수월함.

     

    업무 활용

    • 데이터 분석
    ex. 사이트 디자인 - AB테스트를 통해 데이터에 의존해서 효과적인 디자인을 선택할 수 있음.
    • 업무 자동화 : 사무직에서 반복적인 업무
    ex. 아침마다 엑셀파일 다운해서 취합하고 이메일 전송 → 파이썬으로 자동화 가능

     

    개발 협업

    • 최근 it산업이 발전하면서 소프트웨어 회사 조직에서 일할 가능성이 높음
    • it회사에 다니면 '서버, 클라리언트, 데이터베이스, API' 등의 용어를 듣게 됨.
    • 같이 일하는 직군으로 프로덕트 매니저, UX/UI 디자이너, 디지털 마케터 등이 있음.

    • PM : 팀원 대부분이 엔지니어라서 개발 지식이 있어야 함.
    • UX/UI 디자이너 : 프론트엔드 지식이 있으면 소통에 편함.

    오늘의 공부 리포트

    728x90