[Day 5-6] 4/23~24 (토픽3) 프로그래머의 세계 이해하기

sonffani·2021년 4월 22일
1
post-thumbnail

~4/23 오전 4:28까지
컴퓨터 개론 - <토픽3> 프로그래머의 세계 이해하기 - 프로그래밍의 다양한 분야 - 03. 프로세스 관리
~ 4/24 오전 3시
<토픽3> 프로그래머의 세계 이해하기 완강

프로그래밍의 다양한 분야

컴퓨터 사이언스의 기본기

객체 지향 프로그래밍 + 알고리즘 + 자료구조
컴퓨터 구조/운영 체제/컴파일러/웹개발/데이터베이스/네트워크

소프트웨어 공학

소프트웨어를 활용한 공학
소프트웨어로 제품/서비스를 만드는 방법에 대한 학문

기획 + 제작 + 테스트 + 출시 + 사후 관리

프로세스 관리

협업하는 방식

폭포수

각 단계를 완료하고 다음 단계로 넘어가는 방식
문제점 : 각 단계를 한번에 완벽하게 끝내기 힘들 수 있음
수정사항이 많이 생길 가능성이 높고, 개발

애자일
(= 재빠른, 민첩한)

결과물을 만들어 미리 확인하고 수정하며 진행
실제 동작하는 소프트웨어로 확인하면서 소통,
중간중간 사용하면서 발전시키기 때문에 기능 변경에 유연함
스크럼 + 칸반 같은 구체적인 방식
https://pineoc.github.io/study/study/agile-study/Scrum-Kanban.html

버전 관리

git : 버전 관리를 하는 소프트웨어
github : git을 이용해 코드를 저장하는 온라인 저장 공간

개발자의 필수 프로그램 IDE

Integrated Development Environment
ex. 제트 브레인이 만든 Intelli j?, 이클립스 재단이 만든 이클립스, 마이크로 소프트가 만든 비쥬얼 스튜디오

개발자들이 많이 쓰는 프로그램들

그 외 유용한 프로그램들

프로젝트 관리 툴인 Jira, Trello, Asana, Confluence
메신저인 Slack, Skype, Jandi
디자인 협업 툴인 Sketch

StackShare에 가면, 개발자 혹은 개발팀에서 사용하는 다양한 툴을 찾아볼 수도 있음

QnA

Answer
보통 jupyter 는 데이터 사이언스 분야에서 때 많이 사용하고, vs code 는 사용 가능한 언어 범위가 넓은 IDE 보다는 편집기에 가깝습니다.
pycharm 은 파이썬에 특화된 IDE 이구요.
vs code 만으로도 다 사용가능하겠지만, 강의에서 사용하는 편집기나 IDE로 일단 배워보시고 나중에 필요에 따라 편한 편집기나 IDE를 사용해보시면 좋을 것 같아요.
그리고 쥬피터에서는 콘솔에서 출력될 실행결과들이 셀 아래에 출력되게 됩니다. 이렇게 코드마다 결과를 확인할 수 있는 걸 인터렉티브 환경이라고도 부르는데,jupyter notebook 을 사용하는 큰 이유 중 하나가 될 것이에요

트렌드를 읽는 능력

프로그래밍은 선택의 연속

같은 용도의 프레임워크와 라이브러리가 여러개 있음
중간에 새 프레임워크로 바꾸는 건 어렵고 되돌리기 어렵다.
첫 선택을 신중하게 해야함
이미 만들어진 틀 안에 코드를 작성하는 것이라서 기존 내용 모두 버리고 새롭게 만들어야 될 수 도
(프레임워크, 라이브러리, 프로그래밍 언어, 디자인 패턴, 스타일 가이드)

인기가 줄어드는 기술로 선택하면 트렌드 뒤떨어진 방식으로 코딩한다고 여겨지게 됨
고지에 올라가려면 스스로 판단할 수 있는 능력 길러야
프로그래머로서 흐름을 읽는 방법을 배워봅시다.

트렌드를 읽는 방법Ⅰ (활발한 기술)

활발한 기술 = 좋은 기술
얼마나 활발한지?
선순환 (좋은 언어, 좋은 커뮤니티, 좋은 자료)
코딩하다 어떤 에러가 생겼을때 많은 사람이 사용하면 즉시 해결 가능, 이미 히스토리도 많으니까
stackoverflow, quora 에서 확인 가능
ex. 에러 메세지 복붙해서 확인
Redmonk 에서도 확인 가능

트렌드를 읽는 방법Ⅱ (인정받는 기술)

블로그와 커뮤니티에 내 지식을 공유함
뛰어난 고수 개발자 & 좋은 기업
상의 끝에 내려진 결정이라 참고하면 좋음
StackShare
언어/프레임워크/라이브러리/기술 확인 가능
기술 스택이라고 함
기업에서 만들거나 지원하는 기술
리액트 - 페이스북
앵귤러 JS - 구글
GO - 구글에서 만들어진 언어
자바- 오라클
스위프트 - 애플
다양한 자료 살펴보기
미디엄, 레딧, 쿼라, 네이버, 카카오, 우아한에서도 자기네 자료를 공유

