내 마음대로 선정한 개발자/프로그래머 추천도서(필독서) 50선(20190409)

내 마음대로 선정한 개발자/프로그래머 추천도서(필독서) 50선(20190409)

우리는 새로운 것을 배우기 위해서 검색창에 프로그래머 추천 도서, 개발자 필독서, 개발자 추천 책 등의 검색어로 다른 이들의 경험을 공유합니다. 많은 분들이 정성스럽게 추천 도서를 정리해주셨고, SNS나 블로그 등을 통해서 추천 목록이 공유되고 있습니다. 즉, 추천 도서를 정리한 목록이 부족한게 아니라 너무 많아서 문제라 할 수 있습니다. 그럼에도 불구하고 제가 '프로그래머 필독서' 목록을 다시 정리하는 이유는 다음과 같습니다.

  1. 많은 분들이 참고하셨을 추천 도서 목록 중 하나인 프로그래머 필독서 64선의 경우 '원서'의 비중이 지나치게 높습니다.
  2. 추천 도서 목록에 포함된 번역서의 경우 번역의 품질을 고려하지 않고 원서의 '후광효과'나 '브랜드 가치(brand value)'를 기준으로 추천하는 경우가 있습니다. 원서가 가지고 있는 브랜드 가치가 아무리 높아도, 번역서의 품질이 엉망인 경우가 있습니다.
  3. 모든 기술은 시기성(時期性)을 가집니다. 내일을 살아가는 개발자에게 너무 오래된 도서는 적당하지 않습니다.

그래서 제 마음대로 "프로그래머 필독서(혹은 추천서) 50선"을 (나름대로) 정리했습니다. 제가 추천 도서를 선정한 기준은 아래와 같습니다.

  1. 모든 책은 한국어를 사용하고, 한글로 표기된 것을 원칙으로 합니다. 한글를 사용하는 것이 최소한의 기준입니다.
  2. 원서를 번역한 경우 번역에 대한 제 개인적인 편견이나 번역 품질에 대한 기대치는 책을 선정함에 있어, 중요한 기준으로 반영되었습니다. 제가 받아들이기 곤란한 번역의 경우 철저히 배제됩니다.
  3. 국내에서 구매할 수 있는 서적을 대상으로 작성되었습니다. 2019년 4월을 기준으로 인터넷 서점에서 주문 가능함을 원칙으로 합니다.
  4. 제가 구매했거나, 회사의 자금으로 구매해서 읽어본 경험을 바탕으로 선정하였습니다. 즉, 안 읽어본 책은 추천 도서 목록 후보에 포함되지 않습니다. 당연한 말이지만, 읽지도 않은 책을 후보에 올려두는 짓은 하지 않습니다. 그리고 당연하게도 제가 구매한 책의 경우 '가성비'에 대한 개인적 편견이 반영됩니다.

그럼에도 불구하고, 해당 분야의 원서를 읽는게 더 좋다는 주장에 대해서 제가 해당 주장을 반박할 수 있는 능력(외국어의 문맥에 녹아있는 뉘앙스 등을 파악하는 능력)이 없고(개인적으로 한국어로 된 책도 읽기 쉽지 않습니다), 뭔가를 배우려고 작은 발걸음을 시작하는 분들에게 원서를 권하고 싶은 마음도 업습니다(그럴 마음이 있었으면, 이런 글을 작성하지도 않았을 겁니다). 원서와 관련된 내용은 /dev/null로 리다이렉션(redirection) 하였습니다. 정말 이 분야의 경우 어쩔 수 없다고 판단된 경우 원서를 해당 목록의 말미에 별도로 다루도록 하겠습니다(물론 그 원서도 제가 읽어보고 납득가능한 책만 추천합니다).

요약하면, "내 마음대로 선정한 개발자/프로그래머 추천도서(필독서) 50선(20190409)" 입니다.


  1. <<CODE 코드 (반양장) - 하드웨어와 소프트웨어에 숨어 있는 언어, 찰스 펫졸드 (지은이), 김현규 (옮긴이), 인사이트, 2015>>

이 책은 컴퓨터(혹은 계산기)라는 오브제(objet)에 관한 가장 원리적이고, 아름다운 이야기를 우아하게 우리에게 선사합니다. 찰스 펫졸드가 들려주는 컴퓨터의 가장 깊숙하고, 기초적인 이야기를 꼭 읽어보길 권합니다.

  1. <<객체지향의 사실과 오해 - 역할, 책임, 협력 관점에서 본 객체지향, 조영호 (지은이), 위키북스, 2015>>

