메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

구글 엔지니어는 이렇게 일한다

구글러가 전하는 문화, 프로세스, 도구의 모든 것

한빛미디어

번역서

판매중

  • 저자 : 타이터스 윈터스 , 톰 맨쉬렉 , 하이럼 라이트
  • 번역 : 개앞맵시(이복연)
  • 출간 : 2022-05-10
  • 페이지 : 704 쪽
  • ISBN : 9791162245620
  • 물류코드 :10562
초급 초중급 중급 중고급 고급
5점 (5명)
좋아요 : 1

구글은 어떻게 개발하고 코드를 관리하는가

 

지난 50년의 세월과 이 책이 입증한 사실이 한 가지 있습니다. 바로 '소프트웨어 엔지니어링의 발전은 결코 정체되지 않는다'라는 것입니다. 빠른 기술 변화 속에서 소프트웨어 엔지니어링의 중요성이 더욱 강조되면서 소프트웨어 엔지니어의 역할은 점점 더 확장될 것입니다. 이제 더 이상 소프트웨어 엔지니어링은 단순히 조직을 효과적으로 운영하는 방법에 그치지 않을 것입니다. 이 책에서는 여러분이 궁금해하고, 반드시 알아야 할 프로그램을 효과적으로 짜는 방법은 물론, 코드베이스를 지속 가능하고 건실하게 만들어주는 엔지니어링 관행까지 모두 소개합니다. 이 책 한 권이면 소프트웨어 엔지니어링 프로세스를 완벽하게 익히고 좋은 제품을 남들보다 빠르게 구현할 수 있게 됩니다. 또한 20년 넘게 수만 명의 구글러가 쌓아온 노하우도 습득할 수 있습니다. 품질 좋은 소프트웨어 제품을 신속하게 개발하고 싶거나 구글의 소프트웨어 관리 방법이 궁금한 모든 이에게 훌륭한 안내서가 되어줄 것입니다.

 

 

 

상세페이지700px_구글 엔지니어는 이렇게 일한다.jpg

타이터스 윈터스 저자

타이터스 윈터스

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

톰 맨쉬렉 저자

톰 맨쉬렉

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

하이럼 라이트 저자

하이럼 라이트

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

개앞맵시(이복연) 역자

개앞맵시(이복연)

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

 

 

[Part I 전제]

 

CHAPTER 1 소프트웨어 엔지니어링이란?

1.1 시간과 변경

1.2 규모 확장과 효율성

1.3 트레이드오프와 비용

1.4 소프트웨어 엔지니어링 vs 프로그래밍

1.5 마치며

1.6 핵심 정리

 

 

[Part II 문화]

 

CHAPTER 2 팀워크 이끌어내기

2.1 내 코드를 숨기고 싶어요

2.2 천재 신화

2.3 숨기는 건 해롭다

2.4 모든 건 팀에 달렸다

2.5 마치며

2.6 핵심 정리

 

CHAPTER 3 지식 공유

3.1 배움을 가로막는 장애물

3.2 철학

3.3 판 깔아주기: 심리적 안전

3.4 내 지식 키우기

3.5 질문 확장하기: 커뮤니티에 묻기

3.6 지식 확장하기: 누구나 가르칠 게 있다

3.7 조직의 지식 확장하기

3.8 가독성 제도: 코드 리뷰를 통한 표준 멘토 제도

3.9 마치며

3.10 핵심 정리

 

CHAPTER 4 공정 사회를 위한 엔지니어링

4.1 편견은 피할 수 없다

4.2 다양성이 필요한 이유 이해하기

4.3 다문화 역량 갖추기

4.4 다양성 실천하기

4.5 단일한 접근 방식 거부하기

4.6 확립된 프로세스에 도전하기

4.7 가치 vs 결과

4.8 관심을 잃지 말고 전진하자

4.9 마치며

4.10 핵심 정리

 

CHAPTER 5 팀 이끌기

5.1 관리자와 테크 리드(혹은 둘 다)

5.2 개인 기여자에서 리더로

