이미지 확대/축소가 가능합니다.

닫기


소프트웨어 개발 업계 종사자를 위한 현장감 있고, 삐딱하고, 대담한 조언들
튜링상 수상자 도널드 E. 커누스 추천 도서


15년 넘게 수많은 코더와 IT 업계 종사자들에게 현장의 날카로운 통찰력을 공유해 온 Kode Vicious는 프로그래머들이 현업에서 겪는 중차대한 문제들에 관한 핵심적인 조언을 전한다. ACM Queue와 Communications of the ACM에 게재된 KV의 칼럼들 중 가장 인기 있는 주제를 꼽아 수록한 첫 번째 칼럼집에서 그는 여전히 개발 업계에서 논쟁을 일으키고 있는 주제들, 코드부터 사람 사이의 관계까지 폭넓게 다루며 문제 해결의 실마리를 제공하고 있다.

KV의 오랜 경험에 기반한 이 실용적인 조언들은 시스템 세부사항과 기능 확장 방법을 탐구하는 열정적인 프로그래머, 실무를 위한 프로그래밍 및 협업에 관한 조언을 얻고자 하는 이들을 비롯해 코딩을 평생의 업으로 삼고 있는 모든 개발자들이 반드시 알아야 할 내용들로 구성되었다.



도널드 E. 커누스의 추천사
서문
감사의 말
역자의 말
저자 및 역자 소개
베타 리더의 말

[CHAPTER 1] 손 안의 코드
1.1 자원 관리
1.2 크고 아름다운 메모리
1.3 친절한 코드
1.4 코드 남용
1.5 중첩 경향
1.6 질식할 것만 같은 변경사항들
1.7 저주받은 코드
1.8 강요된 예외
1.9 누워서 떡 먹기... 아니 코드 보기
1.10 무언가 썩었는데...
1.11 로그 남기기
1.12 분실물
1.13 복사하기
1.14 코딩할 때 짜증나는 다섯 가지
1.15 언어들 속에서 길을 잃다
1.16 체크인 주석

[CHAPTER 2] 코딩 수수께끼
2.1 메서드를 위한 찬가
2.2 C++는 얼마나 +된 건가?
2.3 세련되고 모던한 무언가
2.4 캐시 미스가 뭐죠?
2.5 코드 동굴탐험
2.6 입력 검증
2.7 문서화 흥정하기
2.8 Foo 필드에는 뭐가 있는 거야?
2.9 성깔 있는 테스터
2.10 테스트 방법
2.11 테스트 모드를 그대로 두세요!
2.12 유지보수 모드
2.13 일찍 머지하기
2.14 멀티코어 만티코어
2.15 이건 제품이 아니야
2.16 하이젠버그(Heisenbugs)
2.17 나는 당신의 PDF 따위 원치 않습니다
2.18 PIN 코드 관리
2.19 재부팅
2.20 코드 스캐너
2.21 하드웨어 디버깅
2.22 분별성 vs. 가시성

[CHAPTER 3] 시스템 디자인
3.1 추상화
3.2 내몰리다
3.3 재방문 유도
3.4 가역적 변경(Changative Changes)
3.5 바늘에 실 꿰기(thread the needle)
3.6 스레드는 여전히 안전하지 않은가?
3.7 인증 vs. 암호화
3.8 다시 인증으로
3.9 예시로 보는 인증
3.10 크로스 사이트 스크립트
3.11 피싱(phishing)과 감염
3.12 UI 디자인
3.13 안전한 로그 남기기
3.14 Java
3.15 P2P 보안

[CHAPTER 4] 기계에서 기계에게
4.1 발가락 밟기
4.2 부족한 포트
4.3 프로토콜 디자인
4.4 뭐가 먼저야?
4.5 네트워크 디버깅
4.6 지연 시간(latency)
4.7 장거리 주행
4.8 네트워크는 컴퓨터다
4.9 확장 실패
4.10 포트 대기열
4.11 야생의 네트워크
4.12 의미없는 PKI
4.13 표준 위에 표준

[CHAPTER 5] 사람과 사람
5.1 오만과...
5.2 무슨 색깔이게...?
5.3 깨진 빌드
5.4 지능이란?
5.5 디자인 리뷰
5.6 호스트 이름 짓기
5.7 면접 진행
5.8 미신
5.9 구닥다리 코더
5.10 큰 힘에는...
5.11 편지
5.12 티켓에 있어
5.13 드라이버와 망치
5.14 보안 리뷰
5.15 다시 일하기
5.16 오픈소스 라이선스
5.17 너무 많은 표준들
5.18 책들
5.19 (한 번 더) 책들
5.20 최신 정보 유지
5.21 마지막 조언

색인
크레디트



상세 이미지 1



| 이 책에서 다루는 주제
· 손 안의 코드 : 특정 코드로 해야 할 일(또는 하지 말아야 할 일)
· 코딩 수수께끼 : 테스트, 문서화를 비롯한 코드 관련 문제들
· 시스템 디자인 : 추상화, 스레드부터 보안에 이르는 전체 시스템 설계 주제
· 기계에서 기계에게 : 분산 시스템 및 컴퓨터 네트워킹
· 사람과 사람 : 타인과 소통하고 조율하며 쌓아 가는 개발자 커리어

