에뛰드 블로그
article thumbnail

🩷 01-1 개발자는 대체 뭐하는 사람인가요?

개발자 : 컴퓨터가 이해할 수 있는 언어로 무에서 유를 창조하고 누군가 이해할 수 있도록 작성하는 일을 수행

개발자의 직군은 사용하는 프로그래밍 언어, 개발 툴로 나뉘게 된다.

 

🩵 웹 개발자

  • 웹사이트 개발하는 개발자

🤍 웹 퍼블리셔 / UI 개발자

  • 웹사이트에서 보이는 부분을 담당하는 개발자
  • 해외에서는 UI 개발자라고 부름
  • 주로 사용하는 언어 : HTML, CSS, JavaScript (주로 사용 X)
  • 웹사이트의 외적 요소를 코드로 구현하는 역할

🤍 프론트엔드 개발자

  • 프로그래밍 요소를 개발하는 개발자
  • 사용자에게 보여줄 웹사이트 화면을 만듬
  • 웹사이트의 다양한 기능이 실행되도록 프로그래밍함
  • 클라이언트 개발자라고도 부름
  • 공부해야할 언어 : HTML, CSS, JavaScript

🤍 백엔드 개발자

  • 웹사이트에서 눈에 보이지 않는 요소 개발
  • 서버개발자라고도 부름
  • 데이터베이스에 저장되는 정보 입출력, 데이터 분석과 가공, 로그인 등 보안요소 등 개발
  • 사용언어 : JavaScript, 파이썬, PHP, 자바 등 다양한 언어 사용
    • 백엔드 프로그램을 만들 수 있게 도와주는 프레임워크 있음

🤍 풀스택 개발자

  • 프론트엔드와 백엔드 관련 지식 모두 갖추어 개발할 수 있는 개발자
  • 소기업이나 스타트업에서 필요로 하는 개발자
  • 혼자 웹 서비스 전체를 개발할 수 있는 사람을 의미함

 

🩵 모바일 개발자

  • 스마트폰에서 동작하는 어플리케이션 개발
  • 앱 개발자라고도 함

🤍 안드로이드 개발자

  • 안드로이드 기반의 모바일 앱을 개발
  • 2017년 이후부터는 코틀린 주로 사용

🤍 ios 개발자

  • 아이폰과 아이패드의 모바일 앱을 개발
  • 스위프트 사용

🩵 게임 개발자

  • 게임의 전체적인 구조를 설계해서 게임이라는 결과물을 만드는 직군
  • 게임 진행을 위한 알고리즘, 물리 엔진 구현, 3D 그래픽 렌더링, 서버 관리 등 게임의 모든 구성 요소 다룰 수 있어야함
  • 프로그래밍, 컴퓨터, 수학 등 여러 분야에 걸쳐 깊은 지식과 높은 숙련도 요구
  • C++, C#을 주로 사용

 

🩵 응용 소프트웨어 개발자

  • PC용 프로그램을 개발하는 사람 지칭
  • 윈도우 프로그램 : C++, C# 사용
  • 맥 프로그램 : 스위프트
  • 운영체제, 컴퓨터 구조, 소프트웨어 공학에 관한 지식 필요

🩵 임베디드 개발자

  • 하드웨어 작동을 프로그래밍하는 직군
  • 임베디드 시스템
    • 기계 또는 기타 제어가 필요한 시스템을 제어하는 컴퓨터 시스템
    • 임베디드 소프트웨어 개발자
      • 하드웨어 체제 개발, 작동시킬 소프트웨어 개발하는 일을 하는 직군
      • C언어, C++, 어셈블리어 사용

🩵 정보 보안 전문가

  • 데이터 도난이나 손상을 차단하고 컴퓨터 시스템을 보호하는 일을 하는 직군
  • 프로그래밍, 네트워크, 컴퓨터 구조, 운영체제 등 컴퓨터 공학 전반에 걸친 지식 필요

 

🩵 AI 개발자

  • 인간의 사고와 학습같은 지적 능력을 컴퓨터를 통해 구현하는 직군
  • 머신러닝 개발, 딥러닝 개발로 구분할 수 있음

 

🩷 01-2 코딩과 프로그래밍, 앱과 프로그램

개발 : 개발자가 하는 일, 프로그래밍 또는 코딩이라고도 부름

 

🩵 코딩

소스코드 : 컴퓨터에 어떤 명령을 내리기 위해 컴퓨터가 이해할 수 있는 언어로 작성한 정보

코딩 : 소스코드를 작성하는작업

코더 : 컴퓨터가 처리할 수 있는 명령어로 코드(부호)를 작성하는 사람을 지칭