'붕어빵'과 '빵틀'이라는 말도 안되는 비유를 통해 접했던 객체지향 개념을 '역할, 책임, 협력'이라는 3가지 관점으로 객체지향 프로그래밍을 설명하고 있습니다. 책에 제시된 예제는 Java를 사용하고 있지만, 다른 언어를 사용하시는 분들이 읽어도 충분히 이해할 수 있을 정도로 내용을 쉽고 알차게 정리해주셨고, 예제도 잘 정리되어 있습니다. 그리고 이상한 나라의 엘리스를 읽고 싶게 만드는 묘한 재주가 있는 책입니다.

  1. <<독하게 시작하는 C 프로그래밍 - 널널한 개발자의 C 언어 마스터클래스, 최호성 (지은이), 루피페이퍼, 2015>>
  1. <<윤성우의 열혈 자료구조 - C언어를 이용한 자료구조 학습서, 윤성우 (지은이), 오렌지미디어, 2012>>
  • 이 책은 추상자료구조(ADT)를 사용해서 자료구조를 설명합니다. 대부분의 책이 ADT를 가볍게 소개하고 곧바로 몇가지 코드와 연습문제로 직행하는데 비해서 이 책은 ADT를 설계하고 해당 설계에 맞춰서 자료구조를 구현합니다. 또한 국내에 출판된 자료구조 책 중에서 별다른 문제없이 컴파일 가능한 코드를 제공하는 책 중 하나라 할 수 있습니다. 책을 읽으면서 어려운 부분은 동영상 강의참고하시면 됩니다. 혼자서 독학하기엔 이 책만큼 좋은게 없습니다.
  • 만약/정말로 이론적으로 자료구조에 접근하고자 하시면 이석호 교수님의 <<C로 쓴 자료구조론 - 2판, Ellis Horowitz (지은이), 이석호 (옮긴이), 교보문고(교재, 2008>>를 참고하시면 됩니다. 그렇지만 이 책은 정말 이론적인 접근을 원하는 분들에게 추천하며, pseudocode를 기반으로 설명하고 있기 때문에 실습용으로 적합하지 않습니다.
  • 저는 자료구조와 알고리즘을 완전히 다른 분야로 분류하기 때문에 알고리즘에 관한 도서를 원하시면 다른 책을 구매하시는게 좋을 듯 합니다.
  1. <<C++로 배우는 프로그래밍의 원리와 실제, Bjarne Stroustrup (지은이), 최광민 (옮긴이), 에이콘, 2015>>
  1. <<해커의 기쁨 (제2판) - 비트와 바이트 그리고 알고리즘, 헨리 워렌 (지은이), 류광 (옮긴이), 제이펍, 2013>>

컴퓨터가 제공하는 단순한 연산으로 할 수 있는 흥미로운 문제와 해결방법이 가득한 책 입니다. 단순한 산술연산을 다루기 때문에 책의 수준이 낮다고 생각한다면 (경기도) 오산이라 할 수 있습니다. 이 책을 통해서 컴퓨터 산술연산의 원리에 대해서 고민해 볼 수 있는 기회와 컴퓨터 소프트웨어/하드웨어 오류를 바라보는 직관력을 배울 수 있는 기회를 제공합니다. 산술연산에 관한 생각지도 못했던 다양한 문제를 통해 강력하고 놀라운 해결 방법이나 트릭을 배우면서 해커의 '기쁨'을 느낄 수 있기를 희망합니다. 참고로 국내에 비트연산에 관련된 문제의 대부분은 이 책에 해설되어 있으니 취업을 준비중이거나 대회를 앞두고 있다면 이 책을 참고해보세요.

  1. <<문제로 풀어보는 알고리즘 - 프로그래밍 트레이닝 Q&A, 김용혁, 황인욱 (지은이), 인사이트, 2012>>
  1. <<자바의 신 - 전2권,이상민 (지은이), 박재성, 김성박 (감수), 로드북, 2017>>
  1. <<이펙티브 자바 - 제3판, 조슈아 블로크 (지은이), 개앞맵시 (옮긴이), 인사이트, 2014>>
  • 자바를 자바답게 사용하기 위한 최소한의 관례와 용례를 배울 수 있습니다. 자바 개발자에게 사실상(de facto) 필독서에 가깝습니다. 여러분이 면접장에서 받았던 당황스럽거나 난이도가 높은 질문의 답변이 궁금하시면 이 책을 참고해보셔도 좋을껍니다.
  • 2018년 11월에 3판이 인사이트를 통해서 출판되었습니다. 3판의 변경내용만 원서로 읽었고, 아직 번역본을 읽지 못했습니다. 다 읽어보고 다시 리뷰하도록 하겠습니다. 번역된 책도 읽어본 결과 이전 재번역본에 비해서 월등하게 좋습니다. 번역의 품질도 좋았고, JDK 8이후에 반영된 자바의 변경사항이 곳곳에 반영되어 있어서 이펙티브 자바에 도전하는 개발자라면 이번 3판으로 시작하길 권장합니다. 해당 책에 대한 애정이 많아서 이 책에 대한 개인적인 리뷰는 이 곳에서 확인 가능합니다.
  1. <<토비의 스프링 3.1 세트 - 전2권, 이일민 (지은이), 에이콘출판, 2012>>
  • 많은 분들이 스프링 버전 때문에 아쉽다는 의견이 많은 책입니다. 어쩌면 스프링 부트를 사용하거나 스프링 4/5를 사용하는 입장에서 스프링 3.1 기반의 책을 추천한다는게 이상해 보일 수 있습니다. 하지만 제목의 절반을 차지하는 스프링 3.1을 떼어내더라도 이 책의 가치는 여전히 높을꺼라 생각합니다. 국내에서 프레임워크의 진화과정을 TDD 기법을 사용해서 소개하고 있는 거의 유일한 책입니다. TDD를 통해서 프레임워크의 발전 과정을 직접 실습해 볼 수 있습니다. 그리고 글로만 배웠던 패턴을 직접 적용하고 수정해 볼 수 있는 몇 안되는 기회도 제공합니다.
  • 스프링 3.1 기반의 연습이 힘들다면, 스프링 부트를 사용해서 실습을 진행해보는 것도 좋은 공부가 될 수 있습니다. 이 책의 가장 큰 장점은 프레임워크의 발전과정을 실습을 통해서 모사해 볼 수 있다는 점이기 때문에 스프링 버전은 큰 문제가 아니라고 생각합니다(그래도 토비님께서 스프링 5로 개정판을 출간해주시면 좋겠네요).
  • 그러니 3일 읽고, 3일 포기하고, 3일 읽고, 3일 포기하기를 반복하다 보면 (언제가) 다 읽을 수 있습니다. 책 아깝다고 모셔두지 말고 찢어서라도 읽어보시길 권합니다. 그리고 더 나아가 꼭 Vol.1의 실습을 충실하게 진행보시길 강권합니다. 분명 프레임워크를 보는 시야가 달라져 있을꺼라 확신합니다. 책을 집에 곱게 모셔둔다고 해도 이러지도 저러지도 못하니 최대한 잘 활용하실 수 있기를 기원합니다.
  • 만약 지금 당장 스프링으로 뭔가를 하셔야 된다면 <<스타트 스프링 부트 - 초급 개발자들을 위한 가볍고 넓은 스프링 부트, 구멍가게 코딩단 (지은이), 남가람북스, 2017>>를 추천합니다.
  1. <<컴퓨터 시스템 - 3판, Randal E. Bryant (지은이), 김형신 (옮긴이), 피어슨에듀케이션코리아, 2016>>
  • CPU 내부의 작동 원리와 과정을 기계어, 어셈블리어 그리고 C언어를 사용해서 자세히 설명하는 책입니다. 대학교재로 많이 활용되고 있기 때문에 설명이나 내용이 딱딱한 감이 있지만 작동 원리와 과정을 하드웨어의 저수준 영역에서 배워 볼 수 있기 때문에 기존의 개발자에게 많은 영감을 줍니다. 특히 자바, C# 혹은 파이썬 처럼 자원 할당 및 해제를 별도로 관리하지 않아도 되는 언어를 사용하시는 분들에겐 언어의 깊이를 더해 줄 수 있습니다.
  1. <<인사이드 머신 - 에이콘 임베디드 시스템 프로그래밍 시리즈, 존 스토크스 (지은이), 전동환, 안익진 (옮긴이), 에이콘출판, 2007>>
  • CPU 관련 기술을 설명하고 있는 교재입니다. 2007년에 출판되었고 책에서 다루는 최신 CPU가 Core 2 Due라서 현재 CPU를 기준으로 생각하면 아쉬움이 많습니다. 하지만 CPU 아키텍처의 발전사를 이 책만큼 쉽고 정확하게 설명하는 책이 없기 때문에 CPU 기술에 관해선 선택의 여지가 없습니다. 향후 개정판이나 CPU 아키텍처와 관련된 책이 빨리 출판되길 기원합니다. 만약, 조금 평이하지만 CPU와 관련된 책을 원하시면 <<슈퍼컴퓨터를 사랑한 슈퍼맨, 찰스 J. 머리 (지은이), 이재범 (옮긴이), 지식함지, 2015>>도 한번 읽어보시면 좋습니다.
  1. <<ARM 리눅스 커널 - 코드로 알아보는, 제2판, 윤석훈, 문영일, 구본규, 유희재 (지은이), 제이펍, 2018>>
  • 2018년 6월(정확히는 5월)에 개정되었습니다. 1판이 커널에 대한 소개 및 개발환경에 대해서 자세히 소개하고 있어서 초보자를 위한 책이였다면, 이번 개정판은 ARMv8를 기반으로 CPU 아키텍처부터 시작하여 메모리와 태스크에 관련된 내용이 대폭적으로 보강되었습니다. 개정판이 아니라 새 책이라고 해도 과언이 압니다.
  • 제이펍에서 아쉽게도 1판을 절판시켰기 때문에 알라딘/YES24 중고서점을 이용해서 1판을 구해서 같이 보시면 더 좋습니다. 버전 차이가 있다곤 하지만 코드를 분석하고 설명하는 부분은 1판의 내용이 훨씬 좋다고 생각됩니다.
  • 리눅스 커널에 관련된 책이지만 리눅스 커널보다 공개된 소스 코드로 공부하는 방법에 대해서 더 심도 깊게 배울 수 있습니다. 그리고 하드웨어, 운영체제, C 언어를 통합적으로 이해해야 하는 이유를 이 책에서 강렬하게 느낄 수 있습니다. 마지막으로 이 책을 집필하신 분들을 본 받아서, 제대로 된 공부를 도전해봅시다!
  1. <<운영체제, Silberschatz (지은이), 고건, 조유근 (옮긴이), 교보문고, 2014>>

운영체제 개론서로 흔히 '공룡책'이라고 부릅니다. 꼼꼼하게 읽고, 시간내서 연습문제도 깔끔하게 풀어보고 혼자서 설명도 해봐야 합니다. 운영체제 이론은 개발자의 가장 큰 밑천 중 하나라 할 수 있습니다. 동기/비동기, 캐쉬, 스케쥴링 등 현대 컴퓨터 과학 및 개발에 필요한 기초적인 이론의 대부분을 다루고 있기 때문에 이 책은 시간내서 읽어보시면 좋습니다. 하지만 조판의 편집이나 구성이 대학교재의 분위기를 물씬 풍기고 있기 때문에 될 수 있으면 학부 과정에서 좋은 성과를 이룩하시면 좋고 그게 안되면 팀을 만들어서 도전해 보시면 즐겁고 재미있는 독서 모임이 될 듯 합니다. 그리고 학생분들은 연습문제를 꼭 풀어보세요. 취업준비 하실 때 많은 도움이 될 껍니다.

  1. <<프로그래밍 패턴 - 프로그램을 작성하는 33가지 방법, 크리스티나 로페즈 (지은이), 이상주 (옮긴이), 위키북스, 2015>>

프로그램의 코드 구조가 역사와 시간을 거슬러 어떻게 변화되고 발전했는지(함수에서 객체, 객체에서 패턴, 패턴에서 다시 함수로?) 소개하는 책입니다. 모든 프로그래밍 패턴을 파이썬 코드를 사용해서 설명하고 있기 때문에 코드만 봐도 내용이 대충 이해됩니다. 직관적이고 실용적인 내용이 많습니다. 특히 다른 개발자의 코드를 읽어야 하는 분들에게 많은 도움을 줍니다. 잘 알려진 프로그래밍 패턴을 파이썬으로 구현했기 때문에 이 기회에 파이썬도 배워볼 수 있는 좋은 기회가 될 것입니다.

  1. <<깐깐하게 배우는 파이썬 3 - 기본기를 다져주는 단계별 학습법, 제드 쇼 (지은이), 정윤원 (옮긴이), 인사이트, 2014>>

인사이트에서 개정판을 준비중이라고 합니다(야홋!!!). 출간하였습니다. 개정판이 빨리 나왔으면 좋겠네요! 이번엔 Python 3를 기준으로 설명하겠죠?! Python 3로 번경되었고, 몇가지 챕터는 보강되었습니다. 하지만 이 책의 예제는 조금 문제가 있는 듯 합니다. 현재 책에 포함된 예제가 한국어로 번역되어(냬_이름) 있습니다. 번역자의 의도를 충분히 이해한다고 하지만, 개인적으로 한글을 코드에 포함시키는게 긍정적인 일인지 판단이 되지 않습니다. 해당 교재의 번역 품질이나 책의 지향점을 고려한다면 추천해야 마땅하나, 해당 코드의 대부분이 '한글'로 번역되어 있다는 점은 미리 알아두시고 책을 구매하시면 좋을 듯 합니다. 해당 내용에 대해선 다른 분들의 의견을 듣고 정리하도록 하겠습니다.
파이썬을 처음 공부하는데 가장 효과적인 책입니다. 파이썬을 사용해서 절차지향과 객체지향 프로그램의 기초를 쉽게 배울 수 있습니다. 이 책의 가장 큰 장점은 모든 예제를 손수 코딩해야 한다는 점(이 도서는 실습을 꼭 병행해야 효과를 봅니다)이고 단점은 현재 국내에 출판된 책의 경우 Python 2를 기준으로 설명하고 있기 때문에 현재 상황에 비춰보면 약간 늦은 감이 있습니다. 이 책의 실습을 끝내면 국내에서 무료로 제공되는 점프 투 파이썬을 참고하시거나, <<러닝 파이썬 하편 - 파이썬에 관한 것, 그 무엇이든!, 5판, 러닝 파이썬 2, 마크 러츠 (지은이), 조인중, 강성용 (옮긴이), 제이펍, 2018>>을 참고하시면 좋을 듯 싶습니다. 기회가 되면 파이썬 관련 도서는 별도로 리뷰해보는 시간을 가져보겠습니다.

  1. <<스칼라로 배우는 함수형 프로그래밍, 폴 키우사노, 루나르 비아르드나손 (지은이), 류광 (옮긴이), 제이펍, 2015>>

국내에 출판된 여타의 스칼라 책보다 이 책을 추천하는 이유는 번역의 품질이 매우 훌륭하기 때문입니다. 이 책의 통해서 완벽한 스칼라 개발자가 될 순 없습니다. 그리고 책이 기본부터 차근차근 설명하는 도서가 아니라서 초보자에게 난이도가 있을 수 있으니 만약 스칼라를 처음 접하신다면 <<러닝 스칼라, 제이슨 스와츠 (지은이), 김정인, 강성용 (옮긴이), 제이펍, 2017>>을 먼저 도전해보시면 좋을 듯 싶습니다. 이 책을 통해서 스칼라가 어떤 언어인지 그리고 무엇을 지향하는 확실하게 알 수 있습니다. 하지만 이 책을 독서하면서 겪게되는 가장 힘든 경험은 자바로 돌아가려는 관성을 이겨내야 한다는 점입니다. 자바를 주로 사용하시는 분들은 이 책을 통해서 새로운 경험과 색다른 접근법으로 문제를 풀어보는 즐거운 경험이 되실꺼라 생각합니다. <<누구나 쉽게 스칼라 + 플레이, 고락윤 (지은이), 한빛미디어, 2016>>와 같은 스칼라를 응용한 실습을 겸한다면 스칼라의 다양한 맛을 느껴볼 수 있지 않을까요?

  1. <<Haskell로 배우는 함수형 프로그래밍, 오카와 노리유키 (지은이), 정인식 (옮긴이), 제이펍, 2015>>

이 책을 통해서 Haskell을 조금은 간단하고 가볍게 접근할 수 있습니다. 본격적으로 Haskell을 배우기엔 다수 내용이 부족하지만, Haskell 언어의 컨셉을 느껴볼 수 있는 배운다는 목적과 함수형 언어의 특징을 적극적으로 느낄 수 있습니다. 국내에 출판된 Haskell 책 중에서 가장 최신에 해당하는 책입니다. 번역의 품질이 다른 여타의 책보다 좋기 때문에 별다른 어려움 없이 읽을 수 있습니다. 만약 이 책으로 부족하다면 원서 중에서 <<Haskell Programming From First Principles, by Christopher Allen, Julie Moronuki, 2015>>를 추천드립니다.

  1. <<Head First Design Patterns - 스토리가 있는 패턴학습법, 케이시 시에라, 버트 베이츠, 엘리자베스 프리먼, 에릭 프리먼 (지은이), 서환수 (옮긴이), 한빛미디어, 2005>>

단언하건데 '디자인 패턴' 책은 <<GoF의 디자인 패턴, 에릭 감마 (지은이), 김정아 (옮긴이), 프로텍미디어, 2015>>가 가장 좋습니다. 그럼에도 불구하고 'Head First'를 선택한 것은 'GoF'의 책이 훌륭한것과는 별개로 읽기 쉽지 않기 때문이다. 읽을 수 없는 책을 손에 들고 고민하는 것 보다, 쉽게 읽을 수 있는 책을 읽는게 훨씬 더 생산적이기 때문입니다. 디자인 패턴의 경우 대부분의 개발자가 별도로 공부하기 보다는 자신이 하는 일을 진행하면서 몇가지 개념들과 코드 작성방법을 익히기 됩니다. 저도 책으로 배운 내용보다는 기존 코드가 구성된 내용을 리뷰하거나 동료들과 대화(전 싱글톤을 말로 배웠습니다)를 통해 배우게 됩니다. 여러분도 그런 경험이 많아지실 것으로 예상됩니다. 자신이 사용하는 코드를 조금 더 정갈하고, 깔끔하게 다듬고 싶다면 Head First로 충분하다고 생각합니다. 여탄의 다른 책은 Head First를 읽고 참고하셔도 좋을 듯 싶습니다. 전 개인적으로 <<Java 언어로 배우는 디자인 패턴 입문 - 개정판, 유키 히로시 (지은이), 이규흥 (옮긴이), 2008>>을 주로 참고하였으나, Head First의 예제가 훨씬 직관적이라 Head First를 권해드립니다.

  1. <<엔터프라이즈 애플리케이션 아키텍처 패턴, 마틴 파울러 (지은이), 최민석 (옮긴이), 위키북스, 2015>>

이 책은 2002년 원서가 출판되었고 국내에 2003년에 소개되었다가 한동안 절판되었던 책 입니다. 이 책에서 소개하는 대부분의 패턴은 현대의 '프레임워크'에 대부분 구현되어 있을만큼 광범위하게 사용하고 있습니다. 디자인 패턴이 개발자 코드의 가독성과 구성을 견고하게 해준다면, 이 책은 우리가 즐겨 사용하는 대부분의 프레임워크에 대한 관점과 시야를 넓혀 줄 수 있습니다. 이 책을 진지하게 읽으면서 해당 패턴을 재구현할 필요는 없지만, 자신이 사용하고 있는 프레임워크의 '문맥'이 궁금하다면 이 책을 통해서 시작해보면 좋을 듯 싶습니다. 책의 예제가 JavaC#으로 되어있지만, 저는 Python으로 연습해보곤 했습니다. 다른 언어로 연습하면서 내가 생각하지 못했던 부분과 '어색하고 근거없이' 당연하게 받아들였던 많은 부분을 조금씩 깨닫게 되었던 경험이 있습니다.

  1. <<Code Complete - 소프트웨어 구현에 대한 실무서, 제2판, 스티브 맥코넬 (지은이), 서우석 (옮긴이), 위키북스, 2017>>

전 이 책을 항상 '고전'으로 소개합니다. 대부분의 사람들이 알고 있지만 '누구도' 다 읽지 않은 도서를 고전('논어', '일리아스/오뒷세이아', '전쟁기' 등)이라 소개합니다. 이 책도 한동안 절판되었던 책이라 많은 분들이 도서관에서 볼 수 있었습니다. 책의 내용이 개발 혹은 컴퓨터 프로그래밍에 관한 전반적인 내용을 어렵지 않게 소개하고 있기 때문에 쉽고 재미있게 읽을 수 있습니다. 하지만 이 책을 '고전'의 반열로 올린 것은 '분량'입니다. 당연히 한번에 다 읽을 수 없기 때문에, 포기하지 말고 천천히 그리고 꾸준히 읽어보길 강권합니다. 분량이 많은 것을 제외하면 이 책에서 다루는 내용은 오늘을 살아가는 개발자에게 어제의 개발자가 전해주는 실천적인 '지혜'이기 때문입니다. 이와 유사하지만 가벼운 책을 원하시면 <<HARD CODE - 나잘난 박사의 IT 정글 서바이벌 가이드, 에릭 브레히너 (지은이), 이해영, 박재호 (옮긴이), 에이콘출판, 2009>>을 참고해보세요.

  1. <<다양한 언어로 배우는 정규표현식, 신야 료마, 스즈키 유스케, 타카타 켄 (지은이), 김완섭 (옮긴이), 제이펍, 2016>>

정규식은 한 번은 '넘어야' 할 산 입니다. 정규식과 친하게 지내든 아니면 그와 이별하고 온갖 라이브러리를 사용할지는 개인의 결정이라 할 수 있습니다. 정규식과 관련된 책이 그러하듯이 여전히 어렵습니다. 하지만 이 책만큼 정규식에 대해서 자세한 설명한 책도 없습니다. 단연코 국내에 정규식 관련해서 이렇게 자세히 소개하는 책은 없다고 할 수 있습니다. 또한 '이메일 주소 검증' 정도로 생각했던 정규식이 아니라 '패턴'의 개념을 적용해서 충분히 중요한 관점을 제공해주는 도서라 할 수 있습니다. 정규식을 떠나서 정규식을 구성하는 원론적인 이론에 대한 내용만으로도 충분히 훌륭한 도서라 할 수 있습니다. 정규식은 어렵지만, 도전해볼만한 가치고 있고 충분히 '넘을 수 있는' 산이라 할 수 있습니다. 시간 되시면 한 번 이 책을 통해 도전해 보세요.

  1. <<컴파일러 구조와 원리 - 컴파일러로 배우는 언어 처리 시스템, 아오키 미네로우 (지은이),이영희 (옮긴이), 한빛미디어, 2010>>
  1. <<클린 코더 - 단순 기술자에서 진정한 소프트웨어 장인이 되기까지, 로버트 C. 마틴 (지은이), 정희종 (옮긴이), 에이콘, 2016>>

동시대 개발자에게 가장 많은 영향력을 가진 개발자 중 한명인 로버트 C. 마틴의 '리즈'시절을 되돌아보며 자신의 실패담을 바탕으로 소프트웨어 개발자가 갖춰야 할 역량에 대해서 서술한 책입니다. 훌륭한 개발자의 실패담을 통해서 한층 더 성숙한 개발자가 될 수 있는 좋은 시간이 될 수 있지만, 생각만큼 쉽게 읽히는 책이 아니니 될 수 있으면 스터디 그룹을 조직하길 (진심으로) 권합니다. 이게 말이 많고, 코드가 많이 없어서 쉬울 것 같아서 읽기 시작하기엔 함의된 내용이 녹녹치 않습니다.

  1. <<코딩 더 매트릭스, 필립 클라인 (지은이), 마이클 (옮긴이), 루비페이퍼, 2015>>

현대 개발자에게 선형대수학은 필수에 가깝다 할 수 있습니다. 늦지 않았다는 마음으로 지금부터라도 조금씩 수학을 배워보면 어떨까 싶이서 선형대수학 책을 검색하다보면 대부분의 책들이 수학을 전공한 학생이나 전기/전자를 전공한 공학도에 초점을 맞춰서 출판되어 있는 것을 확인할 수 있습니다. 그래서 많은 아쉬움으로 일반적인 선형대수학 책을 보곤 했는데, 이 책은 그러한 아쉬움을 한 방에 날려버립니다. 책의 내용은 전형적인 선형대수학 책이지만, 내용은 파이썬을 사용해서 문제를 풀어볼 수 있도록 구성되어 있습니다. 따라서 개발자가 선형대수학을 그래프와 코드로 직관적으로 이해할 수 있도록 세심한 배려가 곳곳에 돋보이는 책입니다. 수학 공부를 시작하신다면 이 책으로 도전해 보시면 좋을 듯 합니다. 코드보단 수학의 이론적인 면이 필요하시다면 <<프로그래머를 위한 선형대수, 히라오카 카즈유키, 호리 겐 (지은이), 이창신 (옮긴이), 길벗, 2017>>을 참고해보세요!

  1. <<러닝 자바스크립트 - ES6로 제대로 입문하는 모던 자바스크립트 웹 개발, 이선 브라운 (지은이), 한선용 (옮긴이), 한빛미디어, 2017>>

ES6를 기준으로 작성된 책입니다. Node.js를 근간으로 React.js/Vue.js 등과 같이 자바스크립트를 필요로하는 분야가 많기 때문에 많은 분들이 '예전의 자바스크립트'를 생가갛고 가볍게 접근하시는 분들이 많습니다. 하지만 자바스크립트의 영향력이 커짐에 따라 언어의 명세나 개념이 많이 확장되었습니다. 그래서 자바스크립트를 처음 시작하는 분들에겐 이 책을 추천드립니다. 만약 이 책을 읽어보고 용어나 기타 번역이 본인과 맞지 않는다면 <<객체지향 자바스크립트 3/e - 객체지향 프로그래밍의 기초부터 함수.객체.프로토타입까지, 베드 안타니, 스토얀 스테파노프 (지은이), 류영선 (옮긴이), 에이콘출판), 2017>>도 고려해보면 좋을 듯 싶다. 저는 개인적으로 <<러닝 자바스크립트>>를 먼저 읽었기 때문에 이 책을 권해드렸습니다. <<객체지향 자바스크립트 3/e>>도 번역의 질이나 내용이 나쁘지 않기 때문에 충분히 좋은 대안이 될 수 있습니다.

  1. <<함수형 자바스크립트 프로그래밍, 유인동 (지은이), 인사이트, 2017>>
  • 이 책은 자바스크립트를 사용해서 함수형 프로그램을 할 수 있도록 진행하는 책입니다. 단순히 자바스크립트를 사용했다는 어중간한 이야기였다면 이 책을 추천하지 않았을 껍니다. 이 책의 가장 큰 장점이자 강점은 기존의 코드에 함수형 개념을 적용해서 코드를 차근 차근 수정한다는 점 입니다. 특히 underscore.js를 기반으로 예제 코드가 '절차지향'에서 '함수형'으로 변경되는 과정을 실습을 통해서 차근차근 진행해 볼 수 있습니다. 이 책의 단점은 자바스크립트의 특성에 대해서 조금은 자세히 알아야 한다는 점입니다. 하지만 이 책의 저자분께서 무료로 인터넷 강의도 진행하고 있으니, 함수형 프로그래밍에 관심이 있으신 분들에게 좋은 책이라 할 수 있습니다.
  • 순수 함수형 프로그래밍 언어인 Haskell,OCam, ML등의 경우 기존의 개발자나 다른 언어를 사용하고 있는 개발자들에게 굉장히 계륵같은 존재라 할 수 있다. 순수 함수형 언어를 배워서 업무, 학교, 혹은 취업준비에 곧바로 사용할 수 없다는 '심리적 손해'가 발생하지만 배워두면 Scala, Kotlin, F#등과 같은 유행하는 언어를 손쉽게 배울 수 있고 해당 언어의 의미를 깊게 배워볼 수 있다는 '물질적 이득'이 공존하기 때문입니다. 만약, 이러지도 저러지도 못하는 상황이라면 이 책을 통해서 기존 코드를 함수형으로 변경하는 방법을 배워보면 어떨까요?
  1. <<관계형 데이터베이스 실전 입문, 오쿠노 미키야 (지은이), 성창규 (옮긴이), 위키북스, 2016>>

