벌써..... 6월을 지나 7월이 되었읍니다....
저어는 1~2월 당당하게 자바스크립트와 혼공컴운을 수료하고 풀스택까지 하기로 맘먹었지만.....
에휴.... 제가 그렇죠 뭐.... 작심 3일로 끝나버린 .... 흑흑....
하지만 이번 7월에서는 기필코 프로그래밍 공부를 완수해보겠습니다.
풀스택으로 완성하는 프로그래밍 비전공자의 취업의 길 도전!
그에 맞게 시작하는 혼공얄코!
비전공자인 만큼 IT업계에 대한 용어 및 정리가 필요하다 생각하였고 밑바탕을 준비하면서
포트폴리오용 프로젝트도 밑바닥 기획부터 준비하면서 글을 올려보겠습니다.
저를 지켜봐 주세요 혼공족장님!
기본 숙제 :46페이지
1. 다음 중 프런트엔드 개발자가 다루는 언어가 아닌 것은?
- HTML
- CSS
- 스위프트
- 자바스크립트
- 타입스크립트
정답 : 스위프트
참고 : HTML, CSS는 프로그래밍 언어는 아니지만 마크업 "언어"로 프런트엔드에서 사용하는 언어가 맞다!
2. 다음 중 아래에 해당하는 개발자의 종류를 써보세요
로봇 청소기의 기기제어 소프트웨어 개발 ( 로봇 개발자, 임베디드 개발자)
커뮤니티 웹사이트의 회원정보를 데이터베이스에 저장하는 과정을 개발(백엔드 개발자)
윈도우용 화면 캡처 프로그램을 개발 (응용 프로그램 개발자)
디자이너가 작업한 이미지대로 웹 화면을 개발(프런트엔드 개발자)
아이폰용 사진 꾸미기 앱을 개발( IOS 앱 개발자)
운전자의 조작 없이 움직이는 자율주행 자동차 개발( 임베디드 개발자, 인공지능 개발자)
3. 다음 용어 중 가장 연관이 깊은 것 끼리 짝지으세요.
프런트엔드 개발자 - 클라이언트 개발
백엔드 개발자 - 서버 개발
모바일 개발자 - 앱 개발
4. 다음 문장 중 괄호 안에 알맞은 내용을 써보세요
(크로스 플랫폼 언어)을 사용하면 하나의 소스 코드로 안드로이드와 IOS에서 모두 동장 할 수 있는 앱을 만들 수 있습니다.
5. 다음 중 하드웨어와 가장 밀접한 프로그래밍을 하는 직군은 무엇인가요?
- 웹개발자
- 모바일 개발자
- 응용 프로그램 개발자
- 임베디드 개발자
- 보안 개발자
답 : 임베디드 개발자
57페이지 CH01-2
1. 다음 문장 중 괄호 안에 알맞은 내용을 작성해 보세요
특정 작업을 수행하기 위한 기능을 일정단위로 모듈화 한 것을 ( 라이브러리 )라 한다
2. 다음 문장 중 괄호 안에 알맞은 내용을 써 보세요
프로그램은 운영체제를 구성하는 ( 시스템 ) 프로그램, 그리고 애플리케이션이라고 불리는 ( 응용 ) 프로그램으로 나누어 수 있습니다.
3. 종이에 적힌 소스 코드를 컴퓨터에 입력하는 작업으로 가장 적합한 단어를 고르세요
- 코딩
- 프로그래밍
- 개발
- 애플리케이션
- 라이브러리
정답 : 코딩
4. 다음 중 틀린 것을 고르세요
- 프로그래밍은 코딩을 통해서만 할 수 있는 것이 아닙니다.
- 소프트웨어 완성 이후의 작업들은 개발에 포함되지 않습니다.
- 모바일 앱은 프로그램의 일종이다.
- 개발은 프로그래밍이나 코딩보다 포괄적인 과정이다.
- 프로그램에는 소스 코드가 포함됩니다.
정답 : 2번 소프트웨어 완성 이후에는 유지 보수를 하는 과정 또한 포함되어있습니다.
5. 개발 과정 앞에 순서대로 번호를 작성해 보세요
[ 3 ]구조설계 [ 5 ]테스트
[ 2 ]시스템 명세 [ 4 ]구현
[ 6 ]유지보수 [ 1 ]요구사항분석
순서 : 요구사항 분석 - 시스템 명세 -구조 설계 - 구현 - 테스트 - 유지보수이다.
추가 미션 - 개발자와 연관된 직군을 정리하기
웹개발자 - 프런트엔드, 백엔드, 풀스택
프론트엔드
주요 업무는 위 사진과 같이 디자이너와 기획자가 만들어준 화면 설계를 토대로 화면에 그대로 보이게 만들고 데이터를 받아서 화면상에 출력하거나 버튼 클릭 시 동작하게끔(ex. 로그인) 만들어주는 걸 합니다.
즉 프런트 엔드는 웹 개발에 클라이언트 부분 즉 브라우저에서 보이는 부분들을 개발하는 직군으로 딱 눈에 보이는 화면을 만들어 낸다고 보면 됩니다!
채용 공고들의 수와 내용을 분석해 보면
필수 스펙 : HTML, CSS, Javascript, Git, API개발사용 경험
선택 스펙 : React, Vue.js , Typescript, 기타 툴들(테스트를 위한 Jest, 번들링을 위한 webpack)
배달의 민족을 비롯한 회사들의 채용공고들을 쭉 본다면 대부분 HTML, CSS, Javascript, Git을 기본으로 한 프런트엔드 개발 경험과 더불어 디자인적인 경험들을 요구하고
그 외에 선택적인 부분들로 회사가 사용하는 기술에 맞게 React(사실 필수임), Vue.js 등의 프레임 워크들 그리고 툴들에 대한 사용경험, 더 나아가 웹사이트 최적화 경험까지 요구하는 것으로 보입니다.
대부분의 기업들이 React를 더 선호하는 것으로 보이며 추가적으로 한다면 Typescript 그리고 TDD나 최적화 경험을 요구합니다.
백엔드
위 사진에서 처럼 JWT 토큰을 발급, 검증하고 클라이언트에게 응답하고 데이터를 주고받는 과정 즉 웹 서비스에서 사용되는 서비스 로직들을 개발하고 유지보수하는 것으로 보면 됩니다.
필수 스펙 : 프로그래밍 언어( java, python 등등), 웹 프레임워크 ( Spring, Django 등등), SQL 언어(mysql....) , Git, 알고리즘
선택 스펙 : 클라우드 서비스에 대한 이해(AWS, Azure), CI/CD(Jenkins, Git action), Dorker, 기타 툴 사용경험, 대규모 트래픽 경험
어우야... 공부할게 많아 보입니다.
대부분의 신입을 원하는 스펙이 프로그래밍과 웹 프레임워크 이해부터 RDBMS(mysql 같은), 클라우드 서비스에 사용되는 리눅스 그리고 대망의 1차 시험.... 수문장 알고리즘이 되시겠습니다...
요 알고리즘 통과 못하면 면접이고 뭐고 없으니 공부해야 합니다. (많은 분들이 파이썬으로 공부하심)
또한 최근에는 AWS와 같은 클라우드를 많이 사용하고 Dorker와 같은 애플리케이션 그리고 CI/CD 자동 배포 시스템들을 많이 우대해 주니 공부.... 해야.....겠죠....
대부분 회사들은 JAVA와 Spring 그리고 AWS를 선호하는 것으로 보이니 이걸로 공부하고 추가로 가고 싶은 회사가 있다면 따로 공부하는게 좋아보입니다.
풀스택
위의 검색으로 풀스택 직군을 봤으나 대부분이 경력을 요구하는 회사들이 많았고 신입이라고 하더라도 요구하는 게 좀 많습니다....
그래서 생각해보면 하나만 마스터하기도 힘든데 풀스택....? 저같은 초보자들에겐 택도 없는 직군이겠네요.
이건 경력이 있는 분들을 말하는 직군인 거 같고 프론트에서 백엔드로 또는 백엔드에서 프론트로 넘어가서 일을 해보신 분들에게 적합한 직군인거 같네요.
모바일 개발자 -- IOS개발자, 안드로이드 개발자, 크로스플랫폼 개발자
IOS개발자
앱 개발자의 경우 웹화면 UI를 개발하듯이 위 사진의 건강 애플리케이션처럼 앱 화면을 만들어 준는 개발자입니다.
다만 핸드폰 기기에 따라 안드로이드 개발자, 아이폰개발자로 나누어지는 거고요 추가로 크로스플랫폼 앱 개발자도 있기도 합니다.
IOS개발자의 경우 무조건 맥북과 아이폰이 필수로 강제되며(마이 머니!) MacOS용 언어인 Swift를 익히고 xcode를 통해 하나하나 배워가면서 앱 UI들과 라이브러리들을 학습하는 게 중요할 거 같습니다.
필수 : 맥북 , swift언어 학습, Git, 포트폴리오
안드로이드 개발자
안드로이드 개발자의 경우 IOS개발자와 마찬가지로 앱 화면을 개발합니다.
안드로이드의 경우 두 가지 언어(Java, Kotlin) 중 하나를 선택하고 안드로이드 스튜디오를 통해 앱을 만들어보면서 학습하고 핸드폰에 하나하나 띄어보면서 포트폴리오를 구성하고 지원해야하는거 같습니다.
언어 : JAVA , Kotlin, Git, 포토폴리오
크로스플랫폼 개발자
크로스 플랫폼의 양대 산맥 React native와 Flutter입니다!
지원서류 양으로 봐서는 둘 다 비슷비슷한 거 같지만 아직은 React native가 우세하니 React공부하면서 React native도 해보는 것도 괜찮을거 같습니다.
크로스플랫폼 개발은 맥북을 필요로 하지만 필수는 아닙니다!
물론 나중에 UI나 라이브러리가 아이폰에서 안 돌아갈 수도 있지만 어쨌든 동작은 할 테니 우리 작은 윈도우 노트북으로 안드로이드 스튜디오로 개발이 가능하니 이 얼마나 좋습니까,
React native의 경우 javascript를 기반하여 만들어지기 때문에 웹 개발공부하고 나서 React native도 같이 해볼 수 있습니다.
Flutter의 경우는 Dart라는 언어를 새로 배워야 하지만 최신 버전에서는 Flutter 만으로도 웹&앱 개발이 동시에 가능해져서 많이 유용해 보입니다.
다만..... 크로스 플랫폼 앱의 경우 성능이 그리 좋진 않아서 대기업이나 성능이 중요한 앱에서는 잘 쓰이지 않습니다.
아무래도 앱 개발의 경우 빨리빨리 그리고 인원수 적게 개발해야 하는 경우에만 크로스플랫폼을 사용하다 보니 스타트업들이 많습니다.
대기업을 노린다면 IOS나 안드로이드 개발자를 목표로 공부합시다.
필수 스킬 : Flutter or React native , git,
선택 스킬 : IOS ---신기하게 우대사항에 IOS앱 개발경험이 많이 보입니다.
응용 소프트웨어 개발자
응용소프트웨어 개발자는 위와 같은 리브레 오피스 같은 사무용, 가정용, 산업용 소프트 웨어를 만드는 개발자입니다.
응용 소프트웨어의 경우 분야가 워낙 넓어 콕 집어 어떻게 설명해야 할지 모르겠습니다.
일단 기업이나 기계에 필요한 소프트웨어들을 , 대략 네비게이션 또는 시뮬레이션 시스템, ERP와 같은 회사시스템 구축까지 다양한 분야가 있으며 각 회사마다 솔루션을 개발하는 경우가 있고 하청을 받아 개발하는 경우가 있습니다.
위의 스펙의 경우 한 중소기업의 필수 스펙들만 적어놓은 사진이며 기업이 가진 솔루션이나 원청에 따라 다양한 스펙이 요구됩니다.
필수 스펙 : C언어계열, JAVA, 알고리즘,
선택 스펙 : GIS 또는 금융, 반도체와 같은 기타 등등의 전문적인 도메인 지식, 가끔 보이는 matlab, labview,
대부분 윈도우에서 동작하는 프로그램을 개발하기 때문에 C, C++, C#과 같은 C언어 계열의 프로그래밍 언어와 JAVA 공부를 하는 것 같고(약간씩 python, rust 사용) 그 외의 알고리즘이나 GIS 그리고 수학적인 지식 또는 통신 관련 지식등 다양한 도메인의 지식들을 필요로 합니다.
예를 들어 자율주행 자동차 시뮬레이터를 만들려고 한다면 인공지능에 대한 지식도 필요로 하겠지만 추가로 GIS와 같은 지식들도 필요하겠죠?
임베디드 개발자
위의 응용소프트웨어 개발자와 비슷하지만 임베디드는 하드웨어를 더 깊숙이 공부합니다.
특히나 ARM기반 STM32에 대한 MCU개발, 리눅스 커널이라던지 하드웨어와 관련된 개발이 많이 보이며 기계에 사용하는 MCU가격을 최소로 하기 위해 메모리가 작고 속도가 빨라야 하기에 C, C++을 이용한 개발들이 많이 한다고 합니다.
필수 스킬 : C, C++, 리눅스 사용법, MCU와 센서 같은 하드웨어적 지식
선택 스킬 : 네트워크 통신 지식, 인공지능 지식, 컴퓨팅 비전 지식 등등 의 도메인 지식
opencv나 컴퓨팅 비전, 센서 또는 자동차 네트워크 통신등의 내용들이 있는 걸로 봐서는 굉장히 어려워 보이네요.
--- 대부분의 경우 ARM기반 STM32 보드를 공부한 경험을 요구합니다.
지원하고 싶다면 개발보드를 가지고 포트폴리오를 만들어야 합니다.
인공지능 개발자
최근 가장 핫한 직군, chatgpt 이후로 미친 듯이 돈을 빨아먹는 그야말로 IT계의 블랙홀!
신입만 1020건을 뽑아요 와우!. 어마어마합니다 (물론 다른 직군이 섞여서 그렇긴 하지만요)
하지만 AI신입을 뽑는 경우에는 여러분이 아는 Chatgpt를 이용하여 서비스하는 것이 아닌 직접 LLM모델이나 CNN모델과 같은 인공지능 알고리즘을 설계하고 학습시키는 신입을 뽑는 겁니다.( 포스코 채용공고 참조)
그렇기에 대부분 신입의 경우 이미 대학원에서 공부하고 넘어오는 석사 또는 논문 그리고 대회우승자와 같은 괴물분들이 지원하는 분야입니다....
그렇다면 저 같은 응애 개발자가 원하는 AI개발은 어디로 가야 할까요? -- 백엔드로 가시면 됩니다.
밑에 사진처럼요
데이터베이스 개발자
보통 DBA라고 불리는 직군으로 신입에서 바로 채용되기보단 백엔드나 풀스택 직군에서 직접 데이터베이스를 몇 년간 만져보고 그다음 전문화된 데이터베이스 개발자로서 직군을 바꾸는 것으로 보입니다.
이 직군에서 가장 중요한 점은 데이터베이스 관리용 툴들을 보면서 최대한 오류들이나 병목현상들을 해결하고 성능을 튜닝하는 역할이라 하는데 저는 모르겠습니다.
일단 저는 도전도 못해보는 직군인 걸로....
보안 개발자
웹 서비스 중 악의적인 공격이나 유명한 DDOS 공격이 들어오는 걸 확인하고 처리하는 보안 엔지니어입니다.
사실 이 분야를 잘 모르겠습니다..... 어떻게 해야 취업할 수 있는 거지?
다만 굉장히 어려워 보이며 쉘스크립트와 파이썬을 우대사항으로 쓰이는 걸 보니 리눅스를 잘 써야 할 거 같고
해킹공격의 유형들을 많이 공부해야 될 거 같습니다.
클라우드 엔지니어
AWS나 네이버 클라우드 같이 Public Cloud를 운영하는 회사에서 인프라를 구성하고 시스템을 운영하는 인프라 엔지니어분들을 말하면 보통 데이터 센터에 들어가는 하드웨어들과 네트워크 그리고 사용되는 운영체제들을 관리하고 운영하는 직군입니다.
이러한 인프라 엔지니어분들의 경우 따로 네트워크, 서버, 스토리지, 쿠버네티스와 같은 기초적인 스킬들을 필요로 하고 특히 리눅스에 대한 경험을 많이 우대하는 게 보입니다.
Devops
개발자들이 코드를 올리면 이를 자동적으로 검토하고 배포하는 시스템을 구성하는 개발자를 Devops라고 합니다.
보통 중소기업의 경우 백엔드 개발자가 담당을 하고 중견 이상의 회사들에서 자동적으로 배포환경을 구성하고 안정적인 클라우드 사용을 위해 직군을 채용하는 것으로 보입니다.
위 사진의 경우에도 AWS와 같은 공용클라우드 사용하기 위해 설계하고 자동적으로 배포, 운영하는 업무 내용을 볼 수 있습니다.
필수 스킬 : 리눅스 사용법, Public Cloud 아키텍처 설계 경험, CI/CD 툴 사용경험, 모니터링 도구 사용경험, 웹 배포경험
추가 스킬 : 대규모 트래픽 경험, 네트워크 및 인프라 지식
후우.... 모든 직군을 둘러봤네요.... 생각보다 굉장히 많은 직군들이 있고 다양한 스킬들을 필요로 하네요
몇몇 개는 제가 취업하기 불가능해 보이는 직군도 있고요.( AI, DBA, 풀스택)
아무튼 일단 저는 프런트 & 백엔드를 목표로 달려보려고 합니다.
우선 기본 프로젝트들로 포트폴리오를 채우고 협동 프로젝트를 하나 구성해서 혼공단분들과 해보고 싶네요.
'컴퓨터 사이언스 > 혼공얄코' 카테고리의 다른 글
[혼공얄코] 3주차 미션 (4) | 2024.07.23 |
---|---|
[혼공얄코] 2주차 미션 (1) | 2024.07.15 |
[혼공얄코] 인공지능과 자연어 처리에 관하여 (0) | 2024.07.11 |
[혼공얄코] - 기획부터 개발까지 02 - 기능정의서 (0) | 2024.07.10 |
[혼공얄코] 기획부터 개발까지 01 - 요구사항분석 (0) | 2024.07.09 |