[Day1]개발업무의 이해 & 프로그래밍이란?

Validator·2023년 6월 12일
0

개발업무의 이해

개발사의 업무

기획 -> 개발 -> 배포 및 유지보수

기획 : 고객의 수요를 분석하고 수익성을 판단한다. 서비스의 내용, 디자인, 비즈니스 모델등을 기획한다

개발 : 기획 단계에서 만들어진 내용을 바탕으로 실제 서비스를 제작한다. 요구사항 분석 -> 설계 -> 구현 -> 테스트의 단계를 거친다. 이 때, 구현 단계는 실제로 코딩을 하는 단계라고 볼 수 있다.

배포 및 유지보수 : 개발이 완료된 소프트웨어(프로그램, 서비스)에 대해 오류 발생 시 복구, 시스템 디자인 수정, 새로운 요구사항 추가 등의 업무를 수행한다.



일반적으로 위와 같이 6단계로 구분하는 경우도 있다.


상세한개발 단계별 산출물


다양한 개발 직군

개발자의 직군은 크게 5가지로 나눌 수 있다.

  1. 프론트엔드
    프론트엔드는 웹 혹은 앱 사용자가 직접 상호작용을 하게되는 부분이다. 글꼴 및 색상부터 시작해서 UI/UX까지, 말 그대로 보이는 부분을 담당한다. 사용자가 볼 수 있는 화면을 보통 client라고 부르는데 이러한 client를 구현하는 개발자를 프론트엔드 개발자라고 한다.
  2. 백엔드
    쉽게 이해하자면 '눈에 보이지 않는 부분'을 담당한다고 볼 수 있다. 프론트엔드의 기능만으로 웹사이트가 완성되는 것이 아니다. 프론트엔드 자체를 가능하게 만드는 것이 백엔드 기술이다. 서버, 응용프로그램 및 데이터베이스를 다루는 것을 백엔드 개발자라고 한다.
  3. 데이터베이스
    사용자 정보, 서비스 정보, 관리자 정보 등 다양한 정보를 관리하는 장소를 DB라고 한다. 사용자가 수천~수만명을 넘어가게 되면 효율적으로 정보를 관리할 필요가 생긴다. 이런 데이터를 관리하는 개발자를 데이터 개발자라고 한다. 최근 AI 기술의 발전에 따라, 수 많은 데이터를 관리하고 가공하는 새로운 직무분야가 주목 받고 있다.
  4. 임베디드
    임베디드 개발자는 임베디드 시스템을 개발하는 일을 주로 한다. 한국의 큰 사업들을 예로 들면, 낸드 메모리에 들어가 있는 Firmware, 기계(자동차) 시스템 제어를 위한 미들웨어, 방산 업체에서의 무기 조작 시스템, 공장을 운영하는 스마트 펙토리 시스템 개발 등이 있다.
    (임베디드란? : 임베디드 시스템은 기계나 기타 제어가 필요한 시스템이나, 특정 기능을 수행하는 컴퓨터 시스템이다. 즉, 기기의 전체 장치의 일부분으로 구성되고 제어가 필요한 시스템을 위한 지휘자 역할을 하는 컴퓨터 시스템이다. 대표적으로 냉장고의 온도 조절 및 디스플레이 작동과 스마트 티비 내에서 리모컨으로 TV 조작을 수행하고 스마트 티비 플랫폼을 작동시키는 모습을 볼 수 있다.)
  5. 보안
    정보관리의 핵심 기술은 보안 분야의 솔류선, 백신 제작 등을 담당하는 직무이다. 컴퓨터 바이러스 발생이나 해커의 침입에 대비해 방화벽을 구축하고, 바이러스에 감염됐을 때 감염 경로를 찾거나 문제를 해결하는 일을 한다.

+)블록체인 개발자
블록체인 개발자는 일반적으로 서비스 개발자/코어 개발자/데브옵스 엔지니어로 나눌 수 있다. 서비스 개발자에는 프론트, 백엔드, dApp 개발자로 나눌 수 있을 것이다. 코어 개발자는 스마트 컨트랙트가 동작하기 위한 플랫폼을 만드는 개발자이다. 블록체인에 대한 깊은 이해와 수준급의 CS 지식을 갖춰야하는 직무이다. 데브옵스 엔지니어링은 블록체인 개발에서 빼놓을 수 없는 중요한 요소이다. 데브옵스 엔지니어는 거래소, 노드 벨리데이터(ex. DSRV), De-Fi 운용 회사(ex. Ozys)등에서 활발히 채용하고 있다.



프로그래밍이란?

코더와 프로그래머의 차이란?

코더

일부 코드를 작성할 수 있는 사람
프로그래머나 개발자보다 알고리즘 지식이 부족한 경우가 많으며, 한가지의 코딩 언어에만 능숙한 초보자인 경우가 많다.
일반적으로 개발자가 위임할 수 있는 날 것의 코드를 작성하는 업무를 수행한다.코드몽키
일부는 주니어 개발자와 같은 의미로 사용되기도 한다.