만약 관계형 데이터베이스에 대해서 전혀 모르거나, SQL 문법만 알고 있다면 이 책으로 시작해보시길 권해드립니다. 그리고 관계형 데이터베이스를 저처럼 대충 사용했던 개발자라면 이 책을 통해서 관계형 데이터베이스에 대한 개념과 관점을 새롭게 만들어보는 시간을 가져보면 좋습니다. <<아는 만큼 보이는 데이터베이스 설계와 구축, 이춘식 (지은이), 한빛미디어, 2008>>를 함께 읽으면 이론과 설계에 관한 체계적인 시각을 가질 수 있습니다.

  1. <<SQL 레벨업 - DB 성능 최적화를 위한 SQL 실전 가이드, 미크 (지은이), 윤인성 (옮긴이), 한빛미디어, 2016>>

PostgreSQL을 사용해서 관계형 데이터베이스를 실습해 볼 수 있는 책입니다. 데이터베이스 운영에 필요한 기초적인 내용은 모두 담고 있으며, 서버 개발자들의 경우 ORM 등을 사용할 때 필요한 대부분의 개념을 이 책을 통해서 학습하고 연습해 볼 수 있습니다. 이 책의 가장 큰 난관은 실습 관계형데이터 베이스가 MySQL이 아닌 psql이란 점이고, 이 난관을 극복하기만 하면 기대했던 것보다 더 훌륭한 결과를 가져다 준다.

  1. <<리팩토링 Refactoring - 코드 품질을 개선하는 객체지향 사고법, 마틴 파울러 (지은이), 김지원 (옮긴이), 한빛미디어, 2012>>
  1. <<윈도우 시스템 프로그램을 구현하는 기술, 이호동 (지은이), 한빛미디어, 2015>>

