본문 바로가기
도서

[도서] 비전공자를 위한 이해할 수 있는 IT지식 by 최원영

by doo_ 2024. 2. 7.

[이 책은]

- 기획자로 일하던 저자가 개발자와 커뮤니케이션하는 과정 속에서 겪은 어려움에서 시작된 책이다.

Q. 비전공자인 기획자(혹은 디자이너 등)가  IT산업에서 일하기 위해서는 'C언어, 자바, 파이썬 등' 프로그래밍 언어를 배워야 하는가?

A. 답은 '아이다'다. 가장 먼저 필요한 건 '커뮤니케이션'이다.

- 이 책은 비전공자들에게는 어려웠던 각각의 IT지식들을 이해하기 쉽게 풀어내준다. 적어도 개발자와 대화는 할 수 있도록, IT 산업 전체적인 큰 그림을 그릴 수 있도록 도와준다.

[배운점]

IT관련 공부는 하고 있지만 용어에 관해서는 가볍게 여기다 보니 용어들에 대해 잘 이해하고 있지 않았었다.

이 책을 통해서 커뮤니케이션에 있어서는 잘 알아둘 필요성을 느꼈으며, 이 책이 확실히 IT 용어들을 이해하기 쉽게 설명해줘서, 이번 기회에 용어들을 정리할 수 있는 좋은 시간이였다.

 

> "완벽한 기획에서 출발해선 안 됩니다. 왜냐하면 6개월, 1년 뒤에도 완벽한 모습이라고 장담할 수 없으니까요."

- 점진적 발전만 있을 뿐

 

비전공자를 위한 이해할 수 있는 IT 지식 - 예스24

우리는 매일 스마트폰으로 메시지를 보내고, 컴퓨터로 일을 한다. 또 음식점에서 키오스크로 주문하고, 가상현실에서 게임을 즐긴다. IT는 더 이상 전문가들만의 이야기가 아니다. 우리의 삶 곳

www.yes24.com

[배운 내용]

더보기

2장. 프로그래밍 언어 & 운영체제(OS)

> 컴파일러 : like 번역기

> 통합 개발 환경 (IDE : Integrated Development Eviroment)

- 코딩에 편리한 기능들을 제공 ex. 한컴,MS, vscode, anaconda 등

> 컴퓨터 친화적인 언어 일수록 '저수준 언어' 인간 친화적인 언어 일수록 '고수준 언어'

- 고수준 일수록 컴퓨터의 작업량이 많아져 용량이 커짐, 즉 저수준의 언어를 사용할수록 컴퓨터 용량을 적게 차지

> 컴퓨터 구성 요소

- CPU : like 작업자

- 메모리 : like 작업 공간

- 보조기억장치 : like 창고

> 운영체제(OS : Operating System)  : like 관리자

- 과거에 종류가 다양했으나 지금은 PC -> Window, Mac OS / Mobile -> iOS, Android 만 살아남음

- 운영체제마다 사용하는 언어가 다름

Window : Visual Basic, C++, Python, Javascript

Mac OS, iOS : Objective-C, Swift

Android : JAVA, Kotlin

+) 비전공자가 다음과 같은 말을 듣는 이유 

- C부터 배워봐. 컴퓨터를 이해하는 데 좋아

becoz : 다른 언어들보다 C언어는 저수준 언어(컴퓨터 친화적)

- 자바부터 배워봐. 써먹을 곳이 많아

becoz : 운영체제에 독립적인 언어(so, 많은 소프트웨어가 자바 언어로 개발되어 옴)일 뿐만 아니라 안드로이드에서도 사용할 수 있을 만큼 넓은 사용 범위

- 파이썬부터 배워봐. 그게 쉬워

becoz : 파이썬은 인간친화적인 고수준의 언어

> 개발자 : 프로그래밍 언어를 통해 운영체제(Window, 맥 OS, iOS, Android) 위에 돌아가는 소프트웨어를 개발하는 사람

 

3장. 네트워크, 클라이언트, 서버

> LAN(Local Area Network) -> MAN(Metropolitan) -> WAN(Wide)

> IP주소 (IPv6) : 위치에 따라 컴퓨터에 따라 고유

> 클라이언트(프론트 엔드) : 파일을 달라는 컴퓨터_서버에 요청하는 일

> 서버(백 엔드) : 파일을 주는 컴퓨터_클라이언트 요청에 응답하는 일

> 서버 프로그램에서 사용하는 운영체제(OS) : 리눅스

정리) 서버는 데이터를 주는 컴퓨터 - 데이터를 주기 위해서는 프로그램이 필요(로그인, 주문내역, 검색 등) - 프로그램을 돌리기 위해서는 운영체제가 필요 - 서버는 윈도우나 Mac이 아닌 리눅스 운영체제를 씀

 

4장. API와 JSON

> API : 

- 클라이언트가 서버에 요청을 하면 서버는 요청에 따라 적합한 처리를 해서 응답을 줌. 하지만 컴퓨터는 요청이 어떤 요청인지 모름. ex. 로그인인지, 메시지를 보내는 요청인지

- 이러한 요청들을 구분할 수 있도록 하는 체계를 API라고 함

> API를 만들 때 CRUD (Create Read Update Delete) 관점에서 만들어야 함

- 데이터를 다룰 때 큰 틀에서 보면 대부분 요청이 이 CRUD 4가지 요청에 속함

- 그런데 CRUD별로 각 주소를 구성하다보면 관리하기가 어려워짐

> RESTful API : 위 문제를 좀 더 체계적으로 관리하고자 나온 체계

- Create : POST

- Read : GET

- UPDATE : PUT(전체) or PATCH(일부)

- DELETE : DELETE