설계문 : 작업을 어떻게 수행할 것인지 알려주는 코드

명령문 : 컴퓨터에 각종 지시를 내리는 코드

주석 : 각 코드가 어떤 내용인지 개발자가 쉽게 알아볼 수 있도록 설명해 주는 코드 

 

🩵 프로그래밍

프로그래머 : 개발할 프로그램에 어떤 기능을 추가하고, 어떤 방식으로 구현할지 미리 계획할 수 있어야 함


순서도 : 일을 처리하는 과정을 순서대로 도식화 한 것

 

알고리즘 : 어떤 순서로 할지, 발생할 수 있는 상황은 무엇이고 그에 따라 어떤 행동을 할지, 어떤 과정을 몇 번 반복할지 등을 설계하는 것

프로그래밍 : 알고리즘을 프로그래밍 언어로 작성하는 과정

소스코드 : 프로그래밍하여 만들어진 결과물

 

 🩵 개발

개발 : 코딩이나 프로그래밍 외에 좀 더 많은 요소가 결합되어 있음.

 

6가지의 단계로 개발자의 업무를 정리하자면 

  1. 요구 사항 분석
  2. 시스템 명세
  3. 구조 설계
  4. 구현
  5. 테스트
  6. 유지 보수

로 되어 있다.

 

개발자의 업무를 자세히 살펴 보자면, 

  1. 프로그램 코딩하며 소프트웨어를 만듬
  2. 서비스가 제대로 작동하는지 모니터링
  3. 기존 소프트웨어의 문제점이나 비효율적인 부분들을 찾아 개선
  4. 데이터베이스 체계를 구축하는 것
  5. 개발 과정을 자동화하고 설계를 문서로 정리하는 것

이 외에도 더 있으며, 이 업무 모두 소프트웨어 개발에 있어 중요한 부분이다. 

 

🩵 소프트웨어 vs 프로그램 vs 애플리케이션

🤍 소프트웨어와 프로그램

하드웨어 : 컴퓨터 본체, CPU, 메모리 등 눈에 보이고 만져지는 부분

소프트웨어 : 프로그램, 라이브러리, 데이터 등으로 눈에 보이지 않는 부분 

 

데이터 : 정보

라이브러리 : 어떤 일을 수행하기 위해 필요한 기능을 일정 단위로 묶은 것

프로그램 : 모든 과정을 수행할 수 있도록 만든 것

 

소프트웨어 : 프로그램, 데이터, 라이브러리 뿐만 아니라 모든 것을 아우르는 것

 

🤍 애플리케이션

애플리케이션 : 응용 프로그램, 어플 또는앱이라고 흔히 부름

시스템 프로그램 : 운영체제를 구성하는 소프트웨어. 원활히 사용할 수 있는 환경 제공

응용 프로그램 : 각각 목적에 따라 직접 실행하여 활용할 수 있는 프로그램

 

🩷 01-3 프로그래밍 언어도 외국어인가요?

🩵 프로그래밍 언어

프로그래밍 언어 : 사람과 컴퓨터 사이에 정교하고 풍성한 소통 수단을 위해 만들어진 것

 

🩵 프로그래밍 언어가 다양한 이유

  • 다양한 요청과 수요에 따라 계속해서 새로운 프로그래밍 언어가 만들어짐
  • 과거에 비해 편리하면서도 오류 발생이 적고 더 강력한 기능을 갖추게 됨

🩵 고수준 언어와 저수준 언어

기계어 : 0과 1만으로 이루어진 언어

고수준 언어 : 사람의 언어 (자연어) 에 가까운 언어

저수준 언어 : 기계의 언어 (0과 1) 에 가까운 언어

어셈블리어 : 하나의 명령에 한 가지 동작밖에 할 수 없는 아주 단순한 언어

 

🤍 컴파일 언어

  • 프로그램을 마친 뒤 코드 전체를 미리 기계어로 번역 (컴파일) 한 다음 실행 파일을 생성해서 실행하는 언어
  • 컴파일이라는 과정 때문에 전체 개발 시간 늘어남
  • 오류로부터 비교적 안전하고 프로그램 실행 속도 빠름

 🤍 인터프리터 언어

  • 작성된 코드를 한 줄 한 줄 통역하면서 실행되는 언어
  • 신속하고 유연한 개발 과정이 필요한 소프트웨어에 사용됨

 

 

🤍 IDE

 통합 개발 환경 : 개발자들이 잘못된 코드를 작성하지 않도록 도와주는 프로그램 (Integrated Development Environment)