C++을 사용해서 윈도우 시스템의 동기/비동기를 구현하는 방법을 자세히 소개한 책입니다. 지금 이 시대를 살아가는 대부분의 국내 개발자가 Java 기반(정확히는 Spring 기반!)의 웹 서비스를 구현하고 있고, Node.js를 사용해서 멀티 플랫폼에 대응하는 이 시대에 윈도우 응용 소프트웨어와 연관되어 있을 이 책을 50권의 추천목록에 포함시킨 이유는 단 하나, 운영체제 시간에 열심히 배웠던 뮤텍스/세마포어를 사용해서 Thread Pool이나 Wait Queue를 직접적으로 구현해 볼 수 있는 거의 유일한 기회라 생각하기 때문입니다. 여러분이 직접 구현할 수 있다면, 사용하고 계신 오픈소스 라이브러리나 회사의 선배가 만들어놓은 다양한 '비동기' 코드를 수정하실 수 있을껍니다. 저수준 영역에서 코드가 어떻게 동작하는지 궁금하시다면 이 책을 통해서 실습해 보시길 추천드립니다. 제 개인적인 견해로 <<제프리 리처의 Windows via C/C++, 제프리 리처, 크리스토프 나자르 (지은이), 김명신 (옮긴이), 한빛미디어>>가 절판된 이후 윈도우 시스템 구현에 관한 가장 훌륭한 국내서라 할 수 있습니다.

  1. <<비밀의 언어 - 암호의 역사와 과학, 사이먼 싱 (지은이), 이현경 (옮긴이), 인사이트, 2015>>

