Book

입사 후 책 읽은 목록

  • 개발자의 글 쓰기

  • Clean Code

  • 말의 그릇

  • 언어의 온도

  • 일상의 악센트

입사 후 읽고 있는 책 목록

추천받은 책?

  • 객체지향적으로 생각하라

  • 헤드퍼스트 - OOP

  • XP

  • 조엘온소프트웨어

개발 필독서

실용주의 프로그래머

  • 프로그래머의 마음 가짐에 대해서 알려주는 책들 중 가장 적절한 분량에, 핵심 메시지를 잘 요약 전달 해주는 책이다.

  • 자신이 프로그래머인 행세만 하고 살고 싶은 지, 프로그래머가 되고 싶은 지를 이 책의 가르침을 얼마나 따를 수 있는 지로 평가해도 될 만큼 좋은 책.

대체 뭐가 문제야?

  • 이 책은 프로그래밍 서적이 아니지만, 나는 프로그래머의 필독서로 전혀 부족함이 없는 책이라고 생각한다.

  • 프로그래머는 난제를 자주 맞이하는 숙명을 안고 사는데, 이 숙명에서 유용할 수 있는 책이라고 확신한다.

  • 특히 문제 해결을 위해선, 해결 능력 혹은 해결 권한을 가진 사람의 문제로 만들어야 한다는 얘기는, 직업 프로그래머 생활 하는 내내 큰 도움이 되었다.

누워서 읽는 알고리즘

  • 먼저 나온 것은 행복한 프로그래밍이지만, 나는 임백준씨 서적 중에 제일 먼저 읽게 된 서적이다.

  • 어려운 알고리즘을 누워서 읽을 수 있다고? 약을 파는 듯한 제목이었지만, 그 약은 마약도 아니고 나에게 충격이며 감동이었다.

  • 알고리즘 이야기를 다양한 주제와 엮어 쉽게 표현한 임백준씨의 재능은 임작가라는 별명 처럼 뛰어나며, 개발자계의 로맨티스트가 아닐까 싶은 감동을 주었다.

  • 당신이 프로그래밍으로 인해 조금 지친다면, 이 책을 읽어보는건 어떨까?

행복한 프로그래밍

  • 위에서 너무 극찬을 많이해서 딱히 쓸말은 없다.

  • 다만 프로그래밍으로 인해 행복하다는, 행복하기 위해 프로그래밍 한다는 그런 말도 안될거 같은 이야기에 속아보고 싶다면 이 책을 읽어봐라. 아마도 임백준씨의 다른 책들도 모두 읽게 되겠지만, 시작은 이 책이나, 누워서 읽는 알고리즘이 적당할 것이다.

Refactoring

  • 이 책을 제대로 읽고, 리스크가 적게 리팩토링해라.

  • 특히 서비스 중인 코드를 고칠땐 더더욱.

  • 괜히 설계 다 뒤엎고 새로짜면서 리팩토링한다고 착각하지 말자.

  • 리팩토링은 동일한 동작을 유지하면서라는 전재가 있다. 잊지 말자.

Legacy 코드 활용 전략

  • Legacy 코드에서 배워라.

  • Legacy 코드를 안정적으로, 개선하는 Test Driven Refactroing에 대한 방법과 방향성에 대해서도 알 수 있는 좋은 서적이다.

  • 몇몇 방법은 Legacy 코드를 감추면서라도, 기존 동작을 유지하라는 이야기도 있는데, 찜찜하면서도 합리적인 해결책중 하나였다.

    • 어찌보면 문제를 격리하고, 이외의 영역을 Clean하게 관리하고 보호할 수 있다면 그것도 나쁘지 않겠다 싶은 결론이다.

Test Driven Development

  • 지금은 한풀 꺾인 TDD에 대한 바이블.

  • 지금은 TDD보다는 유닛 테스트 자체가 살아남은 편이고, 코드 리뷰에 대한 관점이 더 많이 고민되고 있는게 사실이지만, TDD 자체가 무의미하진 않다.

    • 번거로울 뿐.

    • 그 번거로움을 낮추는 이야기가 없고, 쉽지 않은 문제라 (프로젝트의 상황과 레거시 코드의 뿌리에 따라 다르기 때문) 그렇겠지만, TDD로 개발할 수만 있다면 퀄리티는 예상보다 크게 높아진다.

    • TDD를 한다고해서, 코드 리뷰나, 별도의 QA가 없어도 되는것은 아니다. □ 방심 금물.

    • Art of Unix Programming

