개발자의 서재

개발자를 위한 주옥(珠玉)같은 추천 도서

지구빵집 2021. 12. 6. 10:16
반응형

 

 

개발자가 꼭 읽어야 하는 추천 도서

 

어느 분야나 그렇듯이 반드시 읽어야 할 책이 존재한다. 특히 세월이 지나도 변치 않는 원리와 사람에 대한 연구가 많이 포함된 내용일수록 오래간다. 그런 책 목록은 자주 업데이트되지 않는다. 컴퓨터는 10년 동안 많이 변하지만 사람은 그렇지 않기 때문이다. 더 잘 동작하는 쉬운 소프트웨어와 제품을 개발하기 위해서는 사람이 어떻게 작동하는지 이해해야 한다. 아래 소프트웨어 개발자가 반드시 읽어야 할 추천 도서가 바로 그런 책이다.

 

아이디어가 처음 생겨나서 제품으로 판매해 수익을 거두기까지가 100이라면 기술이 차지하는 비율은 많이 잡아도 약 20%에 미치지 못한다. 나머지 80%는 사람을 이해하고, 사용법을 관찰하고, 판매를 위해 고객을 설득하고, 사람을 뽑고, 교육하고, 다른 사람들과 관계를 맺고 소통하는 일이다. 광범위하게 퍼지는 기술 역시 기술의 질적 문제에 있는 게 아니라 사람에게 얼마나 널리 받아들여지느냐의 문제다. 

 

번호는 편의상 붙이고 번역서와 원서 제목을 같이 표기한다. 책 이미지는 번역서를 위주로 올리고 없을 경우 원서 이미지를 첨부한다.

 

1. Code Complete 2

 

책상 앞에 책꽂이에 두고 언제든 꺼내서 아무 데나 펼쳐보는 책입니다. 소프트웨어 개발에 대한 광범위한 주제들과 꼭 알아야 할 원리에 대해 상세하게 설명합니다. 오랜 시간이 지나도 질리지가 않는 책.

 

Steve McConnell의 Code Complete 2는 소프트웨어 개발자를 위한 즐거운 요리를 제공합니다. 이 책을 읽는다는 것은 당신의 일을 즐기고, 당신이 하는 일에 진지하며, 계속해서 발전하고 싶다는 것을 의미합니다. Code Complete에서 Steve는 평균적인 프로그래머가 1년에 한 권 미만의 기술 서적을 읽는다고 말합니다. 이 책을 읽는 것만으로도 이미 동료 개발자의 좋은 코딩 방법에서 90% 차별화됩니다. ^^ 주변 개발자에게 호의를 베풀어주세요. 이 책을 당신이 읽은 첫 번째 책으로 만들고 동료 개발자들에게 추천하는 첫 번째 책으로 만드십시오. 

 

2. 맨먼스 머신 The Mythical Man-Month 

 

 

틀림없이 우리 분야의 유일한 고전 책. 안 읽으셨다면 부끄럽습니다. 나는 모든 개발자에게 Mythical Man Month의 사본을 집어 들고 오랫동안 없어진 OS에 대한 이야기와 그것을 개발한 오래전에 없어진 팀에 대한 이야기를 찾지 말라고 도전합니다. 놀랍게도 관련성이 있습니다. 25년 된 이 책은 한 가지 요점을 대담하게 보여줍니다. 컴퓨터는 바뀔 수 있지만 사람은 그렇지 않습니다. 이 고전적인 작품을 읽는 것이 최신 천 페이지의 기술 책을 읽는 것보다 확실히 시간을 더 잘 활용하게 될 것입니다. 

 

3. (사용자를) 생각하게 하지 마!

 

 

내가 읽은 최고의 사용성 책. 제목은 "웹 사용성"이라고 말하지만 가짜 특수성에 속지 마십시오. Steve Krug는 이 책에서 모든 중요한 사용성 개념을 다루고 잘 다루고 있습니다. 거의 재미있습니다. 사용성에 관한 책을 한 권만 읽으려면 이 책을 선택하십시오. 훌륭한 정보로 가득 차 있으며 간결하고 접근하기 쉬운 형식으로 제공됩니다. 기술, 비기술, 사용자, 개발자, 관리자 등 모든 청중에게 적합합니다. 

 

4. 프로젝트 쾌속 개발전략 RAPID DEVELOPMENT 

 

프로젝트 쾌속 개발전략 RAPID DEVELOPMENT 

 

이 책의 전체 제목은 Rapid Development: Taming Wild Software Development Schedules입니다. 이 책은 장황하고 막연하게 우스꽝스러울 뿐만 아니라 불행한 잘못된 명칭이기도 합니다. 급속한 발전은 급속한 발전에 관한 것이 아닙니다. 그것은 *실패의 현실*에 관한 것입니다. 대부분의 소프트웨어 개발 프로젝트는 실패할 것입니다. 일정을 초과하거나, 표준 이하의 결과를 생성하거나, 때로는 전혀 완료하지 못할 것입니다. 이것은 논쟁이 아닙니다. 통계적 사실입니다.

 

