길벗·이지톡

도서 IT 전문서 IT교양

100년 뒤에도 유용할 소프트웨어 설계 원칙 & 프로그래머의 바른 길!

단순함을 추구하라! 더 나은 프로그래머가 될 것이다! 

그러나 단순함을 추구하는 것은 어려운 일이다. 하지만 생각해 보자. 나는 프로그래머고, 지금 내 앞에는 해야 할 일이 있다. , 이제 어떻게 할 텐가? 나는 뭐든 할 거면 그 분야에서 제일 앞서 나가기 위해 최선을 다해야 한다고 생각한다. 다른 사람들에게도 그렇게 살라고 권하고 싶다. 다음과 같이 말이다.

 

어차피 할 거라면 왜 잘하지 않나요? 더 능숙하게 할 수 있으면 일하는 게 더 즐겁지 않을까요? 자신이 한 일을 보고 다른 사람이 감동한다면 어떨까요? 하루를 마치고 집으로 가는 길에 그날 무언가를 잘 해낸 기억이 떠오른다면 어떨까요? 현재보다 아주 조금이라도 삶이 더 즐거워지지 않을까요?”

 

Google의 코드 건강(Code Health), 즉 코드의 가독성안정성단순성유지보수성은 어떻게 개선되어 왔을까오픈소스 버그질라(Bugzilla)는 어떻게 침체기를 벗어나 다운로드 수를 10배 이상 늘렸을까그 중심에는 이 책의 저자 맥스-카넷 알렉산더가 있다. Google의 기술 책임자로서버그질라 프로젝트의 수석 아키텍트로서 활동하면서 얻은 통찰과 깨달음을 이 한 권에 담았다수많은 프로그래머가 올바른 방법으로 소프트웨어를 설계하고더 나은 코드를 작성하도록 도와준 소프트웨어 설계 원칙을 차근차근 이야기해 준다.


목차

지은이 서문

옮긴이 서문

 

1부 프로그래머를 위한 원칙

__1장 시작하기 전에

____할 거면 잘하라

__2장 엔지니어의 자세

__3장 능력자 프로그래머의 한 가지 비밀

__4장 두 문장으로 요약한 소프트웨어 설계

 

2부 소프트웨어의 복잡성과 원인

__5장 복잡성의 단서

__6장 복잡성을 키우는 방법: API 분리

__7장 하위 호환성이 가치를 잃는 시점은 언제인가?

__8장 복잡성은 감옥이다

 

3부 단순성과 소프트웨어 설계

__9장 설계는 프로젝트 초반에 하라

____올바른 방법 도입하기

__10장 미래 예측의 정확성

__11장 단순성과 엄격성

__12장 둘은 너무 많다

____리팩토링

__13장 분별 있는 소프트웨어 설계

____잘못된 방법

____잘못된 방법 분석

____이 작업을 여러 사람이 함께한다면?

____올바른 방법

____우리는 소프트웨어 설계 법칙을 따랐다

 

4부 디버깅

__14장 버그란 무엇인가?

____하드웨어

__15장 버그의 원인

____복합적인 복잡성

__16장 재발을 방지하라

____재발 방지 예시

____토끼굴로 들어가기

__17장 디버깅의 기본 철학

____버그 파악하기

____시스템 살펴보기

____진짜 원인 찾기

____4단계

 

5부 엔지니어링 팀에서 일하기

__18장 엔지니어링 생산성을 효과적으로 개선하기

____그러면 어떻게 해야 할까?

____해결책

____신뢰와 문제 해결

____장애물

____근원적 문제를 향해 나아가기

__19장 개발자 생산성 측정하기

____‘생산성의 정의

____‘LOC’는 어떨까?

____유효한 기준 정하기

____코드가 제품이라면?

____개발자 생산성 개선 담당자라면?

____결론

__20장 소프트웨어 회사에서 코드 복잡성을 다루는 법

____1단계: 문제 목록

____2단계: 회의

____3단계: 버그 리포트

____4단계: 우선순위 선정

____5단계: 과제

____6단계: 계획

__21장 리팩토링할 때는 기능에 주목하라

____효과적으로 일하기

____리팩토링 한계 설정하기

____리팩토링을 하면 시간이 절약된다

____명확하게 만들어라

____정리