이 책을 여러분에 추천드리는 가장 큰 이유는 '스토리'를 사용해서 암호의 발전 과정을 흥미진지하게 알려주고 현대 암호학의 발전사를 흥미롭게 소개하고 있기 때문입니다. 암호가 세계사의 어떤 흐름속에서 발전되었는지 바라본다면 어렵기만한 암호학을 조금 쉽게 접할 수 있습니다.
수학을 기반으로 설명되는 대부분의 암호학 관련 책은 암호학을 처음 접하는 분들에게 매우 생소하게 다가옵니다. 그런데 SSL, TLS 알고리즘 등을 프레임워크에서 자연스럽게 사용하고, HTTPS가 필수가 되어버린 시대에 암호학은 필수적인 교양이라 할 수 있습니다. <<비밀의 언어 - 암호의 역사와 과학, 사이먼 싱 (지은이), 이현경 (옮긴이), 인사이트, 2015>>를 시작으로 조금 더 전문적으로 학습하고 싶으시다면 <<컴퓨터 보안과 암호, 윌리엄 스탈링스 (지은이), 최용락 (옮긴이), 그린, 2011>>이나 <<처음 배우는 암호화 - 기초 수학부터 양자 컴퓨터 이후까지, 암호학의 현재와 미래, 장필리프 오마송 (지은이), 류광 (옮긴이), 한빛미디어, 2018>>를 참고하시면 좋을 듯 합니다. 류광님이 번역하신 책의 경우 출간이 올해(2018년) 7월이기 때문에 가장 최근에 사용되는 암호학 관련 내용이 반영되어 있고, '윌리엄 스탈링스'의 책은 연습문제등이 풍부해서 책을 읽고 충분히 연습해 볼 수 있습니다.

  1. <<컴퓨터 네트워킹 하향식 접근 - 제7판, James F. Kurose, Keith W. Ross (지은이), 최종원 (옮긴이), 퍼스트북, 2017>>