불쾌한 진실은 당신의 팀이 단순히 실패를 피하려면 매우 훌륭해야 하고 성공하려면 훨씬 더 적다는 것입니다. 즉 우울하게 들릴 수도 있지만 - 그래, 그것입니다 당신은 여전히 이 책을 읽을 수 있습니다 depressing-. 왜요? 성공의 절반*은 당신이나 다른 사람들이 저지른 같은 실수를 반복하지 않기 때문입니다. 이 책에서 제시하는 깨달음은 실수를 하는 것이 좋다는 것입니다.

 

모든 것이 새롭고, 노래하고, 춤추는 실수가 모두 있는 한 말입니다. 똑같은 고전적인 실수를 저지르고 있다면 시작도 하기 전에 실패한 것입니다. 그리고 당신은 지금 이러한 실수 중 하나를 저지르고 있을 가능성이 얼마나 되는지 모를 것입니다. 우리 분야는 변화가 유일하게 변하지 않는 몇 안 되는 분야 중 하나이므로 그러한 변화를 수용하고 다른 "신속한" 개발 기술을 시도하는 것은 지극히 자연스러운 일입니다. 그러나 그 반대는 사실이 아니다. 우리는 1970년 이후로 너무 많이 변하여 우리의 최신 기술과 비교할 때 모든 오래된 소프트웨어 개발 수업이 쓸모없고 부적절하다고 가정할 수 없습니다. 그것은 똑같은 오래된 이야기입니다. 컴퓨터가 변했습니다. 사람들은 하지 않았습니다. 시작하기 전에 적어도 작동하는 것과 작동하지 않는 것에 대한 약간의 아이디어가 있어야 합니다. McConnell의 말에 따르면 "그림을 그리기 전에 페인트 통에 있는 지침을 읽으십시오." 물론, 당신이 이 책을 읽고 우리 분야에서 실제로 그런 일이 얼마나 드물게 일어나는지 깨닫기 전까지는 충분히 명백하게 들립니다.

 

* 책에 따르면 기술적으로 1/4입니다. 하지만 그 이상이라고 생각합니다. 

 

5. 피플웨어 Peopleware  

 

 

올스타 스포츠 팀의 경기력이 좋지 않은 코칭으로 인해 고통받는 것을 본 적이 있다면 이 책을 높이 평가할 것입니다. 그들 중 누구도 서로 이야기하거나 어떤 것에 동의할 수 없을 때 얼마나 많은 "코딩 슈퍼스타"가 있는지는 중요하지 않습니다. 그리고 아무리 재능 있는 개발자라도 사소한 방해로 끊임없이 공격을 받을 때 효과적으로 일할 수는 없습니다. 개발자는 그 자체로 대인관계 기술로 알려져 있지 않지만 아이러니한 부분이 있습니다. 프로젝트의 성공은 바로 그것에 달려 있다는 것입니다. 이름뿐 아니라 실제로 "팀 리더"가 되고자 하는 정당한 열망이 있다면 이 책을 구입해야 합니다. Peopleware는 훌륭하고 완전히 유효한 요점으로 가득 차 있지만 대부분의 회사에서 순수한 환상인 작업장에 대한 직원 통제 수준을 의미하기도 합니다. 그러나 적어도 작업 환경이나 팀이 언제 진짜 문제인지, 그리고 더 중요한 것은 이에 대해 어떻게 해야 하는지 알게 될 것입니다. 

 

6. 도널드 노먼의 디자인과 인간 심리 The Design of Everyday Things  

 

 

디자인의 고전인 이 책은 문, 온도 조절기, 자동차 등 일상용품을 통해 인간의 행동과 심리를 이해하게 도와주는 대중심리서로, 그리고 디자인의 심리학적 원리와 실제의 복잡성을 스케치해 주는 디자인 입문서로도 가치가 높다. 그러면서도 디자인의 주요 논점을 명쾌하게 제시함으로써 디자이너와 관련 종사자들에게 인간 행동과 심리의 이해가 좋은 디자인의 출발점이 된다는 것을 깨우쳐 준다. 또한 디자인을 중심으로 심리학, 공학, 경영학 등 여러 분과가 융합되는 종합과학으로서 디자인학의 비전을 제시한다. 

 

