내 마음대론 선정한 프로그래머 필독서 50선(20160211)
내가 추천하는 프로그래머 필독서 50선
누군가 정리해서 공유에 공유를 거듭한 "프로그래머 필독서 64선"을 보고, '원서가 너무 과하다'는 생각을 하게 되었습니다. 그래서 내 마음대로 정리한 "프로그래머 필독서 50선"을 정리해보았습니다.
선정된 책은 국내 서적을 기준으로 작성되었고, 읽어본 책을 최대한 반영해서 선정하였습니다. 그렇기 때문에 원서에 대한 평가는 없으며 누군가 원서가 더 좋다고 하더라도 '그럴능력 없고/그러고 싶지 않기' 때문에 원서에 관련된 내용은 '/dev/null'로 리다이렉션 하기로 결정했습니다.
요약하면, 내 마음대로 '필독선 50선(ver. 20160211)' 입니다.
이 책은 컴퓨터라는 '오브제(objet)'에 대한 가장 '아름다운' 스토리를 전해준다. 그리고 '찰스 펫졸드'라는 브랜드로 구현된 '스토리'는 '필독서'가 된다.
국내에선 '열혈강의 C (윤성우)'가 절대적인 지지와 호응을 받고 있음에도 불구하고, 이 책을 권하는 이유는 C언어를 하드웨어적인 입장에서 해설하고 있다는 점이다. 그리고 YouTube를 통한 저자의 강의도 곁들일 수 있다. 이 책을 다 읽고 다른 C책을 찾는다면 "C 언어 프로그래밍 - 2판, Brian W. Kernighan, Dennis M. Ritchie (지은이), 김석환 (옮긴이), 대영사"를 권한다.
이 책은 '프로젝트'를 중심으로 C언어를 해설하고 있는 책이다. 쉽게 말해서 C언어로 아주 간단한 '전화번호부'에서 조금 복잡한 '테트리스'등을 만든다. C언어 문법'만' 배웠다면 추천한다. 그리고 문법책은 이제 그만보고 이 책으로 '코딩'하는 연습을 꼭 해보길 권한다.
이 책은 추상자료구조(ADT)를 사용해서 기본적인 자료구조를 설명한다. C언어 문법과 간단한 토이 프로그램을 끝냈다면 이 도서로 마무리 하면 될 듯 싶다. 그리고 이 책은 컴파일 되는 '소스코드'를 제공한다. 국내에 출판된 자료구조 도서 중에서 가장 좋다고 생각한다.
C++을 공부해야 한다면 이 책을 추천한다. 왜냐하면 이 책은 프로그래밍을 다루고 있고, 2015년에 에이콘 출판사에서 The C++ Programming Language (Fourth Edition)은 C++을 해설하고 있기 때문이다. 그리고 이 책은 '프로그래밍'이란 관점에서 읽어도 충분히 많은 것을 배울 수 있다.(만약 '언어적 사유'가 필요하다면 'TCPL'을 권하겠지만, 정말로 '사유'가 필요한지 고민해 보자.)
이 책은 '학술적'이지 않은 '알고리즘' 책이다. 다른 알고리즘 책과 비교해서 이 책은 코드가 '컴파일'되고 해설이 쉽고 간략하다. 그리고 문제와 해답이 같이 있기 때문에 입문용으로 좋고, 알고리즘의 변용에 대해서 다양한 관점을 제공한다. 학술적인 책으론 'TAOCP'를 권장하고 싶다.
이진수로 '플레이' 할 수 있는 가장 원초적인 놀이를 소개하고 있다. 이 책의 가장 큰 장점은 직관력을 높여준다는 점이다. 그리고 컴퓨터의 원리에 대해서 좀 더 고민해 볼 수 있는 기회를 제공한다. C언어 개발자라면 '하드웨어'적인 접근을 위한 아주 기초적인 트릭을 배울 수 있다. 기승 전 bit를 외치게 될 것이다.
- 자바의 신 VOL.1 : 기초 문법편, 이상민 (지은이), 박재성, 김성박 (감수), 로드북 / 자바의 신 VOL.2 : 주요 API 응용편, 이상민 (지은이), 박재성, 김성박 (감수), 로드북
국내 자바 교재 중에서 가장 훌륭한 책이라 생각한다. 만약 2권 중 1권만 구매해야 하다면 2권을 구매해서 읽어보길 권한다.
네트워크 프로그래밍을 배운다기 보다는 자바의 'I/O'를 좀 더 깊게 생각할 수 있다. 그리고 자바 초급 문법을 가볍게 정리할 수 있는 가장 좋은 기회를 제공하고, 조금 'Advance'한 주제(Thread?)를 다뤄볼 수 있는 기회가 될 것이다.
자바를 자바답게 사용하기 위한 최소한의 매뉴얼이다. 이 책을 통해서 자바의 관례와 용례를 배울 수 있고, 자바 언어의 스펙을 좀 더 깊게 이해할 수 있는 기회가 될 것이다.
이 책을 읽은 개발자가 C++을 사용하지 않을 순 있지만, C++ 개발자인데 이 책은 안 읽은 사람이 있겠는가? 그리고 C++ 표준이 변경됨에 따라서 Modern한 'Effective'를 읽길 권한다.
컴퓨터 하드웨어, 정확히는 CPU에 대한 내용을 그림을 통해서 설명한다. 책이 출판된 시기가 있기 때문에 조금 지난 기술을 소개하고 있지만, 현대의 컴퓨터 아키텍처 혹은 CPU가 어떻게 '발전'했는지 쉽게 알 수 있다.
연습문제만 다 풀면 가볍게 8비트 CPU 하나 설계 할 수 있다. 이 책은 그런 책이다. 연습문제를 다 풀어야 되는 그런 책이다.
32bit 이상의 컴퓨터 하드웨어를 이해하기 위한 가장 좋은 책이다. 연습문제까지 꼼꼼하게 풀어보길 권한다. 컴퓨터 구조에 관한 책은 이 한권이면 충분하다. 아니, 넘친다.
운영체제 개론서이다. 다른 운영체제 책에 비해서 번역이 잘 되어 있다. 연습문제 꼼꼼하게 풀자. 개발자의 밑천이다. 흔히 '공룡책'이라고 부른다.
역사와 시간을 거슬러 '프로그래밍'이 어떻게 변화되고 발전했는지 알 수 있다. 모든 내용을 코드를 통해서 설명하고 있기 때문에 직관적이고 실용적이다. 그리고 주제가 매력적이다. 파이썬으로 구현할 수 있는 거의 모든 형태의 프로그래밍 '구조'를 접할 수 있다. 좋은 책이다. 다 같이 파이썬을 배우자!
MS에서 PM을 지낸 지은이의 경험을 엿 볼 수 있다. 컬럼 형식으로 되어 있어서 읽기도 쉽고, 분량도 적당하다. 세상의 모든 개발집단은 이런 고민을 한다. 우리도 한다. 그리고 여러분도 하고, 이제부턴 해야 한다.
이 책은 프로그래밍의 전 영역을 간략하게 소개한다. 특히 팀 빌딩을 마치고 다 같이 읽어보면 좋은 책이다. 그리고 지은이가 커닌핸, 롭 파이크 두 사람이기 때문에 믿고 읽어보자. 만약 두 사람을 모른다면 구글에 검색 '고!고!'
단언하건데 '패턴' 책은 GoF의 책이 훌륭하다. 그럼에도 불구하고 'Head First'를 선택한 것은 'GoF'의 책이 훌륭한것과는 별개로 읽기 쉽지 않기 때문이다. 읽을 수 없는 책을 손에 들고 고민하는 것 보다, 쉽게 읽을 수 있는 책을 읽는게 훨씬 더 생산적이기 때문이다.
OOP에 대한 다양한 이론, 설계, 분석에 관한 책이다. OOP의 용어와 프로그래밍 기법을 배운다는 심정으로 읽어두면 다른 여타의 책을 조금 더 쉽게 접근 할 수 있다. OOP 설계를 진행하기 위한 기본이 된다.
이 책은 읽기 싫어도 읽어야 되는 책이라 생각한다. 많은 사람들이 우리 분야를 대표하는 도서로 이 책을 선정하는덴 다 그만한 이유가 있겠지만, 난 이 책을 항상 '고전'으로 소개한다. 우리 분야의 몇 안되는 고전이다. 그러니 꼭 읽어보길 권한다. 얼마의 시간을 들여서라도 읽어보자. 그리고 이 책은 다 읽는데 '의의'를 두어도 좋은 것 같다. 마치 '잃어버린 시간을 찾아서'를 독서하는 것 처럼...
이 책은 옆에 두고 계속해서 읽어보고 연습하고 적용해 보고 싶은 책이다. 책의 예제가 Java와 C#으로 되어있지만, 나는 파이썬으로 연습해보고 있다. 내가 생각하지 못했던 부분과 당연하게 받아들였던 많은 부분을 조금씩 깨닫게 되었다.
이 책은 선형대수학 책이다. 세부적인 내용은 수학이지만 예제와 연습문제는 파이썬으로 연습 할 수 있도록록 구성되어 있다. 그래서 추천한다. 선형대수책은 이미 널리 알려진 좋은 책(길버트 스트랭?!)이 있지만, 컴퓨터 프로그램을 통해서 선형대수책를 설명하는 책은 이 책이 거의 유일하다. 2015년에 읽은 책 중에서 가장 '숨겨진 보석'같은 책이다.
현 시대에 필요한 소프트웨어 개발 정신과 기술에 대한 전반적인 소개, 개발자가 가져야 할 몇가지 원칙을 제시하고 있다. 이 책은 단순하게 읽고 고민하는게 아니라 동료와 많은 대화를 통해서 책이 완성될 수 있다고 생각한다. 이 책을 함께 읽고 싶은 개발자를 만나면 이렇게 외치자 "너!! 내 동료가 되라!"
- 처음 시작하는 정규표현식 Regular Expressions - 언어와 플랫폼을 뛰어넘는 정규표현식을 만나다, 마이클 피츠제럴드 (지은이), 이성희, 이수진 (옮긴이), 한빛미디어
개발에서 한 번은 '넘어야' 할 산이다. 이 책은 절판된 책으로 알고 있으나, 다른 좋은 책을 구매한 적이 없기에 이 책을 적어둔다. 더 좋은 정규표현식 책이 있다면 그 책으로 대체하라.
다른 좋은 내용이 많지만 나에게 '상태'와 '메소드'라는 두 가지 측면에서 굉장한 지적 흥분을 주었던 책이다. 책의 전체적인 내용도 좋고, 꼭 자바가 아니더라도 OOP 관련 언어라면 언제나 통용되는 '관점'을 제시한다.
임백준님의 책은 '다' 좋다. 들고 다니면서 찬찬히 읽으면 된다. 그런데 이 책을 선정한 이유는 가장 최신의 책이기도 하지만 'Post Java'에 대한 관점 때문이다. 여러분은 동의하는가?
7 가지 언어를 소개한다. 이 책의 가장 큰 장점은 7가지를 소개한다는 점이고, 가장 큰 단점은 7개 밖에 소개 안 한다는 점이다. 개발자의 매거진이라 생각하고 읽어보길 권한다.
흔히 말하는 '용북'보단 이 책을 권한다. 쉽고, 구현가능하고, 내용도 알차다. 이 책을 다 읽었다면 이제 용북으로 가자. 하지만 어렵긴 마찬가지다.
리눅스 커널에 관련된 책이지만 리눅스 커널보다 공개된 소스 코드로 공부하는 방법에 대해서 더 심도 깊게 배울 수 있었다. 그리고 하드웨어, 운영체제, C언어를 통합적으로 이해해야 하는 이유를 이 책에서 강렬하게 느낄 수 있다. 마지막으로 이 책을 집필하신 형님들을 본 받자. 공부는 이렇게 해야 하는거다.
스프링을 공부한다는 마음으로 읽기 보다는, 패턴의 진화과정을 여행한다는 마음으로 읽어보자. 아, 물론 포기하고 싶다는 마음은 누구나 가진다. 그러니 3일 읽고, 3일 포기하고, 3일 읽고, 3일 포기하고 반복하다 보면 다 읽을 수 있다. 책 아깝다고 모셔두지 말고 찢어서 들고 다니며 읽자. 어짜피 이 책은 이러지도(?) 저러지도(?) 못한다.
내가 아는 DB 설계의 모든 것. 쉽고, 자세하고, 재미있다.
이 정도만 알면 서버 구성은 어렵지 않게 할 수 있을 것 같은 느낌같은 느낌이 든다. 참고로 서점에서 둘러볼 때 마다 느끼는건데 제이펍에서 진행되는 '그림으로 공부하는 ~' 씨리즈는 내용이 다 좋다. 돈만 되면 다 지르고 싶다.
다른 어떤 스칼라 책보다 좋다. 연습문제만 풀어도 실력이 상승하는걸 느낄 순 없지만, 스칼라가 어떤 언어인지는 확실하게 느낄 수 있다. 문제는 자바로 돌아가려는 관성을 이겨내야 한다는 점이다.
루비 배우는 셈치고 리팩토링을 배울 수 있다고 말한다면 그 말은 사기다. 그렇지만 루비를 가지고 소개하는 리팩토링이 기존의 책에 비해서 월등하게 '쉽다'는 점은 진실이다. 뭘봐도 어렵긴 마찬가지 이므로 이왕이면 루비 배운다고 생각하고 이 책을 보기 권한다.
너무 뒤늦게 번역된 책이 아닌가 싶다. 하지만 필독서라 할 수 있다. HTTP 모르고 무슨 일을 하겠는가?
UX에 대해서 잘 모르기 때문에 사족을 달 순 없지만, 읽어서 이해된 몇권 안되는 UX 관련 서적이다. 참고로 난 DNA에 '디자인' 관련 세포가 없다고 생각하고 있기 때문에 여러분도 이해 할 수 있는 책이라 단언한다.
제목이 뭔가 종교적이지만, '톰 드마르코'가 쓴 책이다. 이 형님이 쓴 책은 읽어야 된다. 번역가도 이해영, 박재호 님이다. 한 마디로 '필독서'다.
로켓같은 트럭에 올라탈 개발자를 위한 서적이다. 린 캔버스 잘 배워서 오픈소스 프로젝트에 사용해 보면 참 좋다. 그대가 개발자라면 이거 읽고 창업하기 보다는 이거 읽고 오픈소스 프로젝트를 진행해 보자! 혹시 사람 모자라면 연락하시라! 나도 같이 하게, 진심으로 하는 소리다.
마틴 파울러가 파운더로 있는 소트웍스 개발자 에세이를 묶은 책이다. 그리고 이 책에 나오는 사례는 '다' 외국 이야기란 것도 기억해두자. 그리고 CEO가 '마틴 파울러'라 가능한 이야기 일 수 있음도 기억해 두자. 무턱대고 따라할 일은 아니지만, 꼭 새겨들어야 할 이야기다.
외국의 '파워 블로거'인 아저씨가 쓴 글 같지만, '조엘 스폴스키'의 글 모음이다. 정말 훌륭한 가이드가 많다. 그리고 외국 이야기란 것도 기억해두자. 혹시 여기서 나오는 가이드를 실천하는 회사를 알고 있다면 '나에게' 연락 좀 주세요! 제발!
Perl 예찬자가 쓴 책 같다고 느꼈다면 정확하게 읽고 있는거다. 책에 나온 내용 중에서 좋은게 많으니 꼭 새겨듣자. 특히 '텍스트로 자료를 남겨라'라는 부분은 신경써서 기억해두자. 외국에 이력서 혹은 레쥐메~ 보낼 때 hwp 보내는 만행을 저지르지 않도록 주의하자(애초에 hwp 편집기를 설치하지 말자).
ACM에 연재된 좋은 컬럼을 묶어서 만들었다. 제대로 읽으면 TAOCP 급이다. 대충 읽어도 내용이 좋다. 대충읽기를 권하지만 착실하게 읽으려고 노력하면 더 좋은 성과를 얻을 수 있다. 일단 대충 읽어도 평타친다. 왜냐면 이 책은 생각시키는(be p.p.) 책이다.
맨머스 미신을 읽고 곧바로 읽으면 좋다. 같은 주제에 대한 서로 다른 이야기 같지만 맨머스 미신과 이 책은 하나의 이야기를 하고 있다는 것을 깨닫게 될 것이다. 아니 깨달아야 된다.
1975년에 나온 책인데 21세기에 읽어도 무슨 내용인지 이해된다. 두고 두고 몇번을 읽어도 계속 새롭다. 나의 개발환경은 '도대체 어쩌려고' 이러는 건가? 싶기도 하다.
성공한 스타트업 CEO분께서 화가로 전향하시고 느끼신 바를 '담담'하게 쓰신 책이다. 내가 이 책을 읽고 남은건 'Lisp 학습 의지' 정도 되겠다. 그리고 스타트업이면 '폴 그레이엄' 이란 이름을 어디서 봤더라 싶을꺼다.
건축도서이다. 하지만 읽어보면 뭔가 거대한 어떤 것이 다가올 것 같지만 기분 탓이다. 하지만 패턴 이란것에 대한 전혀 다른 감각을 배울 수 있다. 인간 문명을 견인한 '건축공학'이 얼마나 위대한지 알게 된다.
소프트웨어 논쟁 모음집. 우리가 서있는 이 곳의 논쟁사를 한 눈에 알 수 있다.
창의력 대장으로 가기 위한 개론서. 개발 경력 50년 이상인 1갑자 내공의 형님이 들려주는 '창의력' 이야기! 빨간펜은 필요없다.
개발에 관한 '광역' 조언집. 이대로 할 수만 있다면 더할 나위 없이 좋겠지만 슬퍼하지 않겠다.
p.s. #1 오타 및 오류는 천천히 수정하겠습니다. (선배포 후검증)
p.s. #2 다른 책 추천 받습니다. 연락주세요!
update : 2015.12.31.
- 링크 수정
update : 2016.02.11
-
절판 서적 링크 수정 및 도서 추가/삭제
-
추가 도서
- Effective Modern C++
- 소프트웨어 장인
- 코딩 더 매트릭스
- 엔터프라이즈 애플리케이션 아키텍처 패턴
-
변경 도서
ISO 표준이 변경되었기 때문에 Modern C++ 도서로 변경.
절판이 되었다.
근무하면서 가장 많이 참고한 책이다. GoF와 어깨를 견주는 책이다. 그런데 더 좋은 책이 나타났다.
세상을 바꾼 사람들의 이야기다. 스티븐 레비의 작품, 이해영, 박재호님의 번역이라면 안심하고 읽어도 좋다. 컴퓨터 천재들의 일대기를 읽을 수 있고, 컴퓨터 발전사를 더듬을 수 있다. 아쉽게 50위권 밖으로...
여러 언어의 특성과 차이를 비교하며 설명해 주고 있는 것이 특징이다. 절판이라 구할 수 없음이 아쉽다. 모두 도서관으로 고고!
절판이다.
이 또한 절판이다.