트렌드를 읽는 방법Ⅲ (유망한 기술)

얼마나 유망한지?
산업의 추세가 바뀜
ex. 아이폰 스마트폰, 안드로이드 스마트폰, 윈도우 스마트폰, 블랙베리 폰
개발자의 실력과 관계 없이 산업적인 이유로 추세가 바뀔 수 있다는 것!내가 아무리 뛰어난 개발자여도, 블랙베리 개발자면 내 개발이 잘 안쓰이게 됨
늘 귀를 열어둬야해
시야를 넓게
Gartner 자료와 같은 동향 파악이 중요


ex. 최근 등장한 핫한 사이트/스타트업들은 웹사이트 기반 - 핵심 언어 : 자바스크립트 인기 (ex. 에어 비앤비, 스택쉐어, 미디엄, 핀터레스트 등)

트렌드를 읽는 방법 정리 노트

프로그래밍에서는 라이브러리나 프레임워크, 심지어 프로그래밍 언어 등 선택을 해야 할 일이 많은데요.
이런 선택들은 대부분 되돌리기 어려운 결정일 뿐 아니라, 선택지가 너무 많기도 하고, 또 빠르게 바뀌기 때문에 선택하는게 쉽지 않은데요. 올바른 선택을 하기 위해서는 트렌드를 읽고 스스로 판단할 수 있는 능력을 길러야 합니다.

트렌드를 읽는 방법으로 총 3가지를 소개해 드렸는데요.

활발한 기술
인정받는 기술
유망한 기술
3가지를 소개해 드렸는데요. 하나씩 정리를 해보겠습니다.

1. 활발한 기술
좋은 언어, 좋은 프레임워크, 좋은 기술은 사람들이 많이 사용합니다.
많은 사람이 사용하면, 커뮤니티 혹은 좋은 자료와 문서들이 많이 만들어 집니다.
좋은 자료와 문서를 통해, 다시 더 많은 사람들이 기술을 사용하게 됩니다.
좋은 기술이 활발해지기도 하고, 활발한 기술이 좋은 기술이기도 합니다.
활발한 기술은 좋은 자료도 많고, 코딩을 하다 에러가 생겼을 때 인터넷에 질문을 올리면 답이 훨씬 빨리 달리기 때문에 빠르게 배우고 빠르게 문제를 해결할 수 있습니다. 혹은, 이미 똑같은 질문이 올라와서 좋은 답변이 달려있는 경우도 많을 겁니다.

2. 인정받는 기술
잘 모를 땐, 대세를 따르는 것도 하나의 방법인데요.
회사에서 선택한 기술은, 뛰어난 개발자들의 많은 고민과 상의 끝에 내려진 결정입니다.
물론 규모나 목적에 따라 더 적합한 기술이 무엇인지 달라질 수도 있겠지만, 참고하면 좋습니다.

StackShare에 보면, 여러 회사들이 사용하는 언어, 프레임워크, 라이브러리, 기술 등을 알 수 있습니다. 참고로 이렇게 하나의 회사에서 사용하는 기술들을 모아서 “기술 Stack”, “Tech Stack” 이라고 많이 표현합니다.

뿐만 아니라 기업에서 직접 만들거나 관리하는 기술도 있습니다.
예를 들어, React는 페이스북에서, AngularJS는 구글에서 관리를 하고 있죠.
Java는 오라클의 소유이고, Swift는 애플에서 Go는 구글에서 만들어진 언어입니다.

이렇게 든든한 지원군이 있으면, 그 기술이 더 안정적으로 성장할 가능성이 높습니다.
항상 그런 건 아니지만, 기술적으로 앞서가기 위해, 각 회사에서 자신의 기술 발전을 위해 노력할테니까요.

3. 유망한 기술
산업의 추세가 변화함에 따라, 내가 쌓은 기술에 대한 이해나 경험의 활용도가 변하기도 합니다. 산업의 변화에 따라 개발자의 실력과 관계 없이 입지가 늘어날 수도, 줄어들 수도 있습니다. 기술을 선택할 때는 이 점을 고려해야 합니다.
따라서 단순히 프로그래밍 관점에서의 트렌드만 파악할 것이 아니라, IT 혹은 산업 전반에 대한 이해를 가지고 판단해야 더 정확하게 판단할 수 있습니다.
IT 산업 전반에 대한 이해는 꾸준한 조사와 공부가 필요합니다. IT 산업은 워낙 변화의 속도가 빠르기 때문에, 늘 귀를 열어두어야 하죠. 가트너라는 회사에서는 매년 10대 전략 기술 트렌드를 발표합니다.