많은 것이 잘못될 수 있기 때문에 소프트웨어를 개발하는 것은 매우 실망스러울 수 있습니다. 우리가 하는 많은 일은 방어적인 것입니다. 잘못되기 전에 무엇이 잘못될지 예상하려고 합니다. 정신적으로 피곤하고 결국 부정적인 방식으로 나타날 수 있습니다. 나는 때때로 이것을 기술이 아닌 사람들에게 천 개의 움직이는 부품으로 시계를 만드는 것으로 설명합니다. 좋은 시간! 소프트웨어를 설계하는 것은 확실히 어렵지만 문을 설계하는 것도 어렵습니다. 최신 SQL 엔진이든 평범한 신발이든, 디자인의 뉘앙스가 만지는 모든 물체로 확장됩니다. 이 책은 당신에게 "세부적인 것의 악마"에 대한 새로운 감상을 줄 것이다. 문을 디자인하는 것이 우리가 생각했던 당연한 일이 아니라면, 소프트웨어를 완벽하게 디자인할 수 없다는 것에 대해서도 잠시 휴식을 취해야 할 때입니다. 

 

7. About Face 4 인터랙션 디자인의 본질 목표 지향 디자인부터 스마트기기 환경까지, 시대를 초월하는 UX 방법론 

 

 

사용성의 대부인 Visual Basic의 아버지 Alan Cooper. 나는 지금 이 책의 몇 가지 버전을 소유하고 있으며(이것은 버전 4입니다), 이 책은 개정됨에 따라 점점 더 좋아지고 있고 다른 관점에 대해 더 많은 저자가 추가되는 희귀한 책입니다. About Face는 모바일과 웹에 일반적으로 적용되는 가이드라인으로 가득 차 있습니다. 설명에 사용된 GUI 문제 중 - 오래된 Windows 95 UI의 예와 함께 - 대부분이 해결된 것과 (대화 상자 선택의 효과를 보여주기 위해 시각적 예제를 사용하여) 그렇지 않은 것을 비교하는 것은 흥미롭습니다. 모달 바보 같은 절차). 그것은 매우 유용한 책입니다. 내가 작업한 프로젝트의 가이드로 전체 챕터를 사용했습니다. 

 

8. 정신병원에서 뛰쳐나온 디자인 (The) Inmates are running the asylum 

 

 

이 책은 페르소나의 개념을 세상에 소개한 책입니다. 사용자를 추상적이고 설명하기 어려운 무정형의 사람들 그룹으로 생각하기보다 페르소나는 이름, 성격, 필요, 그리고 목표. 사용자가 인쇄 미리 보기 기능을 원합니까? 누가 알아? 그러나 회계 담당자인 Gerry Manheim이 업무의 일부로 주간 경비 보고서를 인쇄해야 하는 경우 인쇄 미리 보기가 있어야 한다고 생각하는 것이 좋습니다. 여기에 마법 같은 것은 없습니다.

 

항상 그렇듯이 사용자가 누구이며 실제로 무엇을 하는지 아는 것으로 귀결되며 페르소나 기술은 거기에 도달하는 좋은 방법입니다. 개발자가 실제로는 아무것도 아닌 "일반" 사용자를 대신하여 사용성 결정을 내릴 자격이 있다고 생각하는 경향이 있다는 흥미로운 분석도 있습니다. 개발자는 기껏해야 "Homo Logicus" 대 "Homo Sapiens"인 기발하고 극단적인 사용자입니다. 개발자가 최종 사용자인 컴파일러를 작성하지 않는 한. 이 책의 숨겨진 교훈 중 하나는 디자인이 얼마나 좋은지는 때때로 중요하지 않다는 것입니다. Alan이 상담하고 이 책에서 예로 사용하는 스캐너 소프트웨어와 웹 개발 소프트웨어는 모두 다음과 같은 이유로 시장에서 실패했습니다. 사용성과는 관련이 없습니다. 이는 입증할 정도로 탁월했습니다.* 때때로 훌륭한 제품은 아무리 노력해도 제어할 수 없는 이유로 실패합니다. 이 사실을 자유롭게 사용하여 책의 때로는 과장된 어조의 균형을 맞추십시오.

 

* 책에 나온 "비하인드 키보드" USB 스캐너의 정확한 모델을 소유하고 있었고 번들로 제공되는 스캔 소프트웨어에 깊은 인상을 받았습니다. 나는 결국 이 스캐너를 아버지께 드렸다. 한 번은 내가 그와 전화로 채팅을 하고 있었는데 전혀 묻지 않고 그가 스캐닝 소프트웨어를 얼마나 좋아하는지 나에게 말했습니다. 책이 나오기 전의 일이다! 

 

9. Programming Pearls 생각하는 프로그래밍 : 프로그래밍 본질에 관한 15가지 에세이 (프로그램 프로그래밍 프로그래머) 

 

 