네트워크와 관련된 책의 가장 큰 특징은 들고 다닐 수 없을 만큼 두껍고, TCP/IP 스택 순서대로 설명한다는 점입니다. 이 두 가지 특징을 합치면 '들고 다닐수 없을만큼 두껍고 지루한 책'으로 요약할 수 있습니다. 이 책은 기존의 네트워크 책과 별다른 차이는 없지만, TCP/IP 스택을 역순으로 설명한다는 점입니다. 그리고 책의 내용이 일반 개발자가 읽기에 적당히 지루하다는 점도 특이할만 합니다. 이 책을 권하는 이유는 단 하나, 지루해도 어느 정도 버티고 버텨서 읽으면 네트워크 때문에 괴로울 일은 없습니다. 만약 두꺼운 책은 도저히 들고 다닐만한 상황이 아니고, 버틸 자신이 없다면 <<성공과 실패를 결정하는 1%의 네트워크 원리 - 2nd Edition, 츠토무 토네 (지은이), 이도희 (옮긴이), 이중호 (감수), 성안당, 2018>>을 권합니다(참고로 전 2009년에 출간된 2nd 책을 읽었습니다. 2018년에 새롭게 개정되어 나왔으니 책을 구매하실려면 최근 나온 책을 구매하세요).

  1. <<윤성우의 열혈 TCP/IP 소켓 프로그래밍 - 개정판, 윤성우 (지은이), 오렌지미디어, 2009>>

C, C++ 개발서적으로 유명한 윤성우님이 집필하신 TCP/IP 관련 교재입니다. 윈도우와 리눅스로 나뉘어져 TCP/IP 소켓 프로그래밍을 실습해 볼 수 있기 때문에 이 책 한권으로 TCP/IP 소켓 프로그래밍에 관한 내용을 손쉽게 실습해 볼 수 있습니다. 필요한 내용은 거의 다 있고, 절실한 내용(?)의 대부분이 가볍게 소개되어 있기 때문에 이 책에서 채워주지 않는 목마름은 <<
멀티플레이어 게임 프로그래밍 - 네트워크 게임의 아키텍처를 만드는 기술, 조슈아 글레이저, 산제이 마드하브 (지은이), 장준혁 (옮긴이), 길벗, 2017>> 과 같은 책을 통해서 배웠던 내용을 복습하시면 좋습니다. 그럼에도 불구하고, 이 책에 나온 정도의 간단한 소켓 프로그래밍부터 시작하지 않고선, 어떤 것도 해볼 수 없기 때문에 처음이라면 이 책과 함께 하시길 추천합니다.

  1. <<파이썬 라이브러리를 활용한 머신러닝 : 사이킷런 핵심 개발자가 쓴 머신러닝과 데이터 과학 실무서, 안드레아스 뮐러, 세라 가이도 (지은이), 박해선 (옮긴이), 한빛미디어, 2017>>

Python의 대표적인 머신러닝(Machine Learning) 라이브러리인 scikit learn를 사용해서 머신러닝의 전반적인 내용을 학습해 볼 수 있는 책입니다. 이 책을 통해서 학습했던 머신러닝을 실무에서 곧바로 사용할 수 있는지는 확신할 수 없습니다만 최소한 이 책을 통해서 머신러닝을 접해볼 수 있는 기회는 될 수 있습니다. 만약, TensorFlowKeras와 관련된 입문 도서를 원하시면 <<골빈해커의 3분 딥러닝 - 텐서플로 코드로 맛보는 CNN.AE.GAN.RNN.DQN (+ Inception) l 3분 딥러닝 시리즈, 김진중 (지은이), 한빛미디어, 2017>>나 <<블록과 함께 하는 파이썬 딥러닝 케라스, 김태영 (지은이), 디지털북스(아이생각), 2017>>을 참고하시면 됩니다.

  1. <<DDD Start! - 도메인 주도 설계 구현과 핵심 개념 익히기, 최범균 (지은이), 지&선(지앤선), 2016>>