개발자 또는 프로그래머

두가지의 단어는 종종 같은 의미로 사용된다.
적어도 두세가지의 언어를 능숙하게 다루고 오류가 없고 깨끗한 코드를 작성한 경험이 많은 코드 작성자이다.
알고리즘 지식을 활용하여 보다 정교한 수준의 코드를 생성할 수 있다.

소프트웨어 엔지니어

주변에서 볼 수 있는 코더 중 가장 높은 수준이다.
세가지 이상의 프로그래밍 언어에 익숙하고 그 기술을 사용하여 프로그램의 아키텍처를 설계 및 구현한다.
결과물을 모듈화하여 깨끗한 인터페이스를 개발하고 또다른 개발자, 또는 코더와 협력하여 설계를 더 세밀하게 구성한다.
엔지니어라는 위치는 대개 특정 학위가 있거나 엔지니어링 지식이 있고 시스템을 설계할 수 있는 개발자임을 의미한다.

실제로 코더와 프로그래머의 사전적 의미차이는 거의 없다. 다만, 채용시장 및 개발현업에서 용어의 의미가 일부 변질되어 사용되고 있는 것이다. 두 단어의 어감에서 오는 차이의 본질은, 단순히 코딩(타이핑)을 하는 것이 개발자의 전부가 아니라는 것이다. 많은 프로젝트 경험과 탄탄한 CS 지식의 기초를 갖추어 스스로 사고 할 줄 아는 능동적인 개발자가 되야한다는 것이다.


프로그래밍 언어의 종류

프로그래밍 언어란?

프로그래밍 언어는 컴퓨터에게 명령이나 연산 등 사람이 원하는 작업을 컴퓨터가 수행할 수 있게 기계와 의사소통(지시) 할 수 있도록 해주는 언어를 말한다. 한 마디로 컴퓨터에게 일을 시키기 위한 언어라고 볼 수 있다.
프로그래밍 언어는 정해진 규칙에 따라 기계적으로 작업을 처리하고 자료나 프로그램의 복잡한 구조를 구현할 수 있다는 특징을 가지고 있다. 또한 시간의 흐름에 따라 활용이나 개념 등이 바뀔 수 있다는 점에서 가변적이기도 하다.

프로그래밍 언어의 분류 기준

프로그래밍 언어 종류는 700개가 넘을 만큼 다양하다. 그만큼 분류 기준이 다양하지만 보통은 ‘컴퓨터와 인간의 언어 중 어디에 더 근접한가’ 에 따라 저급, 고급 언어로 분류한다. 컴퓨터(기계)가 쓰는 기계어에 가까울수록 ‘저급 언어’ 로 분류하고, 사람이 쓰는 자연어에 가까울수록 ‘고급 언어’ 로 분류한다.
저급 언어에는 기계어와 어셈블리어가 대표적으로 있고, 고급 언어는 기계어와 어셈블리어를 제외하고는 대부분의 개발 언어가 포함된다. 저급언어를 Low level 언어라고 하고, 고급언어를 High level 언어라고 한다.



인터프리터 언어 vs 컴파일 언어

인터프리터(interpreter)는 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램을 말한다. 인터프리터 언어는 소스 코드를 한번에 기계어로 변환하는 컴파일러와 달리, 컴파일 하지 않고 소스 코드를 한 줄씩 읽어들여 실행한다. 컴파일 하는 과정이 없기 때문에 컴파일 하는 시간은 소요되지 않으나, 인터프리터 언어는 실행파일을 별도로 생성하지 않기 때문에 실행시마다 인터프리트 과정이 반복 수행되어 실행 속도가 느리다는 단점이 있다.
인터프리터 언어의 종류
Python, Javascript, Ruby 등이 있다.

컴파일러(compiler)는 고급 언어로 작성 된 소스 코드를 저급 언어로 번역하는 프로그램을 가리킨다. 여기서 고급 언어는 사람이 이해하기 쉽도록 작성된 프로그래밍 언어로 C, C++, JAVA 등이 이에 속한다. 저급 언어는 컴퓨터 내부에서 바로 처리 가능한 프로그래밍 언어로 기계어와 어셈블리어 등이 이에 속한다.

컴파일러 언어는 컴파일러를 통해 컴파일 타임에 전체 소스 코드를 한 번에 기계어로 변환 후 실행파일을 만든다. 컴파일러 언어는 컴파일 단계와 실행 단계가 각각 분리되어 있으며, 컴파일은 단 한번만 수행한다. 실행은 실행 파일을 실행시킴으로써 할 수 있으며, 실행시에는 컴파일 과정을 거치지 않고 실행만 하면 되므로 코드 실행 속도가 빠르다. 단, 프로젝트의 규모가 클 경우 컴파일 시간이 오래 걸릴 수 있다는 단점이 있다.
컴파일러 언어의 종류
C, C++, C#, JAVA 등이 있다.

0개의 댓글