5.3 엔지니어링 관리자

5.4 안티패턴

5.5 올바른 패턴

5.6 예상 못한 질문

5.7 그 외 조언과 요령

5.8 사람은 식물과 같다

5.9 마치며

5.10 핵심 정리

 

CHAPTER 6 성장하는 조직 이끌기

6.1 늘 결정하라(Always Be Deciding)

6.2 늘 떠나라(Always Be Leaving)

6.3 늘 확장하라(Always Be Scaling)

6.4 마치며

6.5 핵심 정리

 

CHAPTER 7 엔지니어링 생산성 측정하기

7.1 엔지니어링 생산성을 측정하는 이유

7.2 선별: 측정할 가치가 있는가?

7.3 GSM 프레임워크: 목표와 신호를 뒷받침하는 의미 있는 지표 선정하기

7.4 목표(goal)

7.5 신호(signal)

7.6 지표(metric)

7.7 데이터로 지표 검증하기

7.8 조치를 취하고 결과 추적하기

7.9 마치며

7.10 핵심 정리

 

 

[Part III 프로세스]

 

CHAPTER 8 스타일 가이드와 규칙

8.1 규칙이 필요한 이유

8.2 규칙 만들기

8.3 규칙 수정하기

8.4 지침

8.5 규칙 적용하기

8.6 마치며

8.7 핵심 정리

 

CHAPTER 9 코드 리뷰

9.1 코드 리뷰 흐름

9.2 코드 리뷰 @ 구글

9.3 코드 리뷰의 이점

9.4 코드 리뷰 모범 사례

9.5 코드 리뷰 유형

9.6 마치며

9.7 핵심 정리

 

CHAPTER 10 문서자료

10.1 문서자료란?

10.2 문서자료가 필요한 이유

10.3 문서자료는 코드와 같다

10.4 독자를 알라

10.5 문서자료 유형

10.6 문서자료 리뷰

10.7 문서화 철학

10.8 테크니컬 라이터가 필요한 순간

10.9 마치며

10.10 핵심 정리


CHAPTER 11 테스트 개요

11.1 테스트를 작성하는 이유

11.2 테스트 스위트 설계하기

11.3 구글 규모의 테스트

11.4 구글의 테스트 역사

11.5 자동 테스트의 한계

11.6 마치며

11.7 핵심 정리

 

CHAPTER 12 단위 테스트

12.1 유지보수하기 쉬워야 한다

12.2 깨지기 쉬운 테스트 예방하기

12.3 명확한 테스트 작성하기

12.4 테스트와 코드 공유: DRY가 아니라 DAMP!

12.5 마치며

12.6 핵심 정리

 

CHAPTER 13 테스트 대역

13.1 테스트 대역이 소프트웨어 개발에 미치는 영향

13.2 테스트 대역 @ 구글

13.3 기본 개념

13.4 테스트 대역 활용 기법

13.5 실제 구현

13.6 속이기(가짜 객체)

13.7 뭉개기(스텁)

13.8 상호작용 테스트하기

13.9 마치며

13.10 핵심 정리

 

CHAPTER 14 더 큰 테스트

14.1 더 큰 테스트란?

14.2 더 큰 테스트 @ 구글

14.3 큰 테스트의 구조

14.4 더 큰 테스트 유형

14.5 큰 테스트와 개발자 워크플로

14.6 마치며

14.7 핵심 정리

 

CHAPTER 15 폐기

15.1 폐기시키는 이유

15.2 폐기는 왜 그리 어려운가?

15.3 폐기 유형

15.4 폐기 프로세스 관리

15.5 마치며

15.6 핵심 정리


 

[Part IV 도구]

 

CHAPTER 16 버전 관리와 브랜치 관리

16.1 버전 관리란?

16.2 브랜치 관리

16.3 버전 관리 @ 구글

16.4 모노리포(단일 리포지터리)

16.5 버전 관리의 미래

16.6 마치며

16.7 핵심 정리

 

CHAPTER 17 Code Search