코드를 편리하게 실행할 수 있을 뿐만 아니라 각 기능을 쉽게 테스트하고 오류가 나는 원인을 친절하게 알려주어 개발을 빠르게 할 수 있도록 도와줌

 

  • 이클립스
    • 자바 프로그래밍에 많이 사용되는 도구
    • 비영리 재단에서 교육용으로 만들어 무료로 사용가능
  • 인텔리제이
    • 이클립스와 비슷한 용도로 사용되며, 더 강력한 기능을 가지고 있음
    • 모든 기능 사용하려면 유료 정기 구독권 따로 구매해야 함
  • 파이참
    • 젯브레인스에서 개발한 소프트웨어
    • 파이썬 개발에 특화된 IDE
  • 안드로이드 스튜디오
    • 안드로이드 개발용 IDE
  • 엑스코드
    • 애플이 개발한 IDE
    • 맥에서만 사용 가능
    • 스위프트를 사용하여 아이폰 앱이나 맥용 프로그램을 만드는데 사용됨
  • 비주얼 스튜디오
    • 마이크로소프트에서 제작한 IDE
    • 윈도우 프로그램부터 온라인 서비스 등 다양한 소프트웨어 개발에 사용됨
  • 비주얼 스튜디오 코드
    • 마이크로소프트에서 제작한 IDE
    • 광범위한 종류의 개발에 사용되는 도구
    • 가벼운 코드 편집 위주의 기능만 포함하기 때문에 정확하게 말하면 코드 에디터로 구분됨
    • 원하는 플러그인을 추가해서 용도에 맞는 IDE로 구성할 수 있음

 

🩷 01-4 디버깅 중인데, 빌드 해 보고 이상 없으면 릴리스할게요

 

🩵 디버깅

디버그 : 주로 오류 수정 프로그램과 그 작업을 통칭하는 단어

디버깅 : 오류를 찾아 제거하는 행동, 개발에 많은 부분을 차지하고 있기 때문에 놓쳐서는 안될 중요한 작업

 

🩵 빌드

빌드 : 소스 코드를 비롯한 모든 프로그램 구성 요소를 모아 실행할 수 있는 파일 또는 파일 묶음을 만드는 과정

 

🩵 빌드 번호와 버전 번호

🤍 빌드 번호

빌드 번호 : 출시되기 전 프로그램 버전

디버그 빌드 : 제품 개발하는 동안 오류나 기능을 테스트하기 위해 빌드하는 것

릴리스 빌드 : 모든 개발이 끝난 후 배포하기 직전에 점검하는 베타 버전

 

 🤍 버전 번호

버전 번호 : 제품을 출시할 때 제품마다 매기는 번호

  • 이미 출시한 버전을 변경하려면 새로운 버전을 만들어 배포해야함

🩵 배포

배포 : 빌드를 마친 실행 가능한 파일을사용자가 접근할 수 있는 환경에 배치하는 것 

 

🩵유지보수

유지보수 : 프로그램 개발 뒤 이어지는 버그 대응 및 기능 업데이트 등의 후속 작업

 

🩵 리팩토링

리팩토링 : 코드를 개선해서 읽기 쉽고 효율적인 좋은 코드로 만드는 작업


결과는 바꾸지 않으면서 코드를 더 아름답게 리모델링하는 것을 말함

 

🩵 코드 리뷰

코드리뷰 : 각각 맡은 부분을 프로그래밍하여 만든 후 동료 개발자들과 함께 코드를 확인하고 의견을 주고받는 것

 

코드리뷰의 이점

  • 작성자가 발견하지 못한오류를 동료가 발견하여 사전에 문제를 방지할 수 있음
  • 노련한 선임 개발자는 신입 개발자가 짠 코드에서 미숙한 부분을 찾아 지도해 주고, 신입 개발자는 선임 개발자가 짠 코드를 통해 실전 지식을 습득할 수 있음
  • 띄어쓰기 방식이나 함수와 변수에 사용하는 용어를 통일해서 소스 코드를 좋은 가독성과 일관된 스타일로 유지 가능

코딩 컨벤션
변수의 이름을 짓는 법, 코드 줄을 맞추는 법과 같이 팀 또는 회사에서 정한 코딩 스타일 규약

 

🩵 문서화

주석 : 코드 중간에 달아놓은 설명


주석
코드에 영향을 미치지 않고 코드 설명을 위한 메모

 

문서화 : 소프트웨어를 사용할 사람들, 이를 수정, 개선하는 등 작업을 이어 나갈 사람들을 위한 설명서

profile

에뛰드 블로그

@MISU 미수

매일 1px씩 성장하는 개발자입니다! 성장하면서 알게 된 저의 지식을 공유하기 위한 블로그입니다

검색 태그