제목만 봐서는 잘 모를 수도 있는데, 검색해 보면 이 내용을 풀어서 설명해주는 자료들도 많이 있습니다.
이런 자료들에 귀를 늘 열고, 산업과 기술이 어떻게 흘러가고 있는지 넓은 시야를 갖는 것이 필요합니다.

꿀팁 노트 : 프로그래머에게 영어는 필수인가요?

많은 분들이 궁금해 합니다.

“프로그래머에게 영어는 필수인가요?”
“프로그래머는 영어를 얼마나 잘해야 하나요?”

하나씩 살펴봅시다.

프로그래머에게 영어는 필수인가요?
아마 이번 챕터를 통해 이미 느끼셨을 것 같지만, 프로그래머에게는 영어가 필수입니다.

프로그래밍 분야는 워낙 빠르게 변화하기 때문에, 정보를 빨리 그리고 수시로 접하는 것이 중요합니다.
그런데 그 정보들은 대개 영어로 이루어져 있죠.

프로그래밍 커뮤니티, 질문과 답변, 블로그, 공식 문서 등이 모두 영어로 되어 있고, 심지어 Python, JavaScript 등의 프로그래밍 언어 문법도 영어를 사용하고 있으니까요.

그 내용들이 한글로 번역되길 기다렸다가 정보를 접하면, 이미 늦을 수 있습니다.
그리고 충분히 많은 자료가 번역되지도 않고요. 번역 과정에서 오역이 있을 수도 있습니다.

따라서 정보들을 직접 수시로 접해야 하고, 그러기 위해서 영어는 필수입니다.

그 뿐 아니라 실질적으로 코딩을 하면서 에러들도 많이 생길텐데, 이 에러의 원인을 빨리 찾고 해결하는 과정도 영어로 이루어집니다. 여러분이 더 빨리 코딩을 하고 싶다면, 영어를 할 줄 알아야 합니다.

프로그래머는 영어를 얼마나 잘해야 하나요?
물론 잘 하면 잘 할 수록 좋을 겁니다.
하지만 프로그래머에게 꼭 필요한 능력은 듣고 말하는 회화 능력보다는, 쓰고 읽는 능력이 훨씬 더 중요합니다. 그 중에서도 읽기 능력이 가장 중요합니다. 빠르고 정확하게 영어를 읽을 수 있는 능력이요!

프로그래밍의 개념 중에는 추상적인 것들도 많기 때문에, 한글로 읽어도 쉽지 않은 경우가 많습니다.
이런 경우, 그 설명을 정확하게 이해할 수 있어야 합니다.
또한 워낙 많은 자료가 있기 때문에, 어떤 내용이 더 확실한지를 파악하기 위해 빠른 속도로 훑어봐야 하는 경우도 있고요.

그래서 영어 공부를 무작정 하는 것보다는, 필요한 능력에 집중해서 실력을 기르는 것이 더 효율적일 겁니다.

아마 프로그래밍을 하다 보면 영어 문서나 커뮤니티, 블로그 등을 읽어야 하는 상황이 자주 올 텐데, 그런 내용들을 계속 스스로 읽으려고 노력해 보세요! 모르는 단어가 나오면 계속 찾아보고요. 그렇게 직접 꾸준히 부딪혀보면, 점점 영어가 더 늘고 익숙해지실 겁니다.

QnA

Answer
지금 현재 무엇을 하고 있고, 무엇을 하고 싶은지에 따라 다른 것 같습니다.

내가 현재 회사에서 웹서비스개발 프로젝트를 진행 중이며, 사이드 프로젝트를 다른 동료들과 함께할 기술을 고려하는 상황이라면

유망한 기술을 고려해보는 것이 좋겠죠?

이왕이면 업무에도 도움이 될 분야로 쪽으로...

위 사례라면 최근에 좋은 평가를 받는 Svelte 같은 것을 고려해보는 것이 좋겠습니다.

취업 준비 등을 위해 내가 할 수 있는 기술의 폭을 넓히기 위해서라면

타겟 회사의 목표로 한 팀 내에서 자주 사용할 것 같은 기술을 사용해야하니...활발하며, 인정받는 기술을 고려하는 것이 좋을 것입니다.

예를 들면 웹서비스 개발을 위해선 React, NextJS 기술을 익히는 것으로요.

만약, 내가 배우는 중이라면 Git 과 같은 어디서나 사용하고 기본기를 다질 수 있는 기술 을 트렌드를 보는 시야보다 우선해야할 것입니다.

취미 생활중이라면 마음에 가는 것부터 잡아보는 것이 좋습니다.

주제자체가 절대적인 기준이 없는 것이라...답이 만족스러우셨을지는 모르겠습니다.

profile
판교 어떤 IT회사에서 일하는 중. 개발 도전기 💪🏻

0개의 댓글