17.1 Code Search UI

17.2 구글 개발자가 Code Search를 이용하는 방법

17.3 독립된 웹 도구로 만든 이유

17.4 규모가 설계에 미치는 영향

17.5 구글은 어떻게 구현했나?

17.6 구글이 선택한 트레이드오프

17.7 마치며

17.8 핵심 정리

 

CHAPTER 18 빌드 시스템과 빌드 철학

18.1 빌드 시스템의 목적

18.2 빌드 시스템이 없다면?

18.3 모던 빌드 시스템

18.4 모듈과 의존성 다루기

18.5 마치며

18.6 핵심 정리

 

CHAPTER 19 Critique: 구글의 코드 리뷰 도구

19.1 코드 리뷰 도구 원칙

19.2 코드 리뷰 흐름

19.3 1단계: 변경 생성

19.4 2단계: 리뷰 요청

19.5 3~4단계: 변경 이해하고 댓글 달기

19.6 5단계: 변경 승인(변경에 점수 매기기)

19.7 6단계: 변경 커밋

19.8 마치며

19.9 핵심 정리

 

CHAPTER 20 정적 분석

20.1 효과적인 정적 분석의 특징

20.2 정적 분석을 적용하며 깨우친 핵심 교훈

20.3 Tricorder: 구글의 정적 분석 플랫폼

20.4 마치며

20.5 핵심 정리

 

CHAPTER 21 의존성 관리

21.1 의존성 관리가 어려운 이유

21.2 의존성 임포트하기

21.3 (이론상의) 의존성 관리

21.4 유의적 버전의 한계

21.5 자원이 무한할 때의 의존성 관리

21.6 마치며

21.7 핵심 정리

 

CHAPTER 22 대규모 변경

22.1 대규모 변경이란?

22.2 누가 대규모 변경을 처리하나?

22.3 원자적 변경을 가로막는 요인

22.4 대규모 변경 인프라

22.5 대규모 변경 프로세스

22.6 마치며

22.7 핵심 정리

 

CHAPTER 23 지속적 통합

23.1 지속적 통합이란?

23.2 지속적 통합 @ 구글

23.3 마치며

23.4 핵심 정리

 

CHAPTER 24 지속적 배포

24.1 지속적 배포 이디엄 @ 구글

24.2 속도는 팀 스포츠다: 배포를 관리 가능한 조각으로 나누기

24.3 변경을 격리해 평가하자: 기능 플래그로 보호하기

24.4 기민해지기 위한 분투: 릴리스 열차 갖추기

24.5 품질과 사용자에 집중: 사용할 기능만 배포하자

24.6 원점 회귀: 데이터에 기초해 더 일찍 결정하자

24.7 팀 문화 바꾸기: 배포 규율 세우기

24.8 마치며

24.9 핵심 정리

 

CHAPTER 25 서비스형 컴퓨트

25.1 컴퓨트 환경 길들이기

25.2 관리형 컴퓨트에 적합한 소프트웨어 작성하기

25.3 시간과 규모에 따른 CaaS

25.4 컴퓨트 서비스 선택하기

25.5 마치며

25.6 핵심 정리

구글러가 공개하는 기업에 혁신을 가져다주는 엔지니어링 전략

 

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

 

 

추천사

 

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

_임백준, 삼성리서치

 

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

_권순선, 구글 글로벌 머신러닝 생태계 프로그램 리드

 

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

_이준영, 구글 소프트웨어 엔지니어링 디렉터

 

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

_서민구, 구글 코리아 테크 리드 메니저'

 

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

_당근마켓, 서비스코어 부문

 

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

_우경우, 삼성전자 조직개발 코치 SWITCH 사무국

 

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

_곽용재, 네이버 검색플랫폼 총괄

 

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

