구글 엔지니어는 이렇게 일한다 : 구글러가 전하는 문화, 프로세스, 도구의 모든 것
저자

타이터스윈터스,톰맨쉬렉,하이럼라이트

저자:타이터스윈터스(TitusWinters)
구글에2010년에합류한선임소프트웨어엔지니어.지금은C++표준라이브러리를설계하는글로벌소위원회위원장이며,구글에서는매달12,000명의엔지니어가수정하는2억5천만라인의코드로이루어진C++코드베이스의라이브러리리더를맡고있습니다.지난7년동안은최신자동화및도구를사용하여구글C++코드베이스의기본구성요소들을재구성,유지보수,개선하는팀을이끌었습니다.그과정에서역사상가장큰리팩터링10위안에들만한여러프로젝트를경험했습니다.리팩터링도구제작과자동화구축을지원하면서엔지니어와프로그래머가‘무언가를동작하게만들기’위해취할수있는수많은지름길을직접접했습니다.구글에서만경험할수있는규모와관점이소프트웨어시스템의관리와공급에대한타이터스의생각전반에영향을미쳤습니다.

저자:톰맨쉬렉(TomManshreck)
구글에서2005년부터소프트웨어엔지니어링부분테크티컬라이터로근무하며인프라와언어에관한주요프로그래밍가이드를작성하고관리하는업무를담당했습니다.2011년부터는구글C++라이브러리팀에합류하여구글C++문서자료를만들고,(타이터스와함께)구글C++교육클래스를론칭했으며,구글의오픈소스C++코드인Abseil의문서화도진행했습니다.매사추세츠공과대학교에서정치학학사와역사학사를받았습니다.구글에합류하기전에는피어슨,프랜티스홀,다양한스타트업에서편집장으로근무했었습니다.

저자:하이럼라이트(HyrumWright)
구글에2012년에합류한소프트웨어엔지니어.구글C++코드베이스의대규모유지보수업무를담당했습니다.구글역사에서구글코드베이스를가장많이수정한사람으로손꼽히며구글의자동변경도구그룹을이끌고있습니다.텍사스대학교에서소프트웨어엔지니어링박사학위를받았고카네기멜론대학교에서비정기방문교수로재직중입니다.콘퍼런스연사로활발히활동하며소프트웨어유지보수및진화관련학술문헌을꾸준히기고합니다.

역자:개앞맵시(이복연)
고려대학교컴퓨터학과를졸업하고삼성전자에서자바가상머신,바다플랫폼,챗온메신저서비스등을개발했습니다.주업무외에분산빌드,지속적통합,수명주기관리도구,애자일도입등동료개발자들에게실질적인도움을주는일에적극적이었습니다.그후창업전선에뛰어들어소셜서비스,금융거래프레임워크등을개발하다가,무슨바람이불어서인지책을만들겠다며기획편집자(자칭WisdomCompiler)로변신했습니다.한빛미디어에서『밑바닥부터시작하는딥러닝』시리즈,『리팩터링2판』,『EffectiveUnitTesting』을,인사이트에서『이펙티브자바3판』과『JUnit인액션2판』을번역했습니다.개발자들과의소통창구로소소하게facebook.com/dev.loadmap페이지를운영중입니다.

목차

[PartI전제]
CHAPTER1소프트웨어엔지니어링이란?
1.1시간과변경
1.2규모확장과효율성
1.3트레이드오프와비용
1.4소프트웨어엔지니어링vs프로그래밍
1.5마치며
1.6핵심정리

[PartII문화]
CHAPTER2팀워크이끌어내기
2.1내코드를숨기고싶어요
2.2천재신화
2.3숨기는건해롭다
2.4모든건팀에달렸다
2.5마치며
2.6핵심정리

CHAPTER3지식공유
3.1배움을가로막는장애물
3.2철학
3.3판깔아주기:심리적안전
3.4내지식키우기
3.5질문확장하기:커뮤니티에묻기
3.6지식확장하기:누구나가르칠게있다
3.7조직의지식확장하기
3.8가독성제도:코드리뷰를통한표준멘토제도
3.9마치며
3.10핵심정리

CHAPTER4공정사회를위한엔지니어링
4.1편견은피할수없다
4.2다양성이필요한이유이해하기
4.3다문화역량갖추기
4.4다양성실천하기
4.5단일한접근방식거부하기
4.6확립된프로세스에도전하기
4.7가치vs결과
4.8관심을잃지말고전진하자
4.9마치며
4.10핵심정리

CHAPTER5팀이끌기
5.1관리자와테크리드(혹은둘다)
5.2개인기여자에서리더로
5.3엔지니어링관리자
5.4안티패턴
5.5올바른패턴
5.6예상못한질문
5.7그외조언과요령
5.8사람은식물과같다
5.9마치며
5.10핵심정리

