서브메뉴

본문

심플 소프트웨어 (코드의 단순성, 가독성, 안정성, 유지보수)
심플 소프트웨어 (코드의 단순성, 가독성, 안정성, 유지보수)
저자 : 맥스 카넷-알렉산더
출판사 : 길벗
출판년 : 2019
ISBN : 9791160509519

책소개

Google의 기술 책임자로서, 버그질라 프로젝트의 수석 아키텍트로서 활동하면서 얻은 통찰과 깨달음을 이 한 권에 담았다. 수많은 프로그래머가 올바른 방법으로 소프트웨어를 설계하고, 더 나은 코드를 작성하도록 도와준 ‘소프트웨어 설계 원칙’을 차근차근 이야기해 준다.
[알라딘에서 제공한 정보입니다.]

출판사 서평

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



Google의 코드 건강(Code Health), 즉 코드의 가독성, 안정성, 단순성, 유지보수성은 어떻게 개선되어 왔을까? 오픈소스 버그질라(Bugwilla)는 어떻게 침체기를 벗어나 다운로드 수를 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. 사용자의 의도 전달을 막지 않는다

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



찾아보기
[알라딘에서 제공한 정보입니다.]