__22장 친절과 코드

____소프트웨어에서 중요한 건 사람이다

____친절의 예

____친절하게 더 나은 프로그램을 만들어라

__23장 간략하게 살펴보는 오픈 소스 커뮤니티

____기여자 유지하기

____장벽 없애기

____관심 유도하기

____아주 인기 있는 제품이 돼라

____인기 있는 프로그래밍 언어로 만들어라

____정리

 

6부 소프트웨어 이해하기

__24장 컴퓨터란 무엇인가?

__25장 소프트웨어 구성 요소: 구조, 동작, 결과

__26장 소프트웨어 개정판: (I)SAR 구별하기

____구조

____동작

____결과

____코드 한 줄에 담긴 ISAR

____SAR 정리

__27장 지식으로서의 소프트웨어

__28장 기술의 목적

____반대 사례도 있을까?

____기술의 발전이 좋은것인가?

__29장 간략하게 살펴보는 프라이버시 문제

____공간의 프라이버시

____정보의 프라이버시

____정리

__30장 단순성과 보안

__31장 테스트 주도 개발과 관찰 주기

____ODA 사례

____개발 프로세스와 생산성

____첫 번째 ODA

__32장 테스트 철학

____테스트 가치

____테스트 단언문

____테스트 범위

____테스트 가정

____테스트 설계

____E2E 테스트

____통합 테스트

____단위 테스트

____현실

____가짜

____결정론 177

____속도 178

____커버리지 180

____결론: 테스트의 전반적인 목표 180

 

7부 나아지기

__33장 성공의 비밀: 나아지기

____이 방법이 왜 효과가 있었을까?

__34장 개떡 같은 부분을 찾는 방법

__35아니요의 힘

____나쁜 아이디어 알아내기

____나쁜 아이디어 내지 않기

____거절과 무례는 다르다

__36장 프로그래머가 개떡 같은 이유

____무엇을 배워야 할까?

__37장 빠른 프로그래밍의 비결: 생각하지 않기

____이해하기

____그리기

____시작하기

____단계 건너뛰기

____신체적 문제

____주의 집중하기

____자기 회의

____잘못된 통념

____주의 사항

__38장 개발자의 자만심

__39일관성획일성은 다르다

__40장 사용자는 문제를 알려주고 개발자는 해결책을 만든다

____신뢰와 정보

____문제는 사용자에게서 나온다

__41장 즉각적인 만족감 = 즉각적인 실패

____해결책은 장기적인 관점으로 찾아라

____소프트웨어 회사를 망가뜨리는 방법

__42장 성공은 혁신이 아니라 실행에서 온다

__43장 훌륭한 소프트웨어

____1. 사용자의 명령을 정확하게 따른다

____2. 사용자가 예상한 대로 작동한다

____3. 사용자의 의도 전달을 막지 않는다

____코드를 단순하게 만드는 것보다 탁월하게 만드는 게 더 중요하다. 이 둘은 상충되지 않는다

 

찾아보기

 

더보기접기

저자

ㆍ지은이 맥스 카넷-알렉산더(Max Kanat-Alexander)

저자소개

Google의 코드 건강(Code Health, 즉 코드의 가독성, 안정성, 단순성, 유지보수)에 대한 기술 책임자다. 또한, 버그질라(Bugzilla) 프로젝트의 수석 아키텍트였다. codesimplicity.com fedorafaq.org를 운영하고 있으며, 저서로는 Code Simplicity(한빛미디어)가 있다.

ㆍ옮긴이 이미령

저자소개

가치 있는 콘텐츠를 우리말로 공유하려고 자원봉사로 시작한 번역이 신문 기사, 온라인 콘텐츠 번역을 지나 결국 전문 번역가의 길까지 이어졌다. 모든 일을 재미있게 하는 비결은 아이 같은 호기심을 잃지 않는 데 있다고 믿고 있으며, 사람과 사람, 사람과 컴퓨터 간의 연결 분야에 관심이 많다. 

저서

옮긴 책으로는 『소프트스킬』, 『생각하는 냉장고 뉴스 읽는 장난감』, 『누구나 쉽게 배우는 자바스크립트』, 『사용자를 생각하게 하지 마!』, 『멀티디바이스 UX 디자인』 등이 있다. 


보도자료

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.