CHAPTER6성장하는조직이끌기
6.1늘결정하라(AlwaysBeDeciding)
6.2늘떠나라(AlwaysBeLeaving)
6.3늘확장하라(AlwaysBeScaling)
6.4마치며
6.5핵심정리

CHAPTER7엔지니어링생산성측정하기
7.1엔지니어링생산성을측정하는이유
7.2선별:측정할가치가있는가?
7.3GSM프레임워크:목표와신호를뒷받침하는의미있는지표선정하기
7.4목표(goal)
7.5신호(signal)
7.6지표(metric)
7.7데이터로지표검증하기
7.8조치를취하고결과추적하기
7.9마치며
7.10핵심정리

(중략)

[PartIV도구]
CHAPTER16버전관리와브랜치관리
16.1버전관리란?
16.2브랜치관리
16.3버전관리@구글
16.4모노리포(단일리포지터리)
16.5버전관리의미래
16.6마치며
16.7핵심정리

CHAPTER17CodeSearch
17.1CodeSearchUI
17.2구글개발자가CodeSearch를이용하는방법
17.3독립된웹도구로만든이유
17.4규모가설계에미치는영향
17.5구글은어떻게구현했나?
17.6구글이선택한트레이드오프
17.7마치며
17.8핵심정리

CHAPTER18빌드시스템과빌드철학
18.1빌드시스템의목적
18.2빌드시스템이없다면?
18.3모던빌드시스템
18.4모듈과의존성다루기
18.5마치며
18.6핵심정리

CHAPTER19Critique:구글의코드리뷰도구
19.1코드리뷰도구원칙
19.2코드리뷰흐름
19.31단계:변경생성
19.42단계:리뷰요청
19.53~4단계:변경이해하고댓글달기
19.65단계:변경승인(변경에점수매기기)
19.76단계:변경커밋
19.8마치며
19.9핵심정리

CHAPTER20정적분석
20.1효과적인정적분석의특징
20.2정적분석을적용하며깨우친핵심교훈
20.3Tricorder:구글의정적분석플랫폼
20.4마치며
20.5핵심정리

CHAPTER21의존성관리
21.1의존성관리가어려운이유
21.2의존성임포트하기
21.3(이론상의)의존성관리
21.4유의적버전의한계
21.5자원이무한할때의의존성관리
21.6마치며
21.7핵심정리

CHAPTER22대규모변경
22.1대규모변경이란?
22.2누가대규모변경을처리하나?
22.3원자적변경을가로막는요인
22.4대규모변경인프라
22.5대규모변경프로세스
22.6마치며
22.7핵심정리

CHAPTER23지속적통합
23.1지속적통합이란?
23.2지속적통합@구글
23.3마치며
23.4핵심정리

CHAPTER24지속적배포
24.1지속적배포이디엄@구글
24.2속도는팀스포츠다:배포를관리가능한조각으로나누기
24.3변경을격리해평가하자:기능플래그로보호하기
24.4기민해지기위한분투:릴리스열차갖추기
24.5품질과사용자에집중:사용할기능만배포하자
24.6원점회귀:데이터에기초해더일찍결정하자
24.7팀문화바꾸기:배포규율세우기
24.8마치며
24.9핵심정리

CHAPTER25서비스형컴퓨트
25.1컴퓨트환경길들이기
25.2관리형컴퓨트에적합한소프트웨어작성하기
25.3시간과규모에따른CaaS
25.4컴퓨트서비스선택하기
25.5마치며
25.6핵심정리

출판사 서평

구글러가공개하는기업에혁신을가져다주는엔지니어링전략
여러분이또하나의거대한소프트웨어엔지니어링기업‘구글’을만들필요는없습니다.다만구글이그간쌓아온숱한노하우를모른다면,여러분은수만명의엔지니어가20년넘게조화를이뤄다듬어온소프트웨어엔지니어링의지식을놓치게됩니다.모른척하기에는너무도값진지식일것입니다.이책에서는구글의소프트웨어엔지니어와테크니컬라이터가뭉쳐구글의독창적인엔지니어링문화,프로세스,도구를소개합니다.단순히도구의기능과활용법을넘어구글의팀들이따르는철학과프로세스까지아주상세히설명합니다.또한프트웨어조직이코드를설계,작성,유지관리할때절대잊어서는안되는세가지기본원칙도함께살펴봅니다.이책에담긴수만명의구글러가여러시행착오끝에검증한실전대응기법이적용된다양한사례와예제로,소프트웨어엔지니어링의핵심을꿰뚫어보는시각을얻어훌륭한엔지니어로거듭나길바랍니다.