폴리글랏 프로그래밍

  • 자바의 발전 속도가 더디다 못해, 멈췄다고 느낄 때 쯤 나온 서적.

  • C#의 빠른 발전 속도와 발전 방향에 대한 찬양의 내용이 많아 국내에선 이견이 많았던 서적.

  • 지금은 자바도 빠른 발전 속도를 내고 있지만, 오라클의 유료화로 인해 자바의 운명은 어찌 될지 잘 모르겠다.

  • 결론은 적재 적소에 합리적인 언어 사용을 통해 효율과 완성도를 올리자는 이야기.

Modern Effective C++

  • 이제는 C++ 0x 이후와 이전으로 나뉜다.

  • 11, 14, 17등 마일스톤을 정해가며 지속적으로 발전하고 있는 C++에 대한 깊은 이해를 원한다면 이 책이 최적이다.

  • C++이 죽지 않았다고 주장하는 사람들의 근거가 될 수 있는 서적.

The C++ Programing Language

  • TCPL이라 불리우는 C++의 창시자 비야네 스트롭스투룹의 저서.

  • C++의 다양한 문법과 제약이 어떠한 근거로 만들어졌는지 알 수 있는 서적으로써, 언어에 대한 이해도를 한층 높일 수 있다.

  • 이제와서는 Modern Effective C++과 같이 읽어야 더 큰 의미가 있을 서적.

    • 현재 Modern C++의 발전 방향과 당시의 비야네 스트롭스투룹의 생각과 비교하면서 읽어보자.

코딩호러의 이펙티브 프로그래밍

  • 스택 오버 플로우의 창시자가 말해주는 소프트웨어 개발/관리 이야기.

  • 스택 오버 플로우의 창업자가 조엘만 알았는데, 제프 앳 우드가 엔지니어링 적인 부분을 대부분 책임지고 개발했다는 것을 나중에 알았다.

  • 해외에서도 지원자에 대한 검증 이슈나, 프로그래밍도 못하는데 프로그래머로 지원하는 지원자가 있어서 괴롭다는 이야기를 할줄 몰랐다. 꽤나 큰 충격.

  • 원격 개발을 하면서도 퀄리티를 낼 수 있고, 내고 있다는 사실에도 꽤나 큰 충격이었다.

  • 이외에도 훌륭한 선배 프로그래머의 생각과 조언을 들을 수 있는 훌륭한 서적이 아닌가 싶다.

7가지 동시성 이론

  • 병렬 처리에 대한 다양한 접근과 구현 방법, 변화 방향등을 살펴보며 대용량 처리의 근간인 병렬 처리 (동시 처리)에 대한 이해도를 높일 수 있다.

  • 스케일 인 아웃이 중요하다지만, 여전히 인스턴스 내에서의 처리량도 크게 중요한 문제다. (쓰루풋 대비 스케일 아웃 해야 할 인스턴스가 덜 필요하기 때문)

  • 그런 측면에서 꼭 읽어볼만한 책이 아닌가 싶다.

  • 함수형 프로그래밍이 왜 화두인지, 스칼라가 왜 주목받았었는지, 액터 모델이 왜 각광 받았는지 등을 짧은 시간에 이해할 수 있는 좋은 책이었다.

Joel On Software & More Joel On Software

  • Trello와, 사업적 영역을 담당했지만 stack overflow로 더 유명한 조엘.

  • 그의 통찰력 있는 개발에 대한 철학과 철칙을 배울 수 있는 멋진 서적이다.

    • 처음 읽었던게 2005년인데, 주기적으로 읽을 때 마다 더 많은 걸 공감하고, 느껴지는게 많아지는 좋은 책이다.

    • 애초에 그가 블로그에 쓴 글 중 일부러 옮겨온 만큼, 좋은 개발자는 어때야 하며, 좋은 개발팀은 어때야 하고, 좋은 회사는 좋은 개발자를 위해 무엇을 해야 하는지 뚜렷하게 제시했고, 합당했다.

소프트웨어 장인

  • 큰 기대를 하지 않고 봤으나, 꽤나 괜찮은 내용이 많았다.

  • 다만 현재 상황이 어떤가에 개의치 않고, 너는 잘해야되 라는 내용이 많아서, 꼰대같은 내용이라는 생각이 들 수도 있는 책이었다.

  • 내 생각과 동일한 부분은 환경이 사람을 만든다는 말도 맞지만, 환경이 여의치 않더라도 내 자신을 발전 시켜놔야 더 좋은 환경을 내가 만들 수도, 그 환경을 쟁취할 수도 있다고는 생각한다.

Effective 시리즈

  • 저자는 다르지만, C++의 scott meyers씨처럼 저명한 분들이 각 언어로 저술해주고 있는 언어의 철학, 깊이를 충족 시켜줄 수 있는 좋은 서적이다.

  • C++만해도, Effective C++, More Effective C++, Modern Effective C++ 3권이나 있고, Effective Java, Effective C# 등의 서적이 존재하는데, 해당 언어를 좀 더 이해하고 싶다면 꼭 읽어보는 것이 좋다고 생각한다.

    • 저자가 다른데도 퀄리티가 준수한 것은, 애초에 언어의 문화, 철학에 대한 이해를 돕는 주제 자체가 좋은 거 같기도 하다.