_박재성, 우아한테크코스 총괄

  • 제목만 보면 책 겉면에 구글 로그가 있을 줄 알았는데, 뜬금없이 '아메리칸 플라밍고' 그림이 책 표지를 장식하고 있다.

    오라일리는 관심이 필요한 멸종 위기종을 표지로 장식하고 있다.

    IT분야에 일하는 사람이라면 누구나 궁금해 할만한 기업 '구글'. 이책은 바로 그 곳 소프트웨어 엔지니어들이 일하는 법을 담고 있다. 나름 IT/보안 분야에 있으면서도 소프트웨어 엔지니어 분야는 상당히 생소하다.

    (뭐.. 애초에 개발과 거리가 먼 사람이지만..) 사실 소프트웨어 엔지니어가 뭔지는 꼭 알 필요는 없는듯 하다.

    책은 총 문화, 프로세스, 도구로 나눠져 있는데, 특히 문화파트는 IT분야가 아닌 사람들도 보기에 매우 좋은 책이다.

    팀워크 이끌어내기, 지식공유, 공정사회를 위한 엔지니어링, 팀이끌기, 성정하는 조직 이끌기, 엔지니어링 생산성 측정하기 까지 총 6개 챕터로 구성되어 있는데,

    이책을 옮긴 사람도 들어가는 글에, 문화파트만 단행본으로 내놔도 손색이 없다고 했을 정도 있다.

    '프로세스' 파트의 경우도 사실 개발자나 프로그래머가 아닌 일반 인프라나 정보보안 담당자들이 보고 즐기기에 충분한 내용들이다.

    무려 700페이지가 넘는 책이다. 그런데 가독성이 매우 좋은 책이라 문장이 쭉쭉 뻗어나간다. 내용이 탄탄한 것도 있지만 번역가의 역할도 컸다고 생각한다.

    그리고 센스있게 챕터 마지막에 '핵심정리'가 되어 있다는 점이다. 물론 핵심정리만 보면 무슨소리인지 이해가 안된다. 이책은 정독하면 좋은책이다.

    적절히 그림도 넣어 줘서 지루하지 않게 편집 되어 있다.

    오랜만에 만난 훌륭한 IT서적이다.

  • 동작하기만한 코드를 만드는 것 보다는 확장이 가능한 코드를 만드는 것이 좋다는건 너무나도 잘 알고 있다. 근데 직업이 ML Engineer고 혼자 딥러닝 모델을 학습하고, 테스트하는 코드를 대충 짜서 결과를 보고 다시 학습하고 하는 과정을 반복하다보니 API 명세서를 보고 코딩하거나 디테일한 코드리뷰는 아주 가깝진 않다.

    코딩 테스트를 한 개도 아니고 2, 3번째 인터뷰에서까지 코딩 테스트를 보는 구글에서 엔지니어들이 어떻게 코드를 만드는지에 대해 쓴 이 책은 충분히 기대하게 만들었다. 다만 저자도 이야기하듯이 어떻게 프로그래밍 하라거나 API 설계법, 언어별 주의점 같은 내용은 다루지 않는다. 이 책은 구글은 어떻게 협업해서 코드를 만들고, 코드를 테스트하고 관리하는지에 대한 내용이 궁금한 사람에게 좋다.

     책은 총 세가지 주제로 나뉘어져 있습니다.

    • 문화
    • 프로세스
    • 도구

    문화에서는 소프트웨어 엔지니어링이 무엇인지, 구글에서 팀(조직)이 소프트웨어 엔지니어링에 익숙해져왔는지 등에 관한 이야기를 한다. 구글이  프로세스에서는 코드 만들기(코딩 스타일), 코드 리뷰, 문서화, 테스트, 폐기와 같이 코드를 만들고 폐기하는데까지 소프트웨어 엔지니어링의 전체 프로세스에 대해 이야기한다. 마지막으로 도구에서는 소프트웨어 엔지니어링에 사용되는 버전관리 도구, 코드리뷰 도구 등에 대해 이야기합니다.

    이 책을 읽는 독자들은 소프트웨어 엔지니어링의 전체 프로세스와 더불어 최대한 좋은 코드를 만들기 위해 구글이 만든 문화, 사용하는 도구에 대해 알 수 있을 것이다.

  • 예상보다 괜찮은 책이었습니다. 별 기대없이 펼쳤는데 유익했어요. 

  • 한빛미디어 '나는 리뷰어다' 활동을 위해서 책을 제공받아 작성된 서평입니다.

     

    

    0. 소개

     

    우리는 대학에서 프로그래밍 언어를 배우고 작게나마 SW를 만들줄 알게 되고, 졸업을 하고 취업을 하여 조금 더 규모의 SW의 일부 혹은 혼자서 개별 SW를 만들게 되는 일반적인 Path를 걷게 됩니다.

     

    오랫동안 반복적인 SW 개발을 하면서 소프트웨어 엔지니어링이라는 말을 자주 듣게 되지만, 뭔가 전혀 다른 세상의 뜬구름 잡는 듯한 느낌만 들고 구체적으로 어떤 일을 하는지에 대해서는 잘 알지 못합니다.

     

    물론 주위에 소프트웨어 엔지니어라고 말하는 사람도 보기 힘듭니다.

     

    곰곰히 생각해 보면 소프트웨어 엔지니어링이라는 말에 대한 약간의 거부감(?)같은 것도 가지고 있는 것 같습니다.

     

    소프트웨어 개발만 빠르고 버그없이 하면 되지 엔지니어링이라는 개념까지 쓸 필요가 있을까 ?

     

    이런 생각을 오랫동안 나 자신도 알게 모르게 해오면서 굳어버린 사고를 조금씩 하게 된 시점에 이 책을 보게 되었습니다.

     

    '구글 엔지니어는 이렇게 일한다' 제목부터 관심을 확 끌더군요.

     

    우리가 흔히 알고 있는 그 '구글'의 수많은, 재능이 반짝반짝 거리는 천재들은 도대체 어떻게 SW를 개발하고 관리하고 있을까?

     

     

    무척 궁금했습니다. 그들은 거의 무한에 가까운 자원을 가지고 원한다면 무엇이든지 할 수 있는 사람들일 것입니다.

     

     

    그들은 우리가 지금 사용하고 있는 훌륭한 서비스와 소프트웨어를 어떻게 개발, 유지보수를 하는 걸까

     

     

    또한, 내가 반감과 함께 뜬구름과 같은 '소프트웨어 엔지니어링'을 어떻게 정의하고 그들의 소프트웨어 개발에 어떻게 적용하고 있을지 궁금했습니다.

     

     

     

     

     

     

    1. 프로그래머와 소프트웨어 엔지니어의 차이점?

     

    가장 첫번째 Chapter에 이런 말이 있더군요.

     

    '구글에서는 소프트웨어 엔지니어링은 흐르는 시간 위에서 순간순간의 프로그래밍을 모두 합산한 것이다' 라고...

     

    뜬구름이 실제로 제 손에 잡히는 듯한 느낌이었습니다. 매일 단순히 반복하던 프로그래밍에 '시간' 축이 더해지자 모든 것이 명확해지는 듯한 느낌이었습니다.

     

    '시간'과 프로그램의 결합이라...

     

    소프트웨어 엔지니어링은 시간의 흐름에 따라 소프트웨어 개발에 필요한 요소들, 예를 들면 소프트웨어 개발 컨셉, 일정, 테스트 등과 같은 사항들을 고려해야 하고

    더 나아가 유지보수, 기능 변경/추가, 최종적으로는 소프트웨어의 적절한 폐기까지 고려하는 것입니다.

     

    이 책은 소프트웨어 조직이 설계, 아키텍쳐 잡기, 코드 작성시 명심해야 한다고 믿는 세 가지 기본 원칙을 강조한다.

    - 시간(time)과 변경(change) : 코드가 수명을 다할 때까지 새로운 요구사항에 잘 적응하려면 어떻게 해야 하는가 ?

    - 규모(scale)와 성장(growth) : 커져가는 규모에 발맞춰 조직은 어떻게 진화해야 하는가 ?

    - Trade Off와 비용(cost) : 시간과 변경, 규모와 성장에서 얻은 교훈들을 바탕으로 조직은 어떻게 의사결정을 내려야 하는가 ?

     

    이러한 관점으로 볼 때 우리가 알고 있는 그 '구글'은 과연 위의 문제들을 어떻게 발전시켜왔으며 어떻게 구글에 만든 SW에 적용해 왔는지 현장감 있고 생생한 이야기들을 잘난 척 없이 담백하게 담아내고 있습니다.

     

    이 책은 크게 문화 / 프로세스 / 도구, 이렇게 3개의 주제로 나누어서 구글의 소프트웨어 엔지니어링에 대해서 이야기 합니다.

     

    '문화' 부분에서는 자유롭게 그리고 조직 전체가 소프트웨어 엔지니어링에 익숙해 지도록 분위기를 잡는 방법에 대해서 이야기한다.

     

    개발자 개개인의 코드에 대한 마음가짐, 남의 코드에 대한 태도, 생산성 측면 뿐만 아니라 심리적인 부분까지 '문화' 전반적인 부분을 아우른다.

     

    '프로세스' 부분에서는 코딩 스타일이나 코드 리뷰 방법, 코드에 대한 Documentation, 코드의 Test, 마지막으로 코드를 폐기하기까지의 일련의 Life Cycle에 프로세스에 대해서 이야기합니다.

     

    마지막으로 구글에서 소프트웨어 엔지니어링을 위해 사용하는 다양한 '도구' 들에 대해서 소개합니다.

     

    흔히 가장 많이 접하고 사용하고 있는 버전관리 & 브랜치 관리 Tool부터 시작해서, 구글에서 만들어진 방대한 Code들을 쉽게 검색할 수 있는 도구, 효율적인 빌드 방법과 그들만의 철학이 담긴 내용도 볼 수 있습니다.

     

    더욱 완벽한 Code를 위한 정적 분석 도구, Open Source 환경에서 가장 골칫거리인 의존성 관리, 오래된 코드 베이스를 갈아엎는 그들만의 노하우, 만들어진 제품을 사용자들에게 쉽게 배포할 수 있는 도구들 등등

     

    이 장에서는 일반 개발자가 궁금해 하거나 평소 어려움을 겪었던 문제들에 대한 구글의 처리 방식을 엿볼 수 있는 좋은 기회가 될 것 입니다.

     

     

     

     

    2. 대상 독자

     

    평소 구글에서는 어떤 식으로 Code를 만들고 검증하며 테스트하고 배포하고 폐기하는지에 대해서 궁금해 하는 사람들이 많을 거라고 생각합니다.

     

    세계 최고의 SW 회사에서는 어떤 도구로 사용하고 어떤 프로세스로 그들만의 품질을 유지하는지에 대해서 궁금한 모든 독자들에게 이 책을 권합니다.

     

    또한, 저처럼 '소프트웨어 엔지니어링'이라는 것 자체에 대한 궁금증을 해소하기 위해서도 이 책은 최고인 것 같습니다.

     

    애매하지만 뭔가 손에 잡힐듯 한 '소프트웨어 엔지니어링' 개념을 잡아줄 좋은 가이드가 되어줄 것입니다.

    

  •  

    1.png

     

    2.png

     

    3.png

     

    4.png

     

    5.png

     

    6.png

     

    7.png

     

    8.png

     

    9.png

     

    원본 글은 이 주소 에서 확인 할 수 있습니다 (개인 블로그)

결제하기
• 문화비 소득공제 가능

배송료 안내

  • 책, 아이템 등 상품을 1만원 이상 구매시 무료배송
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

도서판매처

리뷰쓰기

닫기
* 도서명 :
구글 엔지니어는 이렇게 일한다
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
구글 엔지니어는 이렇게 일한다
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
구글 엔지니어는 이렇게 일한다
구입처*
구입일*
부가기호*
부가기호 안내

* 인터넷 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 한빛 웹사이트에서 구입한 도서는 자동 인증됩니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실