<추천사>
경험이있는개발자는프로그래밍과소프트웨어엔지니어링이다르다는것을압니다.집중한머리는비트와춤을추고,눈은모니터화면을응시하고,손은키보드를두드리는게프로그래밍입니다.그렇다면소프트웨어엔지니어링은무엇일까요?이질문에대한답은이책에서찾을수있습니다.구글개발자특유의풍성하고,깊고,날카로운사고를담은이책을좋은개발자로성장하고싶은모든이에게권합니다.
임백준,삼성리서치

이책은구글이지금의자리까지이르게하는데가장큰이바지를한소프트웨어엔지니어들이구글에서실제로어떻게일하고있는지알려줍니다.그래서소프트웨어엔지니어링과관련된문화,프로세스,도구들에대한고찰을통해고품질의소프트웨어를효과적으로개발하는데필요한통찰을얻을수있습니다.
권순선,구글글로벌머신러닝생태계프로그램리드

지난19년간구글검색팀에서소프트웨어엔지니어,엔지니어링매니저와디렉터를거치면서보고경험했던내용이이책한권에담겨있어서매우놀라웠습니다.소프트웨어엔지니어뿐만아니라IT분야에종사하는모든이에게이책을추천합니다.
이준영,구글소프트웨어엔지니어링디렉터

그간여러곳에소개된구글의소프트웨어엔지니어링은단편적이었습니다.하지만이책은구글엔지니어링의역사,변화과정,소프트웨어개발을다각도로들여다봅니다.작게는구글이사용하는도구,넓게는문서화,깊게는의존성관리,대규모변경,지속적배포등을다룹니다.이책은성장하는엔지니어링조직에서일하고있는모든이에게‘어떤문제를어떻게접근해야하는가'에대한좋은가이드가되어줄겁니다.
서민구,구글코리아테크리드메니저

우리는소프트웨어엔지니어입니다.소프트웨어엔지니어링은단순히고객의요구사항을해소하는것에만그치지않습니다.문제의근본원인을찾고개선해나가며,지속가능성과확장성을고려하여최적의결과물을만들어나가야합니다.이책은소프트웨어엔지니어로나아가기위한길을제시해주고있습니다.이책과함께라면우리에게더큰보상과기회의문이열리게될것입니다.
당근마켓,서비스코어부문

구글의아리스토텔레스프로젝트를통해성공하는팀이가져야하는기준을알게되어,그내용을사내에적용하고코칭하면서많은것을배웠고좋은성과도일궈냈습니다.이책에는이렇게성공하는팀이엔지니어링측면에서일하는방식과문화를어떻게만들어가는지에대한내용이담겨있습니다.이책을통해알게된내용들을과제와조직에적용할생각을하니벌써부터가슴이뜁니다.
우경우,삼성전자조직개발코치SWITCH사무국

지금까지출간된‘구글은이렇게한다’식의책들과달리,불친절한개념설명도없고구글의뛰어난시스템자랑나열도별로없습니다.그저인터넷서비스업체에서벌어지는소프트웨어개발에대한전부를개념부터한숟가락씩떠먹여주고그동안의현장경험과노하우를예제와함께소개합니다.시중에나온많고많은자기계발/실천법서적들을응축하여구글이핸드드립한에스프레소를마시는느낌이니,이책만잘읽어도이바닥전체를섭렵한기분이들것입니다.이책에서제시하는테크닉과방법론은현장감있고생생하다는느낌을받았습니다.무엇보다도소프트웨어엔지니어링의정수는여기에있다고말하는듯이,테스트와변경관리에할애한분량이매우많고상세하다는점이매우인상적이고동감하는바입니다.목넘김좋은막걸리처럼술술잘넘어가는한국어화품질도크게칭찬해주고싶습니다.마지막으로,‘이상적이고순수하고정직하다’라는말을하고싶습니다.구글엔지니어들은과연이걸진짜로해낸것일까요?
곽용재,NHN연구소장

저는소프트웨어엔지니어링이라는용어에막연한거부감을느끼며살아왔습니다.소프트웨어엔지니어링보다는프로그래밍이우리가하는일을더잘대변한다생각했고,소프트웨어엔지니어보다프로그래머로불리기를바랬습니다.하지만이책에서소프트웨어엔지니어링을‘시간위를걷는프로그래밍’으로정의한표현을읽는순간,지금까지가지고있던소프트웨어엔지니어링에대한거부감이사라졌습니다.지금까지중요하게여기고강조했던많은활동이소프트웨어엔지니어링에해당했기때문입니다.이책은지금까지가지고있던소프트웨어엔지니어링에대한막연한거부감을깨트리고,이에대한중요성과구글의시행착오를간접경험할기회를선사합니다.또한프로그래밍에시간축을추가함으로써한조직이고려해야할개발문화,프로세스,도구를소개합니다.
박재성,우아한테크코스총괄