오늘도 코딩의 부산물로 하루를 연명하는 사람들에게 전하는 최고의 에세이

"소프트웨어 막장에 오신 것을 환영합니다."

이 책은 소프트웨어 스택이라는 거대한 똥 덩어리로 이루어진 산에서 일하고 있는 이들에게 전하는 Kode Vicious의 헌사입니다. 그는 어디선가 받은 편지에 대한 답신 형태로 프로그래머가 일상에서 마주하는 문제들을 다루며 질문하고, 질문하고, 또 질문하는 소크라테스식 문답으로 코더들의 무지를 일깨웁니다. 또한 흥미롭고 지적인 탐색에서 한발 더 나아가 컴퓨터 과학 세계를 둘러싼 광범위한 주제를 조명하며 전문적인 자료를 통해 문제 해결에 필요한 통찰력을 제공합니다.

· 코드를 손 안에서 쥐락펴락하기 위해서 반드시 고려해야 할 스타일과 코딩의 핵심(정확성, 간결성, 조합성)에 대해 다룹니다.
· 시스템이 만들어지고 나서 발생하는 디버깅, 문서화, 테스트 등과 관련된 문제를 살펴보며 전반적인 시스템 성능 및 코드에 관한 조언을 전합니다.
· 잘 디자인된 시스템이 무엇인지 설명하기 위해 적절한 추상화, 스레드 프로그래밍, 보안이라는 주제로 좋은 시스템의 핵심을 이야기합니다.
· 분산 시스템, 네트워크 프로토콜 디자인 등에 대한 내용을 통해 기계 간 통신, 즉 컴퓨터 네트워킹에 관한 유용한 지침을 제시합니다.
· 업계 내 동료들과 소통하고 조율하고 협업하는 방법, 참조할 만한 레퍼런스 등 개발자의 커리어 관리를 위한 노하우를 알려 줍니다.

냉소적인 위트와 유머가 가득한 Kode Vicious의 글은 '코딩이란 무엇인가'를 고민하며 코딩을 평생의 업으로 삼고 끊임없이 탐구하는 개발자들에게 문제 해결의 실마리와 더불어 더 나은 개발자로 성장하기 위한 방향을 제시합니다.

저자의 말

저 스스로도 마무리 지을 거라 생각지 못했던 Kode Vicious의 첫 번째 책을 택해 주셔서 감사합니다. 저도 제가 잡지에 15년 이상 100회 이상의 기고를 할 줄은 몰랐습니다. 그렇지만 인생은 뒤틀리고 기묘한 것입니다. 특히 동료가 자원봉사를 해줄 희생자를 주변에서 찾을 때 재빠르게 몸을 숙이지 못했다면 말이죠.
KV는 지킬 박사 내면의 하이드처럼 제가 때때로 되고 싶거나 그렇게 변신해 버리기도 하는 또 다른 인격입니다. 제가 KV가 되고 싶은 때는 어떤 미팅에서 제가 안경을 시끄럽게 벗어 던지고, 손으로 대머리를 매만지며, ‘어떻게 이렇게 멍청할 수 있지?!’라는 생각이 들 때입니다. 만약 당신이 저와 함께 회의에 참여했는데 제가 그런 행동을 하고 있다면, 직전에 말한 사람이 바보라는 뜻으로 이해하면 됩니다. 멍청한 사람들을 치거나 두드려 팬다고 그들이 더 똑똑해지는 건 아니라서 이런 생각들을 KV의 칼럼에 담기 시작했습니다. 덕분에 누군가에게 폭언을 쏟아내면서도 감옥에 가지 않고 그 대신 소정의 수익도 발생하게 되었습니다.
제 글은 분노에서 비롯되고 분노는 제가 잘하는 것이라 저는 그동안 꾸준히 칼럼을 작성해 올 수 있었습니다. 그리고 마침내 이 책이 나왔습니다. 이 책을 쓰는 데 들인 분노로 인해 재활에 시간이 얼마나 걸릴지는 아직 모르겠습니다.

역자의 말

이 책은 개발 업계 종사자들에겐 매우 재미있는 이야기입니다. 술 한잔 곁들여가면서 하면 이 책에서 다루는 주제들로 밤새도록 이야기할 수 있을 겁니다.
저자의 페르소나인 KV는 성깔 있는 조언가로, 번역하는 내내 그의 페르소나가 저와 함께하며 끊임없이 우려와 분노를 표출했습니다. 개발이라는 제 생업에서 벌어지는 순간순간을 KV가 다루는 내용들과 비교하며 바라본 경험은 ‘연옥’과 ‘지옥’의 재발견이었지만, 스스로 성장하는 중요한 계기이기도 했습니다. KV는 마침내 제 손끝에서 떠나갔지만 저는 이제 KV의 시선과 생각을 느끼며 이 업계를 살아갑니다. 이 성깔 있는 조언자를 여러분에게 소개시켜 드리게 되어 영광이며, 끝으로 이 책이 세상에 나오는 데 도움을 주신 관계자 분들과 사랑하는 가족에게 감사의 말씀을 전합니다. 감사합니다. 그리고 탈모 조심하세요.