나는 프로그래밍 펄 을 포함하는 것을 주저했는데, 그 이유는 이 책이 상당히 낮은 수준의 코딩 기술을 다루고 있기 때문입니다. 그러나 이 책에는 개발자의 시간을 투자할 가치가 충분히 있는 소프트웨어 장인 정신의 "진주"가 충분히 포함되어 있습니다. 이 그래프가 포함된 모든 책.. 

.. 금의 무게만큼 가치가 있습니다. 48n 대 n 3 알고리즘을 설명하기 위한 TRS-80 대 DEC Alpha? 여러분, 이보다 더 좋을 순 없습니다. 펄 프로그래밍은 1년 정도 마스터 프로그래머와 나란히 작업하는 것 다음으로 가장 좋은 것입니다. 간결하고 소화 가능한 칼럼으로 정제된 많은 숙련공 코더의 집단적 지혜입니다. 나는 당신에게 거짓말을 하지 않을 것입니다. 아마도 무시할 수 있는 전체 챕터가 있습니다. 예를 들어, 오늘날의 이러한 기본 프리미티브의 성숙한 라이브러리를 고려할 때 각각 11, 13 및 14열에 설명된 대로 정렬, 힙 또는 해시 알고리즘을 구현하는 것은 상상할 수 없습니다. 그러나 모든 교과서적인 지루한 연습에는 실제적이고 실용적인 조언이 있습니다. 코드 섹션을 무시하고 책을 스캔하면 실망하지 않을 것입니다. 열 8, "봉투의 뒷면"은 필수적이며 아마도 내가 어디에서나 본 것 중 가장 좋은 평가 방법일 것입니다. 또한 회사가 우리를 괴롭히는 것을 좋아하는 미친 면접 질문을 설명하는 데 큰 도움이 됩니다. 온라인에서 책의 샘플 섹션을 읽을 수 있습니다. 당신이 여전히 울타리에 있다면. 나는 최근에 빈 데이터베이스를 채우기 위해 합성 데이터를 생성할 때 Markov 체인을 사용하는 방법을 설명하기 위해 문자열에 대한 장을 사용했습니다. "Back of the Envelope"에서 다룬 성능 평가 기술입니다. 

 

10. 실용주의 프로그래머 The Pragmatic Programmer : From Journeyman to Master  

 

 

이 책은 나에게 많은 프로그래밍 진주를 생각나게 하지만 코드에 덜 집중하기 때문에 실제로는 더 좋다. 코드에 대해 걱정하는 대신 저자는 현실 세계에서 작동하는 모든 실용적인 접근 방식을 이 한 권의 책으로 요약했습니다. 이 모든 것이 기술적으로 프로그래밍되는 것은 아닙니다. 예를 들어, "내가 왜 이 일을 하고 있는가? 이것이 할 가치가 있는 일인가?"라고 자문해 보십시오. 상자 밖에서 생각하지 않습니다. 자신과 동료를 제정신으로 유지하기 위해 일상생활에 통합해야 하는 것입니다. 이것이 Pragmatic Programmer를 훌륭한 책으로 만드는 이유입니다. 이 책에 대해 조금 더 알고 싶다면 내용에 대한 멋진 개요를 제공하는 내부에 포함된 풀아웃 참조 카드의 HTML 버전을 만들었습니다. 

 

11. 사용하기 쉬운 웹사이트가 성공한다. Designing Web Usability : The Practice of Simplicity  

 

 

Jakob Neilsen은 사용성 사이트로 잘 알려져 있으며 사용성 전문가로서의 경력은 그의 첫 번째 책이 출판된 1989년으로 거슬러 올라갑니다. Designing Web Usability는 물론 완전한 웹 사용성 입문서이므로 GUI 지향 Cooper 책과는 약간 다릅니다. 

 

12. The Visual Display of Quantitative Information 

 

 

13. 정규표현식(한 권으로 끝내는) Regular Expressions Cookbook [1 edition | Paperback]  

 

 

UNIX는 복잡하고 침투할 수 없다는 평판이 있습니다. 정규 표현식도 마찬가지입니다. 나는 "Keep It Simple Stupid" 클럽의 카드 소지 회원일 수 있지만 정규 표현식에 대해 유성 크기의 예외를 만들고 있습니다. 적절하게 작성하면 문자열 조작에서 엄청난 시간을 절약할 수 있으며 어딘가 에서 유용하지 않은 프로젝트를 실행한 적이 없습니다. 정규 표현식의 세계에 빠져들면 정규 표현식의 놀라운 능력과 잠재력에 취해 Perl과 같은 결과를 얻게 될 수 있습니다. 절대 권력은 절대 부패한다는 것을 기억하십시오. 그러나 그것은 또한 절대적으로 흔들립니다. 

 

 

참고 

Recommended Reading for Developers 

프로그래머 필독서 64선

개발자 필독서 55권 (1)  

 

 

 

 

반응형