블로그 포스팅을 오랫동안 하지 못해서 유입이 많이 줄었지만, 오늘은 제가 출간한 두번 째 책을 소개해보도록 하겠습니다.
책 소개
이 책을 한 줄로 정의하면 ‘개발자가 되기 위해 기본적으로 알아야 할 I T 기술, 환경에 관한 넓고 얕은 지식’이다. 어렵게 머리를 싸매고 읽어야 하는 부담스러운 IT 책이 아닌, 개발자가 알아야 하는 꼭 필요한 개념과 용어를 인문 도서처럼 술술 읽을 수 있게 설명하였다. 개발자가 되기 위해 알아야 할 것은 두꺼운 책에나 쓰여 있는 딱딱한 지식이 아니다. 문제를 찾아 해결하기 위한 일련의 과정과 그 속에서 필요한 ‘키워드’와 ‘개념’이다. 이 책은 언어, 프레임워크, 디자인 패턴, 개발도구, 클라우드 등등 넓고 얕은 지식을 통해 검색하는 능력을 키우고 해결하고자 하는 문제를 스스로 찾아갈 수 있도록 도움을 줄 것이다.
해당 책은 개발에 대한 넓고 포괄적인 개념을 포함하고 있습니다. 인문학 도서처럼 쉽고 가볍게 읽으면서 개발에 대한 개괄을 잡으려고 하는 취업 준비생, 기획자, 디자이너, 현업 개발자 등을 위해 쓰여졌습니다.
목차
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장을 마치며
부록. 개발용어 정리 찾아보기
전체적으로는 개발의 로드맵과 프로그래밍 언어를 선택할 때 주의할 점, 네트워크, 운영체제, 데이터베이스 등을 얕게 소개하고 있지만 이해하기 쉽도록 비유와 풀어서 쓴 설명이 주를 이룹니다.
하지만 단순히 관념적인 개발 이야기만 있는 책은 아니고, 컴퓨터 구조, 자료 구조 이론과 같이 코딩을 하면서 필요한 컴퓨터 사이언스 지식들을 얕고 이해하기 쉽게 설명해서 어떤 부분들을 더 찾아서 공부해야 하는지 길잡이 같은 책이 될 수 있도록 하였습니다.
그리고 읽으면서 헷갈리는 용어가 있을 때 부록에서 한번에 찾아볼 수 있도록 개발 용어집을 첨부하였습니다.
출간한지는 꽤 지났지만 1판 인쇄가 거의 완판 되었을 정도로 인기가 있었습니다.
정말 감사드립니다.
책을 작성할 당시에는 C언어가 프로그래밍 인기 순위 부동의 일위였는데 1,2년 정도 파이썬이 계속 1위를 차지하고 있습니다. 이런 변경사항을 이번 재판 인쇄에 수정사항에 반영하였습니다. 이렇게 개발과 프로그래밍 트렌드는 꾸준히 바뀌기 때문에 책이 계속 수요가 있어 인쇄가 된다면 꾸준히 책 내용도 시기에 맞게 업데이트할 예정입니다.