> API에서 응답에 대한 반응에 관한 체계

- 잘 응답한 경우 : 200번대 코드

- 요청에 문제가 있는 경우 : 400번대 코드 ex. 404 에러코드

- 서버에 문제가 있는 경우 : 500번대 코드

> SDK(Software Development) 소프트웨어를 개발할 때 도움을 주는 다른 소프트웨어를 말한다. 보통 다른 회사와 협업할 때 듣는 용어.

ex. 자사의 소프트웨어에 구글 지도 기능을 넣을 때 사용

>  JSON

- {}중괄호로 시작해 key와 Value로 이루어진 형식

- '클라와 서버는 요청과 응답을 주고받고, 그때 필요한 데이터들을 JSON 형식으로 주고 받는다." 맥락만 이해하면 된다.

 

6장. 웹(Web)

1. HTML, CSS, JavaScript

> HTML : Hyper Text Markup Language

- 서로 다른 운영체제나 프로그램 사용으로 인한 문제로 어느 운영체제나 프로그램 상관없이 동일한 형식의 필요성

- so, 일정한 형식으로 작성된 문서 HTML

- HTML은 프로그래밍 언어가 아니며 단지 브라우저가 볼 수 있는 문서를 적는 언어

> CSS : Cascading Style Sheets

- 글자로 정보 전달하는 것에서 더 나아가 디자인적인 요소에 대한 니즈

- so, 디자인을 입힐 수 있는 코드가 CSS

> JavaScript

- 웹이 널리 쓰이게 되면서 더 나아가 또 다른 기능을 원하는 니즈

- so, 필요한 기능을 개발할 수 있도록 프로그래밍 언어 역할을 하는 JavaScript

2. 브라우저

> 크롬, 익스플로러, 파이어폭스, 오페라, 사파리 등 다양

> 각 브라우저의 계속된 업그레이드로 '브라우저 버전의 파편화'문제

- 브라우저에 따라 그 안의 구현 방식이 다름

3. 반응형 웹

> PC, 스마트폰, 태블릿 등 마다 화면 크기가 달라 과거에는 PC용, 모바일용 버전 웹 페이지를 따로 만들어 작업해왔음

- 이는 CSS 작업이 중복되는 문제를 야기

> so, 브라우저의 가로 넓이에 '반응'하여 구성 요소가 변하는 기술

- 그러면 CSS코드들은 그대로 두고 레이아웃 위주로 나눠 작업하기만 하면 된다.

- 다만, 그만큼 그 작업에 관한 비용이 크다.

4. 하이브리드 애플리케이션

> 웹과 어플리케이션이 혼합된 어플리케이션을 말함

- 자바 코틀린 등으로 개발한 어플리케이션 특정 부분에 브라우저를 올리는 방식

> 웹 진영에서는 어떤 변화가 이뤄지고 있는지, 어플 진영에서는 어떤 변화가 이뤄지고 있는지 바라볼 필요가 있음

 

7장. 데이터베이스와 이미지 처리

> 관계형 데이터베이스(RDB)

- 수많은 데이터(이름, 성별, 생일, 주소 등)들을 따로 따로 관리하게 되면 엄청난 비효율

- 수많은 데이터들을 한 곳에서 관리하는 방법론 like Excel

> 관계형 데이터 베이스 관리 시스템(RDBMS)

- 관계형 데이터베이스 철학으로 만들어진 관리 시스템

- MS SQL, Oracle DB, MySQL 등이 있다.

> 이 데이터는 어디에 있는 데이터인가요??

-  개발 결과물만 보고 이건 클라이언트에 있는 데이터, 서버에 있는 데이터 구분 지을 순 없다.

- 회사 사정에 따라, 개발자의 상황에 따라, 개발 단계에 따라, 기능의 특성에 따라 모두 달라진다.

- 하지만 거의 모든 답이 들어 있는 것이 API문서

> 서비스의 어떤 데이터들을 서버에서 불러오는지, 어떤 데이터들이 클라이언트에 있는지 구분하는 것은 중요하다

- 이유는 정확한 사람에게 정확한 요청을 하기 위해서다.

- "그 데이터는 로컬에 있어요" "내부 DB에 저장하고 있어요" "네이티브에서 가져온 건데?"란 말이 들린다면, 이건 모두 클라이언트에 데이터가 있다는 표현이다.

- 반대로 API요청, DB는 서버에 데이터가 있다는 표현

- 두 곳 모두에 데이터가 있는 경우도 있다. ex. 에버노트_동기화 설정

8장. 프레임워크와 라이브러리

- 개발자들에게 필요한 도구

> 프레임워크

- 개발자들이 개발에 있어 쉽고 빠르게 개발할 수 있도록 일종의 틀, 프레임워크를 제공

> 라이브러리

- 특정 기능을 수행하는 짜여진 코드들의 모음, pandas numpy matplotlib

 

9장. 협업, 소스관리, 디자인

> 깃(Git) : 소스코드의 버전관리

- 커밋(Commit) : 수정 사항을 반영, 커밋과 커밋사이에는 누가 언제 어떻게 바꿨는지 알 수 있으며, 이전에 커밋한 부분으로 이동할 수도 있다.

- 브랜치(Branch) : 기존 브랜치에는 영향을 주지 않고 이어서 새롭게 가치을 쳐서 작업을 할 때

- 머지(Merge) : 각각의 브랜치에서 작업한 코드들을 합칠 때 사용

> 깃허브 : 원격저장소

> 개발자와 디자이너간 협업 -> 불편함을 줄이고자 나온 것이 피그마, 재플린, XD 등

- 협업을 위해서는 서로의 분야에 대한 공부가 필요