DDD라는 개발 방법에 대한 내용을 JavaSpring 프레임워크를 사용해서 설명하고 있습니다. DDD의 경우 에릭 에반스의 책 <<도메인 주도 설계>>를 주요 참고도서로 사용하는 경우가 많지만, 에릭 에반스의 책은 나 같은 초심자가 쉽게 이해하기 쉽지 않기 떄문에 최범균님의 책을 시작으로 에릭 에반스의 책을 도전해 보는게 좋을 듯 싶습니다. 언제나 그렇듯이 개발 방법론과 관련된 책은 특정 개발 방법론에 제시하는 철학이나 이념에 침몰되지 않도록 항상 경계하면서 읽도록 하되, 구현과정을 생략하지 않도록 한다면 더 좋은 학습이 될 수 있습니다.

  1. <<해커를 위한 디자인 레슨, 데이비드 카다비 (지은이), 윤지혜 (옮긴이), 인사이트, 2012>>

UX(User Experience Design)에 대해서 잘 모르기 때문에 사족을 달 순 없지만, 이 책에 소개된 UX에 관련되 내용은 읽어서 납득 가능하고 이해가 되는 흔치 않은 디자인 관련 책입니다. 참고로 나는 DNA에 '디자인' 관련 세포가 없다고 생각하고 있음에도 불구하고 이렇게 UX 관련 책을 권해드리는 이유는 UX에 관한 내용을 조금이라도 알고 있으면 기획자와 디자이너와 함께 업무회의를 할 때 그들의 의도를 이해할 수 있는 실마리를 제공하기 때문에 읽어두시면 커뮤니케이션 정말 많은 도움을 줍니다.

  1. <<프로젝트가 서쪽으로 간 까닭은 - 프로젝트 군상의 86가지 행동 패턴, 톰 드마르코 (지은이), 이해영, 박재호 (옮긴이), 인사이트, 2009>>

왜 우리의 프로젝트는 항상 같은 문제가 발생하고, 어뚱한 해결책으로 문제를 덮어두는지 궁금하다면 이 책을 읽어보면 도움이 됩니다. 이 책을 읽는다고 해서 문제를 해결할 방법은 없겠지만 그래도 이 문제가 발생하는 비슷한 이유에 대한 통찰력만으로 충분히 가치있는 책이라 할 수 있습니다. 다른 책에 비해서 이 책이 가지는 작지만 큰 장점은 '톰 드마르코'가 쓰고, '이해영'님과 '박재호'님이 번역하셨기 때문에 내용과 번역에 관해선 걱정하지 않아도 됩니다.

  1. <<소트웍스 앤솔러지 - 소프트웨어 기술과 혁신에 관한 에세이, 마틴 파울러, 소트웍스 (지은이), 강규영, 최재훈 , 정지웅, 이창신, 안영회, 이대엽 (옮긴이), 위키북스, 2009>>

마틴 파울러가 파운더로 있는 소트웍스 개발자의 에세이를 묶은 책입니다. 그리고 이 책에 나오는 사례는 '전부' 국내에선 적용하기 힘들다는 이야기라는 것도 기억해두어야 합니다. 그리고 CEO가 '마틴 파울러'라 가능한 이야기 일 수 있음도 기억해 두어야 합니다. 이 책에 나온 해결책이나 독서를 통해서 얻은 '인사이트'를 무턱대고 따라하거나 마구잡이로 적용할 순 없지만 최소한 우리의 문제를 어떻게 해결했는지 엿볼 수 있는 좋은 기회를 제공합니다.

  1. <<조엘 온 소프트웨어 + 조엘이 엄선한 소프트웨어 블로그 베스트 29선 전2권 세트, 조엘 스폴스키 (지은이), 김기영, 강유, 허영주 (옮긴이), 에이콘출판, 2006>>

'Stack Overflow'를 설립한 '조엘 스폴스키'가 자신의 블로그에 적은 글을 갈무리해서 출판한 책입니다. 이 책의 내용 중에서 조엘 테스트는 많은 개발자에게 회자되었던 내용입니다. 책이 출간된지 10년이 넘었지만, 출/퇴근 시간에 가볍게 읽어보기에 좋고, 느꼈던 점이나 자신만의 의견을 가지고 동료들과 이야기해볼만한 주제가 많으니 기회가 된다면 읽어보시길 권합니다. 혹시 여기서 나오는 조엘 테스트를 실천하는 회사를 알고 있다면 저에게도 꼭 연락 부탁드립니다!

  1. <<테스트 주도 개발, 켄트 벡 (지은이), 김창준, 강규영 (옮긴이), 인사이트, 2014>>

TDD를 자신의 프로젝트나 회사 업무에 도입하고 싶다면 이 책을 꼭 참고하세요. 이 책은 단순히 이론만 알려주기 보다는 '통화변환' 프로그램을 가지고 튜토리얼 형식으로 테스트 주도 개발(TDD)를 소개하고 있습니다. 자신이 사용하는 언어와 테스트 유닛 혹은 프레임워크를 구성해서 이 책에서 소개한 예제를 만들어보는 과정을 통해 테스트 주도 개발의 기본이자 전부인 Red-Green-Refactor을 연습해 볼 수 있습니다.

  1. <<실용주의 프로그래머, 데이비드 토머스, 앤드류 헌트 (지은이), 정지호, 김창준 (옮긴이), 인사이트, 2014>>

Perl의 예찬자인 두 명의 저자가 쓴 개발자를 위한 '격언집'입니다. 그 중에서 대부분의 논의가 '기본적인' 내용을 다루고 있기 때문에 개발을 처음 시작하는 분에서 많은 경험을 가지고 있는 개발자까지 누가 읽어도 좋을 내용이 가득합니다. 책에 나온 내용 중에서 좋은게 많으니 시간이 허락한다면 여러번 읽어보면 좋고, 순서대로 읽지 않더라도 자신이 관심있는 주제부터 읽어도 충분하니 부담스럽게 생각하지 말고, 천천히 읽어두면 좋습니다.

  1. <<생각하는 프로그래밍 - 프로그래밍 본질에 관한 15가지 에세이, 존 벤틀리 (지은이), 윤성준, 조상민 (옮긴이), 인사이트, 2013>>

ACM(Association for Computing Machinery)에 연재된 기사(article)을 묶어서 출판한 책입니다. 기사의 주제가 큰 틀에서 묶여있긴 하지만 내용이 분량에 비해서 월등히 어렵기 때문에 대충 대충 읽다보면 TAOCP(The Art of Computer Programming)에 버금가는 수준입니다. 반면, 대충 내려놓고 기사의 주제를 알아본다는 생각으로 대충 읽으면 그 나름대로 얻을 수 있는 것들이 있습니다. 저는 대충읽기를 권하지만 착실하게 읽으려고 노력하면 더 좋은 성과를 얻을 수 있습니다. 일단 대충 읽어도 평타칩니다. 왜냐면 이 책은 개발자에게 생각하는 방법을 훈련하고 학습시키는 책이기 때문입니다.

  1. <<맨먼스 미신 - 소프트웨어 공학에 관한 에세이, 프레더릭 브룩스 (지은이), 강중빈 (옮긴이), 인사이트, 2015>>

