책소개
이 책을 한 줄로 정의하면 ‘개발자가 되기 위해 기본적으로 알아야 할 I T 기술, 환경에 관한 넓고 얕은 지식’이다. 어렵게 머리를 싸매고 읽어야 하는 부담스러운 IT 책이 아닌, 개발자가 알아야 하는 꼭 필요한 개념과 용어를 인문 도서처럼 술술 읽을 수 있게 설명하였다. 개발자가 되기 위해 알아야 할 것은 두꺼운 책에나 쓰여 있는 딱딱한 지식이 아니다. 문제를 찾아 해결하기 위한 일련의 과정과 그 속에서 필요한 ‘키워드’와 ‘개념’이다. 이 책은 언어, 프레임워크, 디자인 패턴, 개발도구, 클라우드 등등 넓고 얕은 지식을 통해 검색하는 능력을 키우고 해결하고자 하는 문제를 스스로 찾아갈 수 있도록 도움을 줄 것이다.
저자소개
고려대학교 인공지능학과 석사과정 재학 중
건국대학교 컴퓨터공학과 소프트웨어학부 졸업
전) 경기도 지역협력연구센터(GRRC) AI 연구원
전) 테크투어 스타트업 라이크어로컬 Data Scientist
전공 과정 및 크고 작은 프로젝트를 통해 습득한 Computer Science 지식을 이해하기 쉽게 전달하기 위해 개발 블로그를 운영 중이며, 개발자만을 위한 개발 문화가 아닌 다양한 사람들과 함께하는 개발 문화를 만들어가는데 관심이 많다. <백견불여일타 Node.js로 서버 만들기 입문>(2021, 로드북)을 집필하였다.
목차
저자 서문 이 책을 소개합니다 1장. 개발자들은 뭔가 다르던데, 개발 문화_1. 매력적인 직업, ‘개발’ __‘개발’이라는 직업이 매력적인 이유 __‘개발’이라는 직업이 어려운 이유 __그래서 ‘개발’을 잘 하려면 어떻게 해야 하죠? __재능과 열정 없이도 코딩하는 사람들 _2. 소프트웨어 개발팀과 개발자와의 소통 __소프트웨어 개발 프로젝트를 위한 팀 __좋은 개발 문화 __애자일 방법론 __개발자에게 소통 능력이 필요한 이유 __개발자가 소통하는 법 _3. 개발 포지션 선택과 각 포지션별 로드맵 __개발 포지션을 선택할 때 고려해야 할 점 __개발 포지션 종류 __포지션 로드맵 1장을 마치며 2장. 프로그래밍 언어, 뭐가 이렇게 많아?_1. 좋아하는 언어를 선택하는 것이 아니다 __인기 있는 프로그래밍 언어 __인기 있는 언어를 선택하는 것이 아니다 __사용 목적에 따라 언어를 선택해야 한다 __좋아하는 언어를 선택하는 것이 아니다 __어떤 프로그래밍 언어를 선택해야 할까 _2. 고급 언어와 저급 언어? __고급 언어 vs. 저급 언어 __컴파일러 __인터프리터 언어 vs. 컴파일 언어 _3. 객체지향, 절차지향, 정적타입, 동적타입, 이게 다 무슨 말이지? __프로그래밍 언어 패러다임 __정적타입 언어 vs. 동적타입 언어 _2장을 마치며 3장. 라이브러리 프레임워크, 그냥 툴인가요?_1. “갖다 쓴다”는 말이 무엇인가요? __프로그래밍 세계에서 컨닝은 나쁜 것이 아니다 __오픈소스 문화 __오픈소스에 기여하기 __오픈소스 소프트웨어 라이선스 _2. 라이브러리와 프레임워크의 차이점 __라이브러리, 프레임워크, 툴, 플랫폼, 대체 뭐가 다른가? __라이브러리 종류 __프레임워크 종류 _3. 개발자가 사용하는 ‘툴’(feat. IDE) __IDE __협업툴 __기타 개발 관련 툴 _3장을 마치며 4장. 같은 결과, 다른 소스코드_1. 소스코드는 다른데, 왜 결과는 같을까? __가독성이 좋지 않은 코드의 문제점 _2. 좋은 소스코드는 무엇인가?(feat. 클린 코드) __나쁜 코드 __좋은 코드(클린 코드) __클린 코드의 주요 원칙 __리팩토링이란? __리팩토링은 언제, 어떻게 해야 할까? _3. 대문자, 소문자 그게 뭐가 그렇게 중요한가?(feat. 컨벤션) __코딩 컨벤션이란? _4. 디자인 패턴과 모듈화 그리고 마이크로 서비스 __디자인 패턴이란? __디자인 패턴의 원칙 __디자인 패턴의 종류 _4장을 마치며 5장. 컴퓨터를 물리적으로 바라보자_1. 소스코드를 돌릴 때 컴퓨터에서 일어나는 일 __컴퓨터 구조란? __프로그램이 실행될 때 일어나는 일 _2. 컴퓨터는 결국 0과 1을 계산해 줄 뿐이다 __2진수와 10진수 __컴퓨터는 왜 2진수를 사용하나? __두 가지 상태로 어떻게 컴퓨터는 많은 일을 처리할까? _3. 자료구조, 왜 중요할까? __자료구조란? __자료구조의 종류 __알고리즘과 시간 복잡도 __자료구조와 알고리즘, 왜 중요할까? _5장을 마치며 6장. 운영체제, 네트워크, 데이터베이스_1. 윈도우즈, 맥, 우분투, 운영체제 이야기 __운영체제란? __커널은 배 위의 선장이다 __운영체제의 제어 단위 __운영체제의 운용 기법 __운영체제의 3대장-윈도우즈, MacOS, 리눅스 _2. 눈에 보이지 않는 네트워크 이야기 __네트워크란? __인터넷은 실제로 어떻게 연결되는 것일까? __OSI 7계층 __인터넷과 네트워크는 같은 말인가? _3. 정보들은 모두 어디에, 데이터베이스 이야기 __데이터베이스란? __DBMS __관계형 데이터베이스와 SQL __관계형 데이터베이스가 아닌 것은 무엇일까? __NoSQL의 종류 __SQL vs. NoSQL _6장을 마치며 7장. 웹 서비스와 앱 서비스_1. 웹이냐 앱이냐 그것이 문제로다 __웹 서비스 __앱 서비스 __웹 개발을 배울까, 앱 개발을 배울까? _2. 웹 개발자가 알아야 하는 것들 __웹 개발자가 알아야 하는 요소들 _3. 앱 개발자가 알아야 하는 것들 __앱 개발자가 알아야 하는 요소들 __웹과 앱 개발자가 되기 위해서 필요한 것 _4. 데브옵스 개발자가 알아야 하는 것들 __데브옵스의 탄생 __데브옵스 개발자란? __데브옵스 개발자가 되기 위해서 필요한 것 _7장을 마치며 8장. 깃은 선택이 아닌 필수_1. 형상 관리, 대체 뭘 관리한다는 걸까? __소프트웨어에서 형상이란? __형상 관리란? _2. 버전 관리 시스템 종류와 비교 __중앙집중식 모델(CVCS) __분산 모델(DVCS) __깃과 깃허브는 뭐가 다르지? __왜 깃을 사용해야 하는가? _3. 깃 튜토리얼 __초기화, 스테이징, 커밋, 되돌리기 __깃 브랜치: 같은 파일로 여러 버전 만들기 __깃 브랜치 사용법 __깃허브와 연동하기 __충돌 해결하기 _8장을 마치며 9장. 클라우드와 분산환경_1. 내 서버가 미국에 있다고? 클라우드 이야기 __클라우드 컴퓨팅이란? __내 서버가 미국에 있다고? __클라우드 서비스 종류 __구름 속에 숨겨진 위험 _2. 언제, 어떤 클라우드를 사용해야 할까? __AWS vs. 애저 vs. GCP __시장 점유율이 가장 높은 AWS _3. 데이터 하나가 서버 10대에? 분산 환경 이야기 __분산 컴퓨팅이란? __분산 컴퓨팅을 사용하지 않는 이유 _9장을 마치며 10장. 성장하는 개발자가 되기 위한 필요충분 조건_1. 혼자서 개발하는 방법 __성장을 위한 필요충분 조건 _2. 함께 개발하는 방법 __개발자에게 네트워킹(인맥)은 중요할까? __함께 개발하는 방법은 무엇인가? _3. 다들 어떻게 개발 관련 뉴스에 빠삭하지? __개발 소식을 큐레이션 형태로 제공하는 뉴스레터 서비스 __IT 기업의 기술 블로그 __기타 _4. 개발자와 이직 __개발자의 첫 단추 __잡 호핑? __어필 포인트를 만들자 _10장을 마치며 11장. AI, 메타버스, 블록체인, 미래의 개발자는?_1. AI와 빅데이터의 시대? __빅데이터, 인공지능으로 무엇을 할 수 있을까? __데이터 관련 직군 __인공지능, 머신러닝, 딥러닝 _2. 메타버스와 웹 3.0 __웹 3.0이 창조하는 새로운 생태계 _3. 블록체인, NFT __블록체인 __NFT __블록체인, 메타버스 개발자? _11장을 마치며 부록. 개발용어 정리 찾아보기