C로 배우는 알고리즘 1 & 2

  • 특정 언어에 편중된 책은 가급적 추천을 하고 싶지 않지만, 자료 구조와 알고리즘의 기초 언어로 가장 적합한 것이 C언어이다보니, 추천을 하게 됐다.

    • 나 역시 대학 교재의 부족한 설명과 모호한 설명을, 이 책이 대신해줬다.

    • 두고 두고 기억에 남는 자료 구조 및 알고리즘 기초 서적이라고 볼 수 있다.

린 소프트웨어 개발

  • 애자일 개발서라지만, 실제론 효율론에 가깝다고 볼 수 있다.

  • 수많은 애자일 방법론 서적이 있지만, 그 중에 가장 와닿고, 효율에 대해 다시 생각할 수 있는 거리들도 많아서 큰 도움이 된 서적이다.

피플웨어

  • 요즘 들어 많이 중요하다고 더 느껴지는 책이다.

  • 목표 지향적, 결과 중시 적어도 한국의 게임 회사에서, IT 회사에선 너무 많이 봤다.

  • 조직의 동기부여에는 실패해놓고, 왜 열정이 없느냐고, 자신이 만들고 있는 제품을 사랑하지 않느냐고?

    • 애사심이라는 것이 어떻게 생기는 것이고, 그것이 어떤 결과를 가져다 주는지 고민해봐야 하는 사람들 (관리자, 경영진)이 읽어봤으면 좋겠는 책.

    • 하지만 그 들은 이런 책 읽지 않겠지….

사랑하지 않으면 떠나라

  • 절판 된 서적이라 구하기 쉽지 않겠지만, 나는 개발자 들이라면 꼭 한번은 읽었으면 좋겠다고 생각하는 책이다.

  • 꽤나 많은 개발자들이 곰같다. 둔하고 무던하고, 변화를 두려워한다.

  • 그래서 불편하고, 괴롭고, 동기부여가 부족함에도 자신의 문제로 치부하고 묵묵히 일한다.

    • 그렇다고 최상의 결과나, 좀 더 나아진 결과를 내는 데에도 실패한다.

    • 왜냐면 이미 일은 일이 되어버렸고, 열정은 사그라졌지만 별다른 대안을 찾기에 두려움도 존재해 현실에 안주하기 때문이다.

  • 또한 회사의 선택과 회사에서의 자신의 포지션, 자신의 업무가 그 회사에서 어떤 가치를 가지는 업무인지 등에 대한 다양한 생각을 가질 수 있게 도와준다.

  • 책 제목이 강하게 번역되서 그렇지, 실제론 이직 추천서, 이직 종용서는 아니고 회사 생활을 좀 더 가치있고, 즐겁게, 동기부여 되어 업무에서의 성취감을 찾을 수 있게 도와주는 자기 개발서라고 보는 것이 더 옳다.

  • 제목에 대한 편견을 버릴 수 있다면, 어떠한 마음가짐으로 개발자로써의 회사 생활을 맞이해야 하는지 판단에 도움을 줄 책이라고 생각한다.

해커와 화가

  • 해커 (뛰어난 프로그래머. 프로그래밍 그 과정 자체를 즐기는 사람이라는 의미가 강하게 사용됨)를 화가에 비유하는 독특한 시점으로 쓰여진 책.

  • 역자 서문에서 임백준씨도 밝히지만, 책 곳곳에서 느껴지는 오만하게 보일 수 있는 보수적인 관점이 불편할 수도 있다.

  • 다만 프로그래밍을 온전히 즐기고자 했을 때, 어떠한 부분이 화가의 그것과 비슷한 지에 대한 그의 생각은 흥미로웠다.

  • 프로그래머를 단순 공돌이로만 치부하기도 하는 현실도 무시하기 힘든 건 사실이지만, 프로그래밍에 대한 개념을 좀 더 독특한 관점에서 말해주기에, 그런 생각이 꽤 많은 프로그래머들에게 자극이었고, 발상의 전환에 도움이 될 좋은 이단스러운 책이라고 생각한다.

전반적으로 측정 언어에 편중된 책은 배제하려다보니, 인문학 관점에 가까운 책들을 더 많이 추천한 것 같다.

특정 언어에 편중된 책들 중에서 좋은 책을 추천하고 싶었는데, 아무래도 프로그래머 필독서로는 애매한게 아닌가 싶더라.

C++, C#, Java 등의 특정 언어에 편중된 서적은 따로 작성하는 것이 맞겠다는 싶더라. 다음 필독서 모음은 그렇게 작성해보겠다.

참고