1975년에 나온 책인데 21세기에 읽어도 어떤 내용인지, 무슨 일이 벌어지고 있는데 충분히 몰입하면서 읽을 수 있는 책입니다. 두고 두고 몇번을 읽어도 계속 새롭고, 다시금 어제의 일인듯 합니다. 나의 개발환경은 책에서 소개된지 40년 이후임에도 불구하고 우리의 환경은 왜 변하지 않을까요? 궁금하신가요? 이 책을 읽어보세요. 만약 여러분이 PM이나 PL을 바라보고 있다면 이 책은 꼭 읽어보시면 좋습니다. 이 책과 다른 듯 하지만 비슷한 <<피플웨어 - 3판, 톰 드마르코, 티모시 리스터 (지은이), 이해영, 박재호 (옮긴이), 인사이트, 2014>>도 참고해 보시면 좋습니다.

  1. <<해커와 화가, 폴 그레이엄 (지은이), 임백준 (옮긴이), 정희 (감수), 한빛미디어, 2014>>

Lisp로 만든 인터넷 스토어를 Yahoo!에 판매한 ViawebCEO인 폴 그레이엄의 수필집입니다. 지금은 Y Combinator의 공동 창업자이자, 가장 유명한 IT 뉴스 사이트인 해커 뉴스(Hacker News)를 운영했습니다. 저자는 전문 '창업가'라고 해도 과언이 아닙니다. Lisp 개발자이며 유명 스타트업의 창업자의 경험을 살려서 이 책의 곳곳에 자신의 주장과 많은 생각을 담아두었습니다. 최소한 창업을 생각하신다면 이 책의 몇가지 챕터는 읽어보시면 좋습니다. 한동안 절판되어서 구하기 힘들었던 책인데, 2014년에 다시 출간되어서 편하게 읽을 수 있어서 감회가 새롭습니다.

  1. <<소프트웨어 컨플릭트 2.0 - 개정판 위키북스 IT Leaders 시리즈 9, 로버트 L. 글래스 (지은이), 이해영, 박재호 (옮긴이), 위키북스, 2009>>

소프트웨어 발전과정에서 일어난 다양한 논쟁의 과정을 모아놓은 책입니다. 논쟁이라 하면 부정적인 선입견이 강하지만 이런 논쟁을 거쳐서 만들어진 오늘날의 개발환경에 대해서 조금 더 깊은 이해를 가질 수 있습니다. IEEE에 연재된 기사를 모아서 출판했기 때문에 논쟁과 관련된 다양한 참고문헌도 확인할 수 있습니다. 이 책은 오늘날 우리를 지탱하는 기술의 피튀기는 기술 논쟁의 역사를 한 눈에 보실 수 있습니다. 유사한 책으로 <<우리가 미처 알지 못한 소프트웨어 공학의 사실과 오해, 로버트 L. 글래스 (지은이), 윤성준, 조홍진 (옮긴이), 인사이트, 2004>>도 참고하시면 좋습니다.

  1. <<미래를 바꾼 아홉 가지 알고리즘 - 컴퓨터 세상을 만든 기발한 아이디어들, 존 맥코믹 (지은이), 민병교 (옮긴이), 에이콘출판, 2013, 2013>>
  1. <<클린 코드 Clean Code - 애자일 소프트웨어 장인 정신, 로버트 C. 마틴 (지은이), 이해영, 박재호 (옮긴이), 인사이트, 2013>>>

앞서 소개한 '클린 코더'가 '소프트웨어' 개발에 관한 내용을 다루고 있다면 이 책(클린 코드)는 '함수', '변수 이름'등과 같이 코드 작성에 필요한 몇가지 이야기를 차근 차근 풀어나가고 있습니다. 습관이 되기전까지 꾸준히 연습밖에 없는데, 이 책을 기준으로 연습하신다면 좋은 결과를 얻을 수 있습니다. 이와 유사한 책으로 <<코딩 호러의 이펙티브 프로그래밍 - 스택 오버플로우 공동 창립자가 알려주는 소프트웨어 개발의 비밀, 제프 앳우드 (지은이), 임백준 (옮긴이), 위키북스, 2013>>도 있는데 이 책은 팀단위 개발에 필수적인 '인간관계'에 대한 내용을 다루고 있습니다. 만약 팀단위 개발 혹은 개발팀의 문화에 관심이 있다면 이 책을 참고해보세요.

  1. <<알고리즘 산책 - 수학에서 제네릭 프로그래밍까지, 알렉산더 A. 스테파노프, 다니엘 E. 로즈 (지은이), 서환수 (옮긴이), 길벗, 2018>>

수학적 이론을 코드로 변경하는 방법을 차근 차근 소개하고 있으며, 수학식과 함께 간단한 코드도 같이 소개하고 있는 독특한 책입니다. 수학적 개념이 컴퓨터 알고리즘에 어떻게 영향을 주고 어떻게 발전하는지 알 수 있으며, 이산수학에서 다루고 있지 않은 '카테고리 이론' 등에 관한 논의등 컴퓨터에 사용되는 다양한 수학적 개념을 익힐 수 있습니다. 이와 유사한 책으로 <<Concrete Mathematics 구체 수학 - 컴퓨터과학의 기초를 다지는 단단한 수학, 로널드 L. 그레이엄, 도널드 커누스, 오렌 파타슈닉 (지은이), 류광 (옮긴이), 인사이트, 2018>>도 있습니다. 참고로 전 '알고리즘 산책'을 권하며 '구체 수학'의 경우 참고용 구매하시기 전에 꼭 서점에 가서 읽어보시길 권해드립니다.

  1. <<린 스타트업 - 지속적 혁신을 실현하는 창업의 과학, 에릭 리스 (지은이), 이창수, 송우일 (옮긴이), 인사이트, 2012>>

현대의 다양한 개발방법 중에서 가장 많은 영향력을 미쳤던, 개발 방법론을 소개하고 있습니다. 대부분의 스타트업에서 기본적으로 을 적용하고 있으며, 애자일 개발 방법과 함께 많은 팀에서 적용하고 있습니다. 다양한 형태로 변경되어서 여러 팀에 각자의 형태로 변형되어 사용된 개발방법론에 관한 가장 기본적인 아이디어를 소개하는 책이기 때문에 얇고 큰 어려움 없이 읽을 수 있습니다. 이 책이 마음에 드시면 <<린 UX - 린과 애자일 그리고 진화하는 사용자 경험 l 한빛미디어 IT 스타트 업 시리즈, 제프 고델프, 조시 세이던 (지은이), 김수영 (옮긴이), 김창준 (감수), 한빛미디어, 2013>>등 관련 책들을 참고해 보시면 더 넓은 시각을 가질 수 있을 듯 합니다.

p.s. #1 오타 및 오류는 천천히 수정하겠습니다. (선배포 후검증)
p.s. #2 다른 책 추천 받습니다. 연락주세요!
p.s. #3 스타트업처럼 혁신하라, 함께 자라기 추천 받았습니다. 읽어보도록 하겠습니다. 감사합니다!


  • update : 2019.01.14

    • 24번 <<클린 코더>> 출판사 누락된 것 추가
  • update : 2018.08.27

    • 책 추가 및 삭제
    • 대규모 변경으로 기존 글 수정없이 새로운 글 작성
  • update : 2018.02.14

    • 순서 및 책 제목 표기 방법 변경
  • update : 2017.12.22

    • 절판 서적 교제 및 삭제
    • ML, 선형대수 및 함수형 관련 책 추가
  • update : 2016.02.11

    • 절판 서적 링크 수정 및 도서 추가/삭제
  • update : 2015.12.31.

    • 링크 수정