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

한빛출판네트워크

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

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

한빛미디어

번역서

판매중

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

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

 

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

 

 

 

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

타이터스 윈터스 저자

타이터스 윈터스

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

톰 맨쉬렉 저자

톰 맨쉬렉

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

하이럼 라이트 저자

하이럼 라이트

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

개앞맵시(이복연) 역자

개앞맵시(이복연)

고려대학교 컴퓨터학과를 졸업하고 삼성전자에서 자바 가상 머신, 바다 플랫폼, 챗온 메신저 서비스 등을 개발했다. 주 업무 외에 분산 빌드, 지속적 통합, 수명주기 관리 도구, 애자일 도입 등 동료 개발자들에게 실질적인 도움을 주는 일에 적극적이었다. 그 후 창업 전선에 뛰어들어 좌충우돌하다가 개발자 커뮤니티에 기여하는 더 나은 방법을 찾아 출판 시장에 뛰어들었다.

『밑바닥부터 시작하는 딥러닝』 시리즈, 『구글 엔지니어는 이렇게 일한다』, 『리팩터링 2판』, 『이펙티브 자바 3판』 등을 번역했다.

개발자들과의 소통 창구로 소소하게 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 사무국

 

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

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

 

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

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

구글은 세계에서 가장 유명한 엔지니어들을 보유한 회사가 되었고, 회사와 함께 어떻게 엔지니어들이 성장할수있었는지 이책을 보면 알수가 있었다. 책은 전제 , 문화 , 프로세스, 도구로 나누어 진다.

 

 

image.png

 

전제부분은 구글이 엔지니어링에 대한 생각과 비전을 다루고 있다.

문화

 

 

 

1.jpg

 

문화는 혼자 일하지 않은이상 회사에서 정말 중요한 부분이 라고 생각된다.

 

개발자끼리의 서로 성격이 안맞을수도있고, 관리자들과도 안맞는 부분이 생길수 있다.

해당부분에서 구글이 조직을 이끌어나가는 방법을 소개하고있다.

 

 

 

프로세스

2.jpg

회사에서 다른개발자와 함께 개발을 하다보면 , 남에코드를 리뷰하는것 을 서로가 불편해 할때가 있다.

 

코드리뷰에 대한 프로세스에 대한것과 리뷰의 모범사례를 통해 사람에 대한 배려도 묻어있는것을 알수가 있었다.

 

3.png

 

도구는 구글이 다루고 잇는 버전관리와 빌드철학, 변경, 통합 , 배포의 한 일련의 프로세스를 다루고 있다.

구글같은 대규모 프로젝트들을 다루는 회사들은 정말 빌드가 중요할것이다.

구글엔지니어들이 일하는 방식을 최대한 상세하게 녹여준 책이라고 볼수있다. 구글에 문화를 접하고 회사나 팀에 도움되이 될수있는 좋은 가이드 책이다.

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



SE-12f0685c-23b3-4588-a363-122309510a9f.jpeg

 

 

대단한 책이 나왔다.

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

시중에 숱하게 나와 있는 구글 관련 서적들이 떠올라 살짝 거부감이 들었으나 목차를 훑어보고 읽어야겠다는 생각이 들었다.

책 제목에 '구글' 키워드를 넣는 건 무난하고 안전한 방법 같긴 하지만 조금 아쉽다.





PART 1 전제

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

 

 

PART 2 문화

2. 팀워크 이끌어내기

3. 지식 공유

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

5. 팀 이끌기

6. 성장하는 조직 이끌기

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

 

 

PART 3 프로세스

8. 스타일 가이드와 규칙

9. 코드 리뷰

10. 문서자료

11. 테스트 개요

12. 단위 테스트

13. 테스트 대역

14. 더 큰 테스트

15. 폐기

 

 

PART 4 도구

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

17. Code Search

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

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

20. 정적 분석

21. 의존성 관리

22. 대규모 변경

23. 지속적 통합

24. 지속적 배포

25. 서비스형 컴퓨트

 

 

 

 

문화, 프로세스, 도구

크게 세 파트로 구성되어 있다.

약 700페이지에 달하는 내용이다.

조직 관리부터 스타일 가이드, 코드 리뷰, 테스트, 버전 관리, CI/CD까지.

개발 외적인 부분에서 할 수 있는 최대한의 이야기를 담고 있다는 느낌을 받았다.

 

 

한참 읽다가 알게 된 사실인데, 이 책은 수많은 저자, 기여자, 편집자의 손길을 거쳤다.



SE-1c3b5e60-6847-45c1-802e-97614252e2dd.jpeg

 



와우 소리가 절로 나올 정도로 많은 사람이 이 책에 기여했다.

 

협업에 대해 이야기하는 책이 대단한 협업을 통해 탄생했다는 사실이 재밌다.

 

 

또 특이했던 점은 리뷰어의 주석이 있던 점이다.



 

SE-c2682904-05ff-4b52-9fed-da7527ec2bf6.jpeg

 

꼼꼼하게 다듬어 내놓은 책이구나, 하는 생각을 했다.

 

SE-2382160d-0b6c-4be7-8d60-6b1880786418.jpeg

 



각 장의 마지막에는 바쁜 사람들을 위한 핵심 정리도 있다.

 

 

 

 

엔지니어로서의 조직 관리와 자기계발에 대한 글은 인터넷 여기저기에서 쉽게 접할 수 있지만 주니어로서 그게 좋은 정보인지, 실용성이 있는지, 실현 가능한지에 대한 판단이 어려웠는데 그런 간지러운 부분을 시원하게 긁어주는 책이다.



 

시중에 나온 많고 많은 자기계발/실천법 서적들을 응축하여 구글이 핸드드립한 에스프레소를 마시는 느낌이니, 이 책만 잘 읽어도 이 바닥 전체를 섭렵한 기분이 들 것입니다.

 

곽용재, NHN 연구소장

 

가장 와닿았던 추천사.

간만에 마음에 드는 책을 만나서 기쁘다.

추천.





**

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

**



 

	

아마 IT업계에서 일하는 사람들이라면 각자 속한 팀내에서 활용되는 규칙이나 철학같은 것이 있을 것이다.

나름의 규칙을 가지고 에자일 프로세스를 따르기도 하고, 코드 리뷰를 통해 오류를 찾는 과정을 거치며,

정적분석을 통해 소프트웨어의 품질을 유지하려고 노력할 것이다. 내가 속한 팀도 그렇게 엄격하지는 않더라도

나름의 규칙을 통해서 이런 개발 프로세스를 유지하려고 한다. 뭐 워낙 소규모의 팀이고, 어떻게 보면 귀찮은 일일수 있겠지만,

그래도 이런거라도 있어서, 아직 우리가 만든 소프트웨어가 잘 돌아가고 개발이 되는 거겠지 싶다.

 문득 이런 개발 프로세스를 잘 유지하는 회사가 어딜까 싶었는데, 아무리 생각해도 "구글"이 제일 먼저 생각난다.

아마 대부분의 개발자들도 github에 있는 구글 코드를 참고해보겠지만, 구글만의 개발프로세스나 gerrit같은 것을 살펴보면

정말 잘되어 있다는 것이 느껴질 것이다.


 

이번에 읽은 책은 구글에서 이뤄지는 소프트웨어 엔지니어링에 대한 내용을 다룬 책이다. 사실 이 책은 저자가 상에서

무료로 볼 수 있도록 공개되어 있는 책인데도, 아마존에서도 판매 순위가 높을만큼 좋은 평가를 받고 있는 책이다.

나도 원래 웹상에서 읽다가 방대한 양으로 인해서 필요한 부분만 발췌해서 읽었었는데, 이번에 번역본으로 출간되었다.

역시 번역본도 약 700쪽에 달할 만큼 방대한 양을 담고 있다.

우선 간단하게 이 책은 프로그래밍 책이 아니다. 테스트 파트에서 어떻게 진행이 되는지 예시를 들기 위해서 간단한 코드들이

나올 뿐, 거진 대부분의 내용이 구글에서 활용되고 있는 문화, 프로세스, 도구에 대한 내용이 설명되어 있다. 그래서 그렇게

큰 부담을 가지고 읽을 필요없을 듯하다. (나도 그냥 일하다가 틈틈히 읽거나 잠자기전에 조금씩 읽었는데,

뭔가 이해하면서 읽다는 느낌보다는 구글에서는 이렇게 일하다는 것에 대한 다큐멘터리를 본 느낌이었다.)

이책에서 담고 있는 내용은 다음과 같다.

  • 소프트웨어 엔지니어링의 정의
  • 팀을 관리하는데 있어 필요한 문화와 리딩 능력
  • 테스트와 코드 리뷰같은 개발 프로세스
  • 구글에서 활용하는 도구들: 버전관리와 정적분석, CI 등

세계적으로 큰 회사의 개발 문화에 대해서 이 한책으로 설명하기가 참 어려웠을텐데, 이 책에는 정말로 위의 내용들이 모두

들어 있다. 추가적으로 내용 설명과 동시에 구글에서 활용하면서 실제 적용되어 있는 서비스들과 연계되어 있어서 그만큼

읽는 재미도 있었다. 개인적으로 관심있던 부분은 구글에서 활용되는 도구에 대한 내용들이었는데, 특히 bazel에 대한

내용이던가 정적분석, 의존성 관리같은 부분은 실제 개발자들이 현업에서도 겪는 문제들을 구글에서는 이렇게 해결한다는

방법론을 제시하고 있었다. (한편으로는 구글이니까 이렇게까지 했겠지... 하는 체념도 들기도 했다. 어떻게 읽으면 읽을수록

현업에서 하고 있는 방법론들이 조금 부족하다는 것을 느꼈다거나...)

문득 아마존에서 글 리뷰를 보다가 재미있는 내용을 보았다.

 사실 이 리뷰가 어떻게 보면 책의 목적을 대변하고 있다고 생각한다. 앞에서 서두에 했던 말처럼 "그냥 구글이 이렇게

하니까 이게 진리다!" 라는 인식보다는 왜 구글이 이런 방법론을 택하고 발전시켰는지에 대한 생각을 해볼 필요가 있다고

생각한다. 그런 점에서 이 책은 무조건 구글! 이 아닌 그 근거에 대해서 장문의 페이지를 통해서 설명하고 있는 셈이다.

(어쩌면 구글에서 하고 있는 방식은 구글이 다루는 문제에서 유용한 것이지 실제 우리같은 회사한테는 overkill일 수도 있겠다.)

개발하는 사람이나 그 사람들을 관리하는 PM들한테는 이런 부분을 책읽으면서 와닿지 않을까 하는 생각을 한다.

 

(해당 포스트에서 소개하고 있는 "구글 엔지니어는 이렇게 일한다" 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)

		

출처: https://talkingaboutme.tistory.com/entry/Book-software-engineering-at-google [자신에 대한 고찰:티스토리]


한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다...만
진심이 담겨있습니다. 허위 사실 유포는 일절 없음.

 

 

 

"구글 엔지니어는 이렇게 일한다."이 내 주변에서 조금 핫하다. 이 책을 모르는 개발자가 드물었다. 아마 제목이 큰 역할을 한게 아닐까 싶기는 하다. 어그로는 아니지만 "구글 엔지니어"라는 단어가 딱 들어가니깐 이직이나 성장에 목마른 사람들에게 자극적이었을 것이다. 나 역시도 그러했기에 이 책을 이번주까지 다 읽으려고 했었다. 맥락으로 느꼈을 것이다. 나 역시도 타이슨에게 한대 맞았다.

 

 

계획대로 되지 않았다. 본 글에서 변명이 중요한건 아니지만 그럼에도 변명 하나를 꺼내보자면... 이번 책은 꼭꼭 씹어 먹었다. 다른 포스팅에 "함께 자라기"라는 서적을 언급하면서 내 취향이 아니라고 한 적이 있다. 개발자의 조직과 성장과 관련된 서적은 정말 많지만 내 입맛에 맞는 것을 찾기는 쉽지 않다. "구글 엔지니어는 이렇게 일한다."는 내 입맛에 딱이었다. 그렇다보니 평소보다 한장의 무게감이 더 묵직했다.

 

이렇게 된 이상 이번 리뷰는 좀 디테일하게 해보기로 했다. 책 제목을 약간 비틀어서 "구글 엔지니어는 이렇게 일한다더라"라는 이름으로 3회의 포스팅을 할 예정이다. 크게 3개의 파트로 나누어진 이 책을 꼭꼭 씹어먹고 소화한 내용을 공유해본다.

 

이 드립을 생략하기에 너무 아쉽다

 

전제. 소프트웨어 엔지니어링이란 (Chapter.1)

이 책은 소프트웨어 엔지니어링을 소개하는 전제 파트와 전제 파트에서 상세하게 다룰 내용을 소개하는 3개의 파트로 구성된다. 소프트웨어 엔지니어링이란 무엇일까? "흐르는 시간 위에서 순간순간의 프로그래밍을 합산한 것"이라고 저자는 설명하는데 쉽게 와닿지 않는다. 프로그래밍과의 차이를 통해 대략적인 정의를 확인할 수 있다.

 

프로그래밍 작업 : 개발소프트웨어 엔지니어링 작업 : 개발 + 수정 + 유지보수

 

이 차이를 저자는 지속 가능성에 두었다. 지속이라는 키워드에서 봤듯이 소프트웨어 엔지니어링에는 시간 개념을 염두해야 한다. 하이럼의 법칙을 통해 얼마나 심각해질 수 있는지 알 수 있다. 

 

API에 충분한 수의 유저가 있다면, 명세에서 지정된 것은 아무런 상관이 없다.
시스템에서 관측될 수 있는 모든 행동 양식은 다른 이들에게 달려있을 것이다.
- Hyrum's Law

 

API는 시간이 흐를수록 사용자가 늘어나고 사용자는 API의 의도나 명세와 관계없는 형태로 활용할 가능성이 올라간다. 그렇게 된다면 개발자는 API를 수정하기가 어려워진다.(낮은 지속가능성) 높은 지속가능성을 유지하기 위해서는 소프트웨어 엔지니어링적인 시각으로 작업이 되어야 한다. 이 때 중요한 것이 문화, 프로세스, 도구다.

 

 

 

문화. 팀워크와 지식공유 (Chapter.2~3)

저자가 문화 파트에서 첫번째로 강조한 것은 "숨기지 말 것"이다. 조직의 모든 사람이 천재가 아니기에 본인의 역량이 그대로 드러나는 코드가 부끄러울 수 있다. 하지만 이를 숨긴다면 조기 감지와 장애, 속도면에서 해롭다고 언급한다. 특히 버스 지수에 대해 설명한게 인상적이다. 버스 지수는 몇 명의 팀원이 버스에 치어서 일을 할 수 없게 될 때 프로젝트가 망하게 되는지를 나타내는 지수다. 예전에 어느 대기업은 이런 경우를 차단하기 위해 핵심 인물들이 대량 이동할 때 의도적으로 비행기 2대 이상 나누어서 이동한다고 들었던 적이 있다. 여기서는 특정 인물에게 중요한 작업이 집중되어 있는지 조직원들에게 잘 분산되어 있는지를 언급하기 위해 버스 지수를 설명하고 있다.

 

이런 팀워크를 마들기 위해서 다음 3가지를 강조하고 있다.

 

	1. 겸손 humility2. 존중 respect3. 신뢰 trust

 

 

저자는 단순히 조직 내부 뿐 아니라 거의 모든 사회적 갈등의 근본 원인이 여기에 있다고 얘기한다. 그러면서 어떻게 실천할 수 있는지 방법을 제시하고 있다. 비평하고 비평받는 법 배우기, 빠르게 실패하고 반복하기, 포스트모템 문화 등. 그 중 가장 중요해 보이는 실천 방법은 "자존짐 버리기"가 아닐까 싶다. 앞에서 "숨기지 말 것"이 나온 이유도 이 자존심 때문이 아닐까. 그렇다고 이 책에서 바짝 엎드리라고 하지는 않는다. 생산성을 떨어뜨리는 자존심보다는 팀의 성취와 단체의 자부심을 높이길 권하고 있다.

 

팀워크는 단순히 업무에서만 작용하지 않는다. 배움의 문화를 통해서도 팀워크는 강화된다. 배움을 가로막는 장애물(심리적 안전 부족, 정보 섬 등)이 있다면 이를 극복해서라도 지식 공유는 필요하다. 그럴려면 앞에서 얘기한 장애물을 치워야 한다. 심리적 안전은 숨기는 것을 줄여줄 것이다. 멘토를 두어도 좋고 구성원 그룹 단위로 쉽게 도움을 청할 수 있는 분위기를 형성하는 방법도 있을 것이다.

 

지식은 스터디, 컨퍼런스를 통해서만 전달되는 것은 아니다. 가장 기본이 되는 것은 질문이다. 어떻게 질문을 하고 맥락을 이해하고 대답을 해주느냐에 따라 지식의 폭이 넓어질 수도 좁아질 수도 있다. 물론 지식을 확장하는 방법에는 여러가지가 있다. 오피스 아워, 기술 강연과 수업, 문서자료 등. 특히 스타트업에 종사하는 분들에게는 이 문서자료를 갱신하고 새로 작성하는데 소홀할 수 있다. 하지만 문서가 때론 사람을 통할 때보다 더 효율적일 때도 있다. 문서에 관한 내용은 2부에서도 다루도록 하겠다.

 

구글에서는 조직의 지식을 확장하기 위해 많은 노력을 했다. 지식 공유 문화를 자리잡도록 했고 표준 정보 소스라고 해서 전문가의 지식을 표준화하고 전파하는 수단을 만들기도 했다. 누구도 소외되지 않게 하기 위해 뉴스레터나 커뮤니티를 활용하는 방법도 제시한다. 가독성 제도라는 것도 소개한다. 내용을 보면 코드리뷰보다 10배는 더 귀찮을 것같은 제도이다. 프로그래밍 언어 모범사례를 전파하기 위한 구글 전사 차원의 '표준 멘토링 프로세스'라고 한다. 표준화와 개인화가 융합된 방식의 지식 확장 수단으로 문서화된 지식과 현장 시직을 보완하는 매력적인 방식이다. 저자는 이런 방식이 본인이 다니는 조직에도 어울리는지를 먼저 파악하라고 말한다. 뭐, 당연하다. 인력 여유가 되지 않는다면 엄두도 내기 힘든 방법이니깐. 하지만 기억해두었다가 언젠가 이런 방법을 건의해도 좋지 않을까 싶다.

 

 

 

문화. 공정사회를 위한 엔지니어링 (Chapter.4)

문화파트에서 가장 인상적인 챕터다. 아무리 구글이라도 차별 이슈에서 자유롭지 못했다. 하지만 스스로 이를 인정하고 인지하며 반성하고 개선하려는 노력을 했다. 이 책을 읽은 독자 입장에서 구글이 모든 차원에서 옳은 결정을 했다고 생각하지 않는다. 하지만 이런 내부 반성의 모습은 부럽다. 이 챕터에서는 다양성이 왜 필요하고 어떻게 갖출 수 있는지 다루고 있다. 그들은 이 부분에 대해 이토록 고민하고 지금도 연구하고 있음을 엿볼 수 있다.

 

가장 짧은 챕터 중 하나다. 그렇지만 불공정이 얼마나 위험한지 강하게 설명한다. 단순히 일만 잘하는 개발자보다 가치있는 엔지니어링이 무엇인지 고민하는 개발자가 더 가치있음을 알려준다. "관심을 잃지 말고 전진하자". 이 챕터의 핵심 문장이 아닐까.

 

 

 

문화. 팀 그리고 성장하는 조직 이끌기 (Chapter.5~6)

나는 관리자도 리더도 아니다. 하지만 언젠가는 이 둘 중 하나는 될 것이다. 그럼 어떤 역할이 어울릴지 생각해보는 것도 나쁘지 않다. 여기서는 엔지니어링 관리자, 테크 리드, 테크 리드 매니저를 소개하고 있다. 어떤 역할을 맡게 되든 관리를 하는 입장이 되는 것에 거부감만 느끼지말고 맡은 역할과 그 주변을 두려워하며 맡겨진 입장에서는 섬기는 리더십을 가질 필요가 있다.

 

엔지니어링 관리자는 과거의 단순한 노동을 관리하는 역할이 아니다. 안티 패턴으로 본인 행동 양식을 경계하며 올바른 패턴으로 구성원의 촉매제 역할이 되어야 한다. 안티 패턴으로는 만만한 사람 고용, 저성과자 방치, 사람 문제 무시 등이 있다. "희망은 전략이 아니다."라는 말을 빌려 저성과자나 사람 문제를 희망적으로만 바라보다간 오히려 고효율 인력을 낭비하는 상황으로 만들 수 있다. 그럼 올바른 패턴은 무엇일까. 자존심을 버리고, 본인의 마음을 다스릴줄 알며, 조직원의 장애물이 되는 것을 치우고, 때론 선생이나 멘토가 될 수 있으면 훌륭한 엔지니어링 관리자라고 할 수 있다. 물론 기술 부분을 책임지는 테크 리드도 동일하게 적용된다.

 

그럼 성장하는 조직을 이끌려면 어떻게 해야할까? 저자는 3A 리더십을 언급했다.

	1. 늘 결정하라 Always Be Deciding2. 늘 떠나라 Always Be Leaving3. 늘 확장하라 Always Be Scaling

 

리더는 선택의 연속이다. 눈가리개가 되는 것을 찾고 핵심 트레이드오프를 파악하고 결정하고, 이를 반복해야 한다. 이로서 작업의 사이클이 돌아간다. 작업 사이클이 더 원활하게 돌아가려면 자율주행팀이 되어야 한다. 버스 지수에서 얘기한 것처럼 리더가 부재하다고 해서 업무가 마비되면 안된다. 그래서 리더의 역할을 위임하는 능력도 필요하다. 여기서 위임에 대한 얘기가 자주 나오는데 그만큼 혼자서 해결하기보다 팀에서 같이 해결하는 것이 더 효율적임을 강조하는 것이다. 마지막으로, 작업의 확장은 피할 수 없기에 무엇이 중요한지 이해하고 구성원의 시간과 에너지를 잘 관리해야 한다.

 

 

문화. 엔지니어링 생산성 측정하기 (Chapter.7)

어디든 엔지니어 조직의 생산성을 측정하고 싶어할 것이다. 하지만 쉽지 않다. 단순히 코드 라인 갯수로 파악할 수 있는게 아니기 때문이다. 이런 방식은 부작용이 더 크다. 쓰레기 코드만 늘어날 수 있기 때문이다. 그렇다면 생산성 측정은 어떻게 진행하는게 좋을까?

 

먼저 측정하려는 대상이 정말 가치있는 대상인지 확인을 해야한다. 어떤 결과를 기대하고 결과에 따라 행동이 바뀌는지 등을 체크하여 가치있다고 판단했을 때 생산성 측정을 위한 목표를 설정한다. 구글 사례로 GSM 프레임워크를 소개했다. Goal(목표), Signal(신호), Metric(지표). 목표는 원하는 속성을 설명해야지 어떠한 지표도 명시되면 안된다. 신호에서는 목표 달성 여부를 알 수 있는 방법이 나와야 한다. 그리고 지표에서 정성적, 정략적 측정으로 검증을 진행한다. GSM 프레임워크는 어디까지나 구글에서 사용한 방식이다. 충분히 표준적인 형태로 소개하여 다른 조직에서도 사용가능하겠지만 충분히 사전 검토를 하고 적용을 해야겠다. 물론 목표 결과까지 나온 뒤 결과를 추적하여 정말 가치있는 엔지니어링 생산성 측정이였는지도 잊지말고 해야한다.

 

 


 

이렇게 문화적인 측면에서 구글이 일하는 방식을 확인해 보았다. 2부에서는 프로그래밍 스타일 가이드, 코드리뷰, 테스트가 포함된 프로세스에 대해 소개해보겠다.

 

 

 

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

구글은 어떻게 개발하고 코드를 관리하는가지난 50년의 세월과 이 책이 입증한 사실이 한 가지 있다. 바로 `소프트웨어 엔지니어링의 발전은 결코 정체되지 않는다`라는 것이다. 빠른 기술 변화

www.yes24.com

 

전 세계 개발자가 극찬한, 소프트웨어 엔지니어의 바이블이라고 칭송 받는 도서가 국내에 상륙하고 말았다. 해당 도서는 아마존 
소프트웨어 분야 베스트셀러로서 명실공히 해외 독자들에게 사랑 받고 인정 받고 있는 책이다. 현직 개발자라면 누구나 한 번쯤은 
필독해야 할 도서라고 감히 언급할 수 있을 정도다. 오늘은 그 주인공인 '구글 엔지니어는 이렇게 일한다'라는 책에 대해 이야기를
풀어 나가려고 한다.  
 
구글은 검색 엔진 기술로 현재에 이르기까지, 자타공인 내로라하는 전 세계 유슈의 빅테크 기업임을 모르는 이는 없을 것이다. 구
글의 엔지니어 출신 저자들이 한데 모여 저술한 이 책을 통해 도대체 무엇을 말하고 싶은 것일까? 적지 않은 분량의 지면을 통해
 소프트웨어 엔지니어링에 대한 이모저모를 이야기하고 있는 이 책은 우리에게 어떤 가치를 주고 있을까?본 도서는 프로그래밍과
 소프트웨어 엔지니어링의 차이점을 묻는 것으로 서막을 열어 나간다. 그동안 프로그래밍을 숱하게 해 왔지만 소프트웨어 엔지니
어링이란 도대체 우리에게 어떤 의미였을까? 저자는 단순하지만 근원적인 물음에 대한 대답을 제공하며, 이 책 전반을 관통하는 
소프트웨어 엔지니어링의 본질적 가치에 대해 깊은 통찰을 제공하고 있다. 그렇다. 이 책은 프로그래밍이 아니라 소프트웨어 엔
지니어링을 이야기하고 있으며, 소프트웨어 엔지니어링의 중심과 그 주변을 둘러쌓고 있는 여럿 요소들을 다루고 있는 책이다. 
 
	
	
 프로그래밍과 소프트웨어 엔지니어링이 같지 않음을 이해하게 되고 나서는 본격적으로 올바르게 자리잡아야 할 소프트웨어 엔지
니어링 문화에 대해 이야기가 전개된다. 팀워크를 위시하여 팀과 조직 전체적으로 전파되고 공유되어야 할 올바른 지식 공유 문
화에 대한 서술을 통해, 다시 한번 소프트웨어 엔지니어링은 개인이 아닌 조직이 함께 수행하며 이끌어 나가는 것임을 명징하게 
이해할 수 있게 된다. 이어서 다양성의 필요성과 팀을 리딩하며 조직이 성장할 수 있도록 이끌기 위한 원칙과 베스트 프랙티스에
 대한 주요한 팁을 제공하며, 엔지니어링 생산성을 측정하는 이유와 그 가치에 대한 언급을 통해 팀이 한층 성장할 수 있는 문화
적 토양이 무엇인가에 대한 인사이트를 얻을 수 있는 기회를 갖게된다. 프로세스 파트에서는 코딩 컨벤션, 코드 리뷰, 문서 자료
, 테스트와 폐기 등에 대한 세부 주제를 놓고 보다 효율적이고 혁신적으로 소프트웨어 엔지니어링 프로세스가 안착할 수 있는 실
질적인 팁을 제공하며 다양한 엔지니어링 프랙티스에 대한 깊이 있고 풍부한 영감을 획득할 수 있는 계기가 마련된다.  
 
마지막으로 도구 파트에서는 버전 관리를 비롯하여 Code Search, 빌드 철학, 정적 분석, 의존성 관리, 대규모 변경, CI/CD 등, 
코드와 밀접한 주제를 통해 코드가 어떻게 다뤄져야 하며 보다 효율적으로 작성되고 빌드되며 분석되어, 쉽게 개선하고 원활하
게 프러덕션 환경에 배포될 수 있는 일련의 흐름을 면밀하고 심층적으로 풀어 나가고 있다.  
 
구글 출신 엔지니어 저자들이 들려 주는 이야기가 전혀 지루하지 않고 아름답게 느껴졌음은 나만의 착각이었을까? 적지 않은 지
면을 통해 저자들이 이야기 하고 있는 소프트웨어 엔지니어링에 대한 정수를 맛볼 수 있었고, 그 본질적 가치를 온몸으로 깨달을 
수 있었다. 이 도서를 통해 구글이 추구하는 가치를 오롯이 배울 수 있었던 것도 덤이지만, 소프트웨어 엔지니어링의 중심과 주변
부에 대한 담론이 이렇게 심오하고 철학적일 수 있었는지 몰랐음을 알게 되었고 진정한 소프트웨어 엔지니어링을 수행하기 위한 마
인드셋과 시야를 새롭게 갖출 수 있었던 것이 최고의 수확이라고 할 수 있겠다. 소프트웨어 엔지니어링의 본질을 알고 싶은 사람이
라면 이 책과 함께 시작하기를 강력히 추천한다. 
 
 P.S  한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

프로그래밍에 대한 관심이 높다.
각종 언어나 방법에 대한 일반인의 지대한 관심은 익히 알 수 있다.
그러나 현업 개발자들이 가장 많이 궁금하고 필요로 하는 것은 '소프트웨어 엔지니어링'이다.
보다 더 나은 코딩, 개발환경, 문화..
이런 것에 대한 치열한 고민을 하고 있다.
이 책 '구글 엔지니어는 이렇게 일한다'는 그에 대한 좋은 가이드가 되어 줄 것이다.

 

google.jpg

 

이 책의 저자들은 세계 최고의 소프트웨어 그룹 중 하나인 구글에서 일하였다.
그곳서 얻은 소프트웨어 엔지니어링을 방법을 이 책에 담고 있다.
구글에서 개발에 대한 '문화', '프로세스', '도구'에 대해 보여주고 있다.

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

소프트웨어 엔지니어링이란 개념에 막막하게 느껴질 수도 있다.
개발에 대한 모든 것이 소프트웨에 프로그래밍이라 생각하면 쉽게 정리할 수 있을까?

  • 시간과 변경 : 코드가 수명을 다할 때까지 새로운 요구사항에 잘 적응하려면 어떻게 해야 하는가?
  • 규모와 성장 : 커져가는 규모에 발맞춰 조직은 어떻게 진화해야 하는가?
  • 트레이드오프와 비용 : '시간과 변경', '규모와 성장'에서 얻은 교훈들을 바탕으로 조직은 어떻게 의사결정을 내려야 하는가?

이것이 이 책을 통해 우리가 배울 수 있는 것들이다.
흔히 개발에 대해 '새로운 것을 만들어 내기 위한 것'을 말한다.
그것을 위한 최적의 프로그래밍 언어, 시스템, 코딩에 대해서 생각한다.
하지만 그 다음을 생각한다면 결코 그것의 최적이 아닐 수 있다.
변경은 어떻게 할 것이며, 서비스가 확장되면 어떻게 처리할 것인지, 분리와 폐기는 용이한 것인지...
다양한 것에 대해 생각하고 분석하고 적용해야 한다.

어떻해 팀을 만들고, 운영하는지,
그 팀과 함께 일하기 위한 좋은 개발 환경-코딩 가이드, 테스트-는 어떻게 만들어야 하는지,
버전 관리와 배포, 통합은 어떻게 운영하는 것이 좋은지를 볼 수 있다.
개발자들이 그리 좋아하지 않는 문서화에 대한 언급도 무척 좋았다.

이 책으로 프로그래밍에 대한 도움을 얻고자 한다면 실망할 수 있다.
이 책은 '프로그래밍'이 아닌 '소프트웨어 엔지니어링'에 대한 책이다.
개발에 대한 책이지만 코딩에 대한 언급은 물론이고, 코드도 부가적인 설명을 위해 쓰이고 있을 뿐이다.

세계적인 그룹으로 성장했기 구글의 문화, 프로세스, 도구가 모두 옳다고 말하고 싶지 않다.
하지만 그들의 성장 동력 중 하나였음은 분명하고 그것을 이렇게 한 권의 책을 통해 쉽게(?) 접할 수 있음은 무척 큰 행운이다.
구글과 지금의 회사와 같지 않기에 똑같이 적용하기에는 무리가 있을 수도 있다.
하지만 분명 바로 도입하고 적용할 수 있는 것도 있을 것이다.

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

 

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



[서평] 구글 엔지니어는 이렇게 일한다 [타이터스 윈터스, 톰 맨쉬렉, 하이럼 하이트 저 / 개앞맵시 역 / 한빛미디어]

 

세계를 이끌어 가는 기업 중 하나인 구글은 과연 무엇을 어떻게 성장시켰으며 어떤 방식으로 오늘날 거대한 기업을 만들어 냈을까? 개인적으로 구글이라는 기업이 인상적이었고 호감이 갔던 이유는 딱딱한 우리 기업 문화와는 다른 자유로운 근무 환경이 먼저 떠오른다. 개개인의 직원들이 자신이 맡은 업무 성과만 알아서 책임질 수 있다면 그 무엇이든 자유롭게 활용하고 생활해도 된다는 권한을 부여해 주는 느낌이라 상당히 인상적이었던 기억이 있다. 그런 구글이라는 기업이 궁금하여 이 책을 읽어보기로 하였다.

 

이 책은 700페이지가 넘는 꽤 두꺼운 책이었는데 컴퓨터 소프트웨어를 개발하는 기업이니 만큼 프로그램 관련한 이야기들을 비롯하여 구글이라는 거대 기업이 조직을 어떻게 운영하는지, 관리자의 역할은 무엇이고 팀워크를 어떻게 이끌어내고 유지하는지, 구글을 관리하는 원칙, 조직의 지식을 함께 공유하는 방법, 성장하는 조직을 효과적으로 구성하는 전략 등 구들이라는 기업의 시스템 통합 전반을 접할 수 있다.

 

1.jpg

 

2.jpg

 

개인적으로 프로그램 관련해서는 전혀 무지했기 때문에 복잡하고 어려운 경향이 있었는데, 단지 좋은 프로그램을 만드는 방법, 버전과 브랜치를 관리하는 방법, 구글의 코드, 분석, 관리, 생산성 측정하는 요령 등과 관련한 프로그램 이야기만을 다루는 것이 아니라 구글이 많은 직원들을 관리하며 기업을 이끌어 가는데 중요하게 생각하는 것이 무엇인지 어떤 방식을 선호하는지 구글이라는 기업을 보다 자세히 들여다볼 수 있어 굉장히 유익하고 배울 점이 많은 운영방식들이 상당히 인상적이었다.

 

더불어 수만 명의 구글러들의 경험이 바탕이 된 다양한 사례와 예제들을 담고 있어 소프트웨어 엔지니어링을 공부하는 공학도들은 물론 기업을 이끌어가는 경영인들에게도 좋은 안내서, 올바른 길잡이가 될 것이라 생각된다. 구글이라는 기업이 궁금하고 자세히 알고 싶은 이들은 꼭 읽어보길 바란다.

 

e.jpg

 

 

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

이 책은 소프트웨어 엔지니어링과 관련된 책입니다.
이책을 통해 공유하고자 하는 핵심은 소프트웨어 엔지니어링이란 '흐르는 시간 위에서 순간순간의 프로그래밍을 모두 합산한것이다." 개념잡기부터 도입, 유지보수, 폐기에 이르는 생애주기 동안 코드를 지속가능하게 하려면 코드에 어떤 관례를 도입해야 할까? 에 대한 질문에 답을 하는 책입니다.


자세한 리뷰는 https://ai-creator.tistory.com/621 를 참고해주세요~!!



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

IT개발자라면한번쯤은궁금했을 구글의개발자들은 어떤 프로세스나 방식으로 일을 할까일 것이다.

이책은 전현직 구글 엔지니어들이 말하는 구글의 소프트웨어 엔지니어링, 팀워크, 문화, 생산성, 프로세스, 테스트 등의 다양한 주제에 대해서 다루고 있다.

이책을 읽다보면 20년 넘게 수만명의 엔지니어들이 조화를 이루면서 어떻게 구글을발전시켜올 수 있었는지의 노하우를 알 수 있을 것이다.

소프트웨어 엔지니어링은 단순히 코드를 작성하는 행위에 더하여, 시간의 흐름에 발맞춰 한 조직이 그 코드를 구축하고 유지보수하는 데 이용하는 모든 도구와 프로세스를 포괄.. 소프트웨어 엔지니어링의 개념부터 정의하고 시작하는데 소프트웨어엔지니어링을 시간 위를 걷는 프로그래밍이라고하는 표현이 가장 함축적인 말 인것 같다.

이책은 각장마다 저자가 따로 있는 독립된 구조를 가지고 있어서 (마치 옴니버스형태) 전체를 다 안읽고 본인이 필요한 부분만 봐도 될 수 있는 구조이다.

이 책의 구성은 구글이 소프트웨어 엔지니어링을 바라보는 시각에 따라 세 가지로 분리해서 다루고 있고 그 형태로 구성되어 있다.

구글의 개발문화에 대한 내용은 2부(2~7장)에서 구글이 효과적으로 사용한 프로세스들에 대한 내용은 3부(8~15장) 그리고 구글이 도구 인프라에 어떻게 투자하고 사용하는지에 대해 4부(16~25장)에서 다루고 있다.

이책은 프로그래밍 책이 아니다. 그래서 소프트웨어 설계 관련 내용은 없고 말 그대로 소프트웨어 엔지니어링에 관한 책이다 라는 것을 명심해야 한다.



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

 

구글에 관련 된 책 중에 이토록 실제적인 책이 있었을까 생각해 봅니다.
이책에 문화와 프로세스 그리고 도구의 모든 것을 이야기 합니다. 어느쪽으로 치우침 없이 다루고 있습니다.
그래서 두껍기가 만만치 않습니다.

 

1.jpg

 

2.jpg

구글은 어떻게 개발하고 코드를 관리하는가 뒷 페이지를 통해 책의 전반적인 구성을 설명합니다.

 

3.jpg

시작은 소프트웨어 엔지니어링이란? 으로 입니다.

4.jpg

소프트웨어 프로젝트의 기대 수명을 통해 보다 넓게 보는 것이 중요합니다.

5.jpg

출퇴근 시간에 두꺼운 책을 들고 다니면서 읽고 있습니다. 어느 정도 읽게 되면, 회사 책상 옆에 러퍼런스로 놔 둘 생각입니다.

6.jpg

책은 전제, 문화, 프로세스, 도구로 크게 구성되어 있습니다.

7.jpg

 

8.jpg

 

9.jpg

 

10.jpg

특히 요새 테크니컬 문서에 대하여 관심이 많아서, 더 열심히 보게 됩니다.

 

11.jpg

문서자료는 소스 코드와 밀접하게 연관된 경우가 많으므로 가능한 한 코드처럼 다뤄야 합니다.

-꼭 따라야 하는 내부 정책과 규칙이 있어야 합니다.

-버전 관리 시스템이 등록해 관리해야 합니다.

-관리 책임자를 명시해야 합니다.

-변경 시 (문서자료가 설명하는 코드와 함께) 리뷰를 거쳐야 합니다.

-코드 상의 버그를 추적하듯 문제를 추적해야 합니다.

-주기적으로 평가(혹은 테스트)를 받아야 합니다.

-가능하다면 정확성이나 최신 정보 반영 여부 등을 측정해야 합니다(아쉽게도 아직은 도구들이 충분히 뒷받침해주지 못합니다).

 

12.jpg

 

13.jpg

 

나는 리뷰어이다를 통해서 매달 IT책을 접하고, 리뷰를 쓰고 있습니다.  IT의 트랜드와 신기술을 접하게 됩니다.

14.jpg

 

 

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

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

개앞맵시 옮김

 

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

 

2022년 5월

2022 나는 리뷰어다 활동의 네 번째 리뷰

 

5월의 리뷰할 책은 "구글 엔지니어는 이렇게 일한다 (Software Engineering at Google)"이다.

700페이지에 달하는 이 책은 구글은 어떻게 개발하고 코드를 관리하는가에 대해서 서술한 책이다.

 

소프트웨어 엔지니어링은 단순히 고객의 요구사항을 해소하는 것에만 그치지 않고, 문제의 근본 원은을 찾고 개선해나가며, 지속 가능성과 확장성을 고려하여 최적의 결과물을 만들어나가야 한다고 당근마켓 서비스코어 부문은 말하고 있다. 더불어 이 책이 소프트웨어 엔지니어로 나아가기 위한 길을 제시해준다고 말한다.

 

그리고 우아한테크코스를 총괄하고 계신 박재성 님은, 이 책이 소프트웨어 엔지니어링을 '시간 위를 걷는 프로그래밍'으로 정의한 표현을 읽는 순간, 소프트웨어 엔지니어링이라는 용어에 대한 거부감이 사라졌다고 한다. 프로그래밍에 시간 축을 추가함으로써 한 조직이 고려해야 할 개발 문화, 프로세스, 도구를 소개하는 책이라고 한다.

 

어디 한번 그런 책인지 들어가 보자.

 

지금까지 소프트웨어 엔지니어링 이론과 관례는 그리 엄격하지 않았지만 소프트웨어가 우리 삶에 깊숙이 파고들면서 우리도 더 엄격한 엔지니어링 방법을 채택하고 따라야 하는 시대가 도래했다.

 

시간 위를 걷는 프로그래밍

소프트웨어 엔지니어링은 단순히 코드를 작성하는 행위에 더하여, 시간의 흐름에 발맞춰 한 조직이 그 코드를 구축하고 유지 보수하는 데 이용하는 모든 도구와 프로세스를 포괄한다.

 

"흐르는 시간 위에서 순간순간의 프로그래밍을 모두 합산한 것이다.'라는 관점이 이 책의 핵심이다.

 

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

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

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

- 트레이드오프와 비용 : '시간과 변경', '규모와 성장'에서 얻는 교훈들을 바탕으로 조직은 어떻게 의사결정을 내려야 하는가?

 

이러한 원칙이 엔지니어링 관행에 영향을 주어 오래 지속되도록 만드는 방법이라 말하고 있다.

 

구글의 시각

구글은 그 규모와 역사 덕에 지속 가능한 소프트웨어 생태계의 성장과 진화를 바라보는 독특한 시각을 갖게 되었고, 이 깨우침 들을 독자들에게 전달하기 위해 노력하고 있다.

구글이 소프트웨어 엔지니어링을 바라보는 주된 시각에 따라 이 책의 주제를 세 가지로 나누었다.

 

- 문화

- 프로세스

- 도구

 

문화를 다루는 2부(2~7장)는 소프트웨어 기업이 갖는 집단적 본성, 쉽게 말해 소프트웨어 개발은 팀에 의해 이루어지므로 조직이 성장하고 건실하게 유지되려면 개발 문화 면에서도 올바른 원칙이 필요하다는 점을 강조한다.

 

프로세스를 다루는 3부(8~15장)에서 소개하는 기법 대부분은 대다수 소프트웨어 엔지니어에게 익숙할 것이다. 구글이 버텨낸 시간과 규모에서 효과적으로 작동한 프로세스들을 소개하고, 아직 시원한 답을 찾지 못한 영역도 이야기한다.

 

도구를 다루는 4부(16~25장)는 끊임없이 커져가고 나이를 먹는 코드 베이스를 말끔하게 관리하기 위해 구글이 도구 인프라에 어떻게 투자해왔는지를 이야기한다.

 

이 책에서 소개하는 문화, 프로세스, 도구는 일반적인 소프트웨어 엔지니어가 경력을 쌓아가며 얻었으면 하는 교훈들이다. 구글 엔지니어링의 엄청난 규모는 수많은 문제에 대처하는 다양한 해법을 제시하기에 충분할 것이다.

 

저자 중 톰 맨쉬렉은 이 책이 거대한 소프트웨어 엔지니어링 조직이 멋진 제품을 만드는 방법을 보여주는 창이 되길 희망하며, 독자 여러분이 재밌게 읽고 그중 몇 가지 교훈을 받아들여 여러분의 것으로 만드는 것을 바란다고 했다.

 

이제 이 글을 보시는 분들이 이 책을 구입하여 읽어 볼 때이다.

책의 분량이 많아서 아직 완독 하지는 못했지만 개발 실무진과 관리자 모두가 읽기에 좋은 책인 것은 분명하다.

책의 모든 것을 접목시킬 순 없겠지만 하나라도 시도하고 접목해 간다면 더 좋은 조직이 될 것이라 확신한다.

 

Love Yourself.

개발과 관련된 일을 하는 사람이라면 한번쯤은 구글에서 일하는 생각을 해봤을것이다. 나또한 그랬으며 항상 동경의 대상처럼 여겨졌다. 그들이 하는 일들은 항상 앞서 나가고 무엇인가 혁신적이고 세상을 바꿀것 같은. 그런 기본적은 생각들이 밑바탕에 깔려있었다. 이번에 읽게된 "구글 엔지니어는 이렇게 일한다" 는 그런 구글러들이 어떻게 일하는지, 무엇을 생각하는지에 대해 배워볼수 있는 책이다. 

- 이 책은 개발자들만을 위한 책이 아니다.

이 책은 소프트웨어 엔지니어링에 대한 내용을 많이 다룬다. 프로그래밍과 구분되게 소프트웨어 엔지니어링은 소프트웨어를 개발하기 위해 설계부터 시작하는 모든 라이프 사이클을 포함한다. 그게 개발관련된 일이 될수도 있고 그안의 구성원들인 사람이 될수도 있다. 따라서 이책의 제목에 있는 "구글 엔지니어"들이 일하는 것을 떠올리면 개발자들를 떠올리는게 당연하겠지만 내가 읽어본 이책은 개발자들만을 위한 책은 아니다. 개발자, 디자이너, 관리자등 모든 영역의 사람들이 읽는다면 큰 도움을 얻을 수 있는 책이다. 영역이 IT 관련된 일이 아니더래도 이 책은 많은 사람들에게 도움을 줄 수 있는 책이다. 

- 구글러들도 우리가 생각하는 것들을 동일하게 생각한다.

내 기준에서 구글을 생각하면 항상 특별할 거야 라는 생각이 전제되어있었다. 내가 겪고 있는 일들은 그들은 겪지 않을 거야 라는 생각을 했다. 하지만 그것은 잘못된 생각이었다. 그들도 나와 같은 고민을 하고 나와 같은 어려움을 부딪쳐왔다. 단지 차이점은 그들은 그것을 극복하기 위해 많은 시도와 노력을 해왔고 그 결과 지금의 모습을 만든 것이다. 현재의 모습이 하루아침에 만들어 지지는 않았다. 수도없이 반복되는 노하우들이 쌓이고 쌓여서 만들어낸 결과이다. 누가 시켜서 만든것도 있지만 그들 스스로 만들고 발전시켜나간 일들도 많다. 그게 바로 그들의 문화이고 가치인것이다. 

- 기술을 발전 시키려면 어떻게 해야하는지 그들은 알고 있다.

코드리뷰, 테스트는 개발자에게는 필수조건처럼 따라 다니는 단어이다. 하지만 이게 개발자들에게 익숙해지기 까지는 상당한 시간이 걸린다. 코드리뷰를 무시하거나, 단위 테스트를 무시하게 되면 후에 모든것들이 기술부채로 다가오게 된다. 작은 버그들이 점점 스노우볼 굴리듯 굴러가서 큰 오류를 발생시기고 만다. 그걸 방지하기 위한 행위들중 하나가 코드리뷰와 단위 테스트이다. 실제 구현되는 코드들보다 중요하게 생각해야 하는 부분이 테스트 코드이고, 내 코드가 잘못되어있는지 또는 실수는 하지 않았는지, 아니면 더 나은 방법은 없는지 찾아볼수 있는 방법이 코드리뷰이다. 그들은 그것이 중요하다는 것을 알았으며 지금도 꾸준히 실천하고 있다. 

이 책은 마치 백과사전처럼 읽으면 읽을 수록 배울것이 많은 책이다. 하지만 그들이 했던 방법들이 모두다 내게 맞는 방법은 아닐수도 있다. 하지만 최소한 그들이 해왔던 방법들을 알고 있다면 비슷한 문제를 마주했을때 좀더 현명하게 풀어갈수 있을것이다. 

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


KakaoTalk_20220529_195600639.jpg

 

 

이번에 리뷰하는 책은 구글에서 경험하고 배웠던 소프트웨어 엔지니어링에 대한 경험이 담겨있는 책이다. 회사에서 일하면서, 그리고 이직한지 1년이 지나고 2년 가까운 경험이 생기면서 어떻게 회사에서 일해야하는지, 개발문화와 사람들간의 관계, 그리고 코드를 관리하는 방법에 대해서 많이 생각하게 된다. 그래서 이 책을 신청했다.

 

책의 전체적인 구성은 거의 대부분은 글이다. 그들의 경험을 글로 읽을 수 있다는 것이다. 그림이나 도표, 간단한 코드들도 일부 등장하지만 대부분은 글이다. 분량은 약 700페이지로 많은 편이긴 하지만 쳅터 단위로 끊어서 읽을 수 있다.

 

프로그래밍에 대한 책이 아니라, 소프트웨어 엔지니어링에 대한 책이다. 어떻게 프로그래밍해야하는지, 유지보수, 테스팅, 수정, 조직문화, 개발문화, 다양한 방면에서의 경험들을 볼 수 있다. 이 책의 내용이 되게 좋다.

 

예전에는 그냥 단순 프로그래밍만 열심히 공부했다면, 이젠 소프트웨어 엔지니어링에 대해서 공부할 필요성을 느꼈고, 많은 좋은 내용들을 배울 수 있어서 좋았던 것 같다.

 

 

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

[나의 한줄 추천사]

구글에서는 소프트웨어 개발을 어떻게 할까? 항상 궁금했는데, 질문을 해소할 수 있는 책이 드디어 나왔다.

[책 추천 이유]

소프트웨어 공학을 대학교때 배우고, 오랜만에 실전편을 보는 듯 싶다. 크게 3가지 '문화', '프로세스', '도구' 를 나눠서 설명하고 있으며, 유비 보수 지속 가능한 프로그램을 개발하고 싶은 사람들에게 단비 같은 책이다.

​(참고로 소프트웨어 설계는 다루지 않는다.)

[내가 찾고자 했던 질문들]

1. 구글의 개발 문화는 어떠한가?

- 소스코드를 같이 공유하지 않는 것을 극도로 싫어한다. 모든 소스코드는 공유되어서 "버스 지수"를 낮추는 것이 핵심이다. 여기서 "버스 지수"는 몇 명의 팀원이 버스에 치어서 일을 할 수 없게 될때 프로젝트가 망하게 되는지를 나타내는 지수이다. 그리고 개발할때 빠르게 실패하기를 반복하라고 한다. 이 부분은 우리도 개발할때 사용하고 있는데 너무 효과적이다. 빠르게는 Mock를 빠르게 만들어서 보여주고, 실패하기 부분은 우리한테는 피드백을 받아서 스케일업 시키는 부분이라고 하겠다.매우 효과적인 방법이다. 구글은 사람을 대하는 구글만의 '겸손, 존중, 신뢰'를 원칙으로 한다. 절대 같은 동료에게는 비난하지 않는다. 지식 공유 부분도 상당히 공감이 된다. 자기만 알고 있으면 시너지 발생이 안된다. 같이 공유되어야 개발속도가 배로 증가한다. 관리 부분에 '디자인 패턴' 적용한 부분이 흥미롭다. 올바른 패턴 부분에 "자존심 버리기", "마음 다스리기", "촉매자 되기", "장애물 치우기", "멘토되기", "명확한 목표 세우기", "행복한지 확인하기" 있다.

2. 구글의 개발 프로세는 어떠한가?

- 코드 스타일 가이드와 규칙을 정한다. 코드 리뷰 한다. 자료를 문서화 한다. 자동(수동) 테스트를 만든다.​ 무엇보다도 "테스트" 부분을 중요하게 보는 이유가 chapter 11 ~ 14 장까지 다 테스트 관련 내용이다. 코드가 거대해질 수록 코드의 엔트로피는 엄청나게 늘어난다. 단위테스트부터 통합테스트까지 넘어야 하는 허들들이 많아지기 때문에 그만큼 "테스트" 부분에 개발 프로세스가 많이 집중되는 것도 충분히 이해가 된다. B2C 기업일 경우 더욱더 그러하겠다.

3. 구글의 개발 도구는 어떠한가?

- 소스코드의 형상관리, 버전관리, 브랜치 관리

- 소스코드 검색하는 도구

- 빌드 시스템

- 코드 리뷰 도구

- 정적 분석

- 의존성 관리

- 지속적 통합 / 배포

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

 

개요

본 도서는 4개의 Part와 25개의 Chapter로 구성되어 있다.

 

Part 1는 본 도서가 프로그래밍에 집중된 것이 아닌 소프트웨어 엔지니어링에 대해서 말하고자 함을 밝히고 있다.

즉, 각 Chapter를 바라보고 풀어내고자 하는 View Point를 제시한다.

 

Part 2는 소프트웨어 개발 시, 요구되는 것에 대한 사항에 대해서 설명하고자 한다.

이는 단순히 H/W 자원이나 코드를 말하고자가 아니다.

소프트웨어 개발은 다수 Man power의 노력을 통해서 나오는 산출물이기에 팀이란 곳에서 소속되기 위한 필요되어지는 문화적 요인에 대해서 말하고 있다.

 

Part 3는 소프트웨어 개발 시, 생산성을 증대하는 요소들에서 대해서 설명하고자 한다.

사소할 수 있는 문서가 왜 중요하며, 개발과 함께 폐기라는 절차또한 중요하고 필요한 과정임을 말하고 있다.

 

Part 4는 앞서 Part1 ~ Part2 에서 소개되었던 프로세스 내에서 사용되어지는 도구에 대해서 설명한다.

이러한 도구는 어떻게 쓰일 수 있으며, 어떻게 쓰어야지 효율적인지를 말한다.

또한, 개발되어진 소프트웨어를 배포, 출시에 대한 전략에 대해서도 표현하고 있다.


목차

Part 1. 전제

  Chap1. 소프트웨어 엔지니어링이란?

 

Part 2. 문화

  Chap2. 팀원크 이끌어내기

  Chap3. 지식 공유

  Chap4. 공정 사회를 위한 엔지니어링

  Chap5. 팀 이끌기

  Chap6. 성장하는 조직 이끌기

  Chap7. 엔지니어링 생산성 측정하기

 

Part 3. 프로세스

  Chap8. 스타일 가이드와 규칙

  Chap9. 코드 리뷰

  Chap10. 문서자료

  Chap11. 테스트 개요

  Chap12. 단위 테스트

  Chap13. 테스트 대역

  Chap14. 더 큰 테스트

  Chap15. 폐기

 

Part 4. 도구

  Chap16. 버전 관리와 브랜치 관리

  Chap17. Code Search

  Chap18. 빌드 시스템과 빌드 철학

  Chap19. Critique: 구글의 코드 리뷰 도구

  Chap20. 정적 분석

  Chap21. 의존성 관리

  Chap22. 대규모 변경

  Chap23. 지속적 통합

  Chap24. 지속적 배포

  Chap25. 서비스형 컴퓨트 


마무리

본 도서는 구글이라는 회사가 어떠한 방식으로 소프트웨어가 개발 되어지는 가에 대해서 프로그래밍 관점이 아닌 문화 및 프로세스 관점에서 자세히 설명하고 있다.

주니어 개발자에게 주는 메시지는 개발조직 내에서 진행되는 절차가 왜 필요한가에 대해서 자세히 설명해주는 사람이 없었을 것이다.

이러한 절차가 불필요하고 무의미하다는게 아니며, 생산성 향상을 위한 큰 기초 위해서 진행되고 있음을 설명해주고 있다.

시니어 개발자에게 주는 메시지는 체계화된 절차에 대한 백과사전과 같은 지식을 제공하여서, 현재 조직 내 절차와 비교를 통해서 부족한 부분에 대해서 채워 나갈 수 있는 Mildstone 과 같은 가치를 느낄 수 있다.

 

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


 

1.jpg

 

전 세계에서 유명한 IT회사를 말해보라고 하면, 수 많은 회사들이 있겠지만 구글이 항상 포함되어

있을 것 같다. 가고는 싶지만 꿈만 같은 회사라고 생각을 했지만 이번에 출간된 '구글 엔지니어는

이렇게 일한다'라는 책을 통해 간접 경험을 해볼 수 있었다.

 

처음엔 구글의 도입한 기술이나 이런 것에 중점이 맞춰져 있지 않을까 생각했는데 오산이였다.

진짜 구글의 문화와 일하는 방법을 소개되어 있는 책이였다. 이 책은 구글의 수많은 개발자들이 

저자와 기여자로 참여한 책으로 실제 경험담이나 사례가 많이 담겨 있었다.

2.jpg

 

 

크게는 문화, 프로세스, 도구 이렇게 3가지로 나뉘어 있다. 특히, 난 경력이 차다보니 문화라는

부분에서 많은 도움이 된 책이였던것 같다.

 

문화에서는 팀워크 이끌어내기, 지식공유, 공정사회를 위한 엔지니어링, 팀 이끌기, 성장하는 조직

이끌기, 엔지니어링 생산성 측정하기와 같인 주제로 챕터가 구성되어 있다.

 

특히, 10년차를 넘어서면서 고민하던 내용들이 있었는데, 구글의 문화를 보고 앞으로 내가 어떤 

관리자나 리더로서의 방향을 잡아야될지 가늠자가 되어준 것 같다.

 

그리고 프로세스 파트에서는 누구나 다 알지만 실천하기 어려운 주제인 것 같다. 팀의 스타일가이드와

코드리뷰, 문서자료, 테스트 관련된 내용인데 모든 개발자가 공감할 만한 내용이였던 것 같다.

 

테스트는 항상 중요한 부분이지만 놓치기 쉬운 부분이기도 한 것 같다. 처음에 시작은 단위테스트까지

고려해서 좋은 소프트웨어를 생산하려고 마음 먹지만 시간과 매번 변경되는 설계에 쫒겨 나중엔 제대로

되지 않았던 적이 많았기 때문이다. 그래서 구글에서는 더욱 더 대규모 시스템일텐데 어떻게 테스트를

진행하는지 알 수 있어서 그 중요성과 방법에 대해서 다시 한 번 배울 수 있어 좋았다.

 

책이 분량이 많다 보니 아직 다는 읽지 못했지만, 개발자라면 한 번은 꼭 읽어봤으면 하는 책인 것

같다. 구글의 좋은 문화와 프로세스를 이렇게 간접 경험하고 배울 수 있다는게 앞으로 많은 도움이 

될 것이기 때문이다. 그리고 이 책은 주니어나 시니어나 아니면 IT로 취업을 준비하는 학생들에게도

많은 이정표가 될만한 책이라 생각된다. 

 

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

 

 

각 파트별로 세분화 된 내용을 서술하고 있으며 마지막 부분에는 핵심 정리 부분으로 다시 한번 내용을 상기시켜주고 정리 할 수 있습니다.
 
 
또한 중요한 용어나 어려운 용어는 밑에 주석을 달아 이해하기 쉽게 책을 구성하였습니다.
 
 
글로 이해가 어려운 부분은 그림을 넣어 이해를 돕고 있습니다.
 
 
강조하고싶은 부분은 빨간색으로 글씨를 적혀있어 읽는데 좀 더 집중해서 읽을 수 있게 가이드 역할을 해줍니다.
 
 
 
굉장히 많은 내용이 이 책 안에 담겨있고 독립적인 파트로 이루어져있기 때문에 꼭 순서대로 읽지 않더라도 쉽게 읽을 수 있습니다.
 
 
개인적으로 클라우드 공부를 하고 있는데 추상화와 관련된 컨테이너나 클라우드 이런 내용이 좀 적게 들어있어서 아쉬웠습니다.
 
 
시간이 많지 않으신 분 들은 자신이 배우고 싶거나 궁금한 내용을 찾아서 읽는 것을 추천드립니다.
 
 
좋은 개발자를 꿈꾸시거나 구글 엔지니어가 어떻게 생활하는지 궁금하신 분들이 읽으면 도움이 될 것 같습니다!

 

 

KakaoTalk_20220529_122510688_01.jpg

 

KakaoTalk_20220529_122510688.jpg

 

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

 

이 책은 원어로만 작성되어 있다가 최근에 번역이 되어 한글판으로 나와 기대했던 책 중에 하나이다. 구글 시니어 개발자들에 대한 개발 기록과 스킬등이 아낌없고 과감하게 작성되었던 책으로 알고 있어, 한빛미디어의 이벤트를 통해 신청하게 되었다. 

 

우리가 개발을 하면서 필요한 모든 것들이 다 담겨있는 책이다. 어떤 일을 하게 될때, 머리는 이것을 해야 하지만 몸은 따로따로 움직이는 경험을 한적이 있을 것이다. 이 책은 그것에 대해 항상 의심하고 나아가는 방향성을 제시해주는 책이라 할 수 있다. 개발을 하면서 매우 필요한 유지보수, 팀워크, 코드 리뷰 등에 대한 구글 개발자들의 행동과 생각이 아낌없이 들어가 있다.  

 

AI 엔지니어들보단 라이브러리 단을 만드는 개발자들에게 더 많은 도움을 줄 수 있는 책이며, 이렇게 좋은 책을 한빛미디어를 통해 보게 된 것에 무한 감사를 표한다. 


[도서 소개]


여러분이 궁금해하고, 반드시 알아야 할 프로그램을 효과적으로 짜는 방법은 물론, 코드베이스를 지속 가능하고 건실하게 만들어주는 엔지니어링 관행까지 모두 소개한다. 이 책 한 권이면 소프트웨어 엔지니어링 프로세스를 완벽하게 익히고 좋은 제품을 남들보다 빠르게 구현할 수 있게 된다. 또한 20년 넘게 수만 명의 구글러가 쌓아온 노하우도 습득할 수 있다. 품질 좋은 소프트웨어 제품을 신속하게 개발하고 싶거나 구글의 소프트웨어 관리 방법이 궁금한 모든 이에게 훌륭한 안내서가 되어줄 것이다.


[서평]


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

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


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

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


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

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

  2. 규모와 성장 - 커져가는 규모에 발맞춰 조직은 어떻게 진화해야 하는가?

  3. 트레이드오프와 비용 - ‘시간과 변경’, ‘규모와 성장’에서 앋은 교훈들을 바탕으로 조직은 어떻게 의사결정을 내려야 하는가?

이 책 전반에서 이러한 원칙이 엔지니어링 관행에 영향을 주어 오래 지속되도록 만드는 방법을 설명을 합니다.


여기서 소개하는 문화, 프로세스, 도구는 일반적인 소프트웨어 엔지니어가 경력을 쌓아가며 얻었으면 하는 교훈이지만 모든 조직에 똑같이 적용해야 하는것은 아닙니다. 


이 책에서는 소프트웨어 설계는 다루지 않습니다. 설계 원칙이 궁금하면 헤드 퍼스트 디자인 패턴을 추천합니다.


스타트업 혹은 개발 문화 및 프로세스가 정립이 안되어 있다면 이책을 통해서 세계적인 기업 구글에서는 어떻게 조직을 이끌고 문화를 만들어가는지 배워 보시기를 추천드립니다.

 

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

 

* 추천 포인트

 

  1. 소프트웨어 엔지니어링 기술이 아닌 지혜를 배울수 있다.

  2. 최고수준의 개발 문화가 궁금하다면?

  3. 깔끔한 번역!

 

 

개발자라면 구글이나 MS 혹은 우리나라의 네이버 같은 기업에서 일하기를 꿈꿀 것이다.

급여나 복지 같은 이유도 있겠지만, 그런 선두기업에서 일한다면 배울것이 많기 때문이다.

훌륭한 선배나 동료들에게서의 직접적인 배울점도 있겠지만, 그들이 일하는 방식에서도 참고할점이 많이 있을 것이다.

흔히 회사의 개발문화라고 부르는 것들 이다. 이책은 바로 그 문화를 소개해 주고 있다.

부제에 나와있는 문화, 프로세스, 도구라는 세가지 파트로 나누어 구글의 개발문화를 소개한다.

 

Ch11까지 읽었는데, 지금까지는 아주 좋은 내용들이었다.

특히 기억에 남는 그림이 하나 있다.

 

1.jpg

 

IT 바닦은 끊임없이 배워야 하는데, 경력이 길어지면서 물어보는걸 주저하지 않았나 반성해보게 되었다.

모르는것을 인정하고, 묻고, 배우려는 자세가 가장 중요하지 않나 생각해 본다.

 

하나더 기억에 남는 글이 있다.

 

2.jpg

 

코드를 짜는것이 부채를 늘리고 있다는 생각은 해본적이 없다.  

하지만 이런 자세로 개발을 한다면 정말 좋은 결과물이 나올것 같다.  

 

전체적으로 유익하고 좋은 내용이었는데, 다만 읽어 나가면서 “구글 엔지니어의 블로그 포스트 모음집” 같다는 생각이 좀 들었다.

그리고 “구글에선 이런걸 씁니다”라고 하지만, 실제 써볼수 없기때문에 그냥 그런가보다 라고 생각하고 넘어가버리는 경우도 있다.

코드를 최대한 배제하고, 문화 즉 생각을 전달하는데 집중했기 때문인지도 모르겠다.

 

KakaoTalk_20220529_002001310.jpg

 

 

 

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

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

일을 하면서 항상 생각하곤 한다. “이렇게 일을 하는게 맞나..?”, “우리 회사가 발전적인 개발문화를 가지고 있나??”와 같은 고민들을 하는데, 이 책을 읽으면서 나의 현재 모습을 좀 더 객관적으로 볼 수 있는 시간을 준 것 같다.

코드 리뷰, 테스트, 팀 문화 등 직급에 상관없이 읽을만한 소재들이 정말 많이 남겨져 있다. 머리 아플 때, 읽으면 좋은거 같다.(개인의견) 


책 제목이 오글거리지만 내용은 아주 훌륭하다

 

 

향후 10년 이상 업계에 표준처럼 추천될 괴물 같은 번역서가 한빛미디어에서 나왔습니다. 주인공은 바로 "구글 엔지니어는 이렇게 일한다 (Software Engineering at Google)". 이 책의 유일한 오점은 제목이 아닐까 싶지만 (번역된 제목이 꽤나 오글거린다) 안에 내용을 읽고 나면 묘하게 설득됩니다. 이 책은 제목에서 나타나는 것처럼 구글의 다양한 소프트웨어 엔지니어링 문화를 담고 있습니다. 


 

먼저 아래 목차를 살펴보면 책을 이해하는데 한층 도움이 될 겁니다.

# PART I 전제
1. 소프트웨어 엔지니어링이란?

# PART II 문화
2. 팀워크 이끌어내기
3. 지식 공유
4. 공정 사회를 위한 엔지니어링
5. 팀 이끌기
6. 성장하는 조직 이끌기
7. 엔지니어링 생산성 측정하기

# PART III 프로세스
8. 스타일 가이드와 규칙
9. 코드 리뷰
10. 문서자료
11. 테스트 개요
12. 단위 테스트
13. 테스트 대역
14. 더 큰 테스트
15. 폐기

# PART IV 도구
16. 버전 관리와 브랜치 관리
17. Code Search
18. 빌드 시스템과 빌드 철학
19. Critique: 구글의 코드 리뷰 도구
20. 정적 분석
21. 의존성 관리
22. 대규모 변경
23. 지속적 통합
24. 지속적 배포
25. 서비스형 컴퓨트

목차에 보이는 것처럼 구글이라는 회사의 다양한 면모를 살펴볼 수 있습니다. 혹시 "구글"이라는 키워드에 거부감이 든다면 그냥 IT 업계의 공룡 기업으로 바꿔서 읽어도 무관합니다. 어차피 이 책을 보는 사람은 단순히 구글의 업무를 엿본다기보다는 글로벌에 영향을 미치는 거대한 기업의 문화를 배우고 익히고 싶을 테니까요.

PART II 문화 쪽에서 Googliness을 간접적으로 경험하게 됩니다. "구글은", "구글에서는"과 같은 표현은 책 전반에 걸쳐 자주 사용됩니다. 마치 조직 안에 깊숙한 곳에서 함께하고 있는 느낌에 빠져듭니다. 그만큼 상세하게 설명하고 있습니다. 또한 "우리 이렇게 잘해요" 뿐만 아니라 실패했던 경험도 아주 많이 담겨있습니다. 어떤 정책이나 방향, 문화가 만들어지는 과정도 잘 나타나 있습니다. 특히 팀 리드의 역할이 아주 잘 정리되어 있어서 많은 참고가 됐습니다. 개발 7년차, 매니저 1일차 , 실리콘밸리 리더십 이후로 다시 또 자극을 받았네요.

 

단원이 끝날 때 핵심 정리를 통해 깔끔한 문장으로 정리합니다.

 

 

PART III, PART IV는 기술적인 내용을 다룹니다. 하지만 어렵지 않습니다. 기술적인 내용이라고 해봐야 엔지니어가 이미 (좋든 나쁘든) 어떤 식으로든 경험했을 내용입니다. 브랜치, 빌드, 의존성 같은 용어를 모르는 사람이 애초에 이 책을 집어 들었을 확률은 아주 낮으니까요. 아, PART III의 경우 테스트 코드를 다루다 보니 개발 언어가 일부 들어가긴 하지만 이것도 이 책을 선택하는데 큰 문제가 안될 겁니다.

이 책이 아주 마음에 드는 이유는 직/간접적으로 경험을 했거나 여기저기서 습득해서 넌지시 알고 있던 지식들이 잘 정리되어 있기 때문입니다. 브라우저에서 "개발 문화"를 검색하면 아주 다양한 글이 쏟아지는데 그중에 보석 같은 글도 많이 있을 겁니다. 하지만 여러 글의 내용을 읽다 보면 반복적인 내용이 많습니다. 한편 노이즈도 분명 많을 거고요 (여기서 노이즈는 지극히 개인적으로 판단하기에 좋지 않은 글입니다). 아무튼, 이 책에 모조리 정리되어 있다고 해도 과언이 아닙니다. 인터넷을 통해 다양한 글을 읽고 접하는 건 아주 좋은 방향이지만 가능하다면 이 책을 먼저 읽으라고 권하고 싶습니다. 식탁에서 아주 맛있는 메인 요리 역할을 해줄 테니까요.

꼭 "구글은 이렇더라"로 읽지 않아도 됩니다. 가상의 글로벌 검색 회사라고 생각해도 됩니다. 단순하게 생각하면 "구글"이라는 단어를 빼고 읽어도 아주 재밌게 읽을 수 있다는 거죠. 이렇게 생각하는 이유는 "구글"로 한정 짓게 되면 이 책의 수명이 짧아질까 우려스럽기 때문입니다. (아주 낮은 확률이지만) 구글보다 더 큰 검색회사가 등장했을 때 이 책의 존재가치가 낮아지지 않을까 하는. 그만큼 이 책이 오래도록 우리 곁에 머물렀으면 좋겠습니다. 신입사원부터 팀 리드, 나아가 CTO 이상까지 누가 읽어도 좋을 책입니다. 이 책이 IT 업계 문화에 일조하기를 바랍니다. 일독을 권합니다. 

개발팀을 빌딩 하는 스타트업의 바이블이 되지 않을까 하는 생각도 드네요 :)

 

# 주의하세요!

책을 읽고 재직하는 회사에 뭔가 변화(혹은 제언)를 주려는 마음이 들더라도 급발진하지 말고 참을성을 가지세요. 문화라는 건 한 순간에 만들어지는 게 아니니까 천천히 움직일 필요가 있습니다. 책 한 권만 읽은 사람이 제일 무섭다는 걸 우리 모두 잘 알고 있잖아요? 

 


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

	

#. 들어가기 전에

'구글'이라는 회사는 IT에 종사하는 사람이 아니더라도 누구나 아는 회사이다.

그리고 모두가 선망하는 회사 중에 하나이다.

이 책은 그러한 회사에서 일하는 방식에 대해 정리한 책이다.

#. 구성

이 책은 '구글'이라는 회사에 대해 설명하면서 크게 4개 카테고리로 나눠서 설명하고 있다.

'문화', '프로세스'에 대해 접근하고 내부에서 사용하는 '도구'에 대해서 정리하였고 이를 풀어나가기 위해 사전 설명하는 '전제' 카테고리가 있다.

( 책소개는 다음 링크 참고 - http://book.naver.com/bookdb/book_detail.naver?bid=22447905 )

특히 개인적으로 관심있던 부분은 '프로세스' 카테고리였다.

아무래도 요즘 회사에서 조직이 새로 꾸려지면서 업무 프로세스에 변화를 주고 있고, '코드리뷰'와 '테스트' 관련한 프로세스를 정립하고 있다. 이러한 상황에서 이 도서에서 말하는 '코드리뷰', '단위테스트' 항목은 유용했다.

 

 

전체적으로 700여 페이지에 달하는 결코 적지 않은 분량이지만, 

현재 상황에 대입하면서 읽어보니 빠르게 읽혔다.

아래와 같이 일반적인 얘기를 하는 부분도 있다. (코드리뷰 중)

실제로 많은 코드 리뷰에서 양방향 정보 교환이 이루어집니다.
작성자는 물론 리뷰어도 새로운 기술이나 패턴을 배울 수 있다는 뜻이죠.

사실 코드리뷰가 중요한 것을 알고 있지만 실제 조직 환경 등 여러 사유로 진행하고 있지 않는 것이 현실인데(최소한 나의 경우), '구글'의 문화를 다루는 이 책에서는 그럴싸하게 다뤄주고 있다.

전체적으로 현재 상황에 대비하여 많은 고민과 생각을 하게 해주는 도서였다.

< 총평 >

1. 개발자로써 현재보다 더 나은 발전을 고민하는 개발자다!

2. 구글 소프트웨어 엔지니어들이 어떻게 업무를 수행하는지 알고 싶다!

그렇다면 읽어보자.

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

 

1220527.jpg

 

구글은 사람들이 가고 싶어 하는 테크 기업 중 하나입니다.

 

구글에 들어가고 싶은 이유는 구글이 그동안 쌓아온 노하우 때문일 것입니다.

 

구글이 어떻게 일하는지 알려주는 책을 알아보려고 합니다.

 

알아볼 책은’ 구글 엔지니어는 이렇게 일한다’ 입니다.

 

구글 엔지니어가 어떻게 일하는지 같이 살펴보겠습니다.

 

 

3220527.jpg

 

 

◆ 구글이 사람을 대하는 태도

구글은 사람을 대할 때 겸손, 존중, 신뢰의 원칙이 있습니다.

 

구글은 초반에 ‘구글답게’라는 단어를 사용했습니다.

 

용어가 다양한 의미로 확장되고 의미가 변질될수 있었는데요.

기준을 명확히 정의해 구글답게란 표현을 사용하지 않게 됐습니다.

 

3가지만 살펴보면 1. 피드백을 소중히 한다. 2. 저항을 극복한다. 3. 모호함을 뚫고 번창한다. 입니다.

 

피드백 받을 때 겸손을 유지하며 피드백의 가치를 이해할 수 있습니다.

 

저항이 있더라도 목표를 세우고 극복하려는 의지가 필요합니다.

 

모호함은 끊임없이 변화되는 환경 속에서 빠른 대처와 합의로 문제를 해결할 수 있습니다.

 

이 외에도 3가지를 더해 총 6가지의 태도를 구체적으로 정의했습니다.

 

 

2220527.jpg

 

 

◆ 구글 엔지니어의 개발 노하우

구글 엔지니어들은 공식 가이드를 만듭니다.

 

개발자들이 가이드를 보고 따라 하기 쉽게 공식 가이드를 만들어 나갑니다.

 

가이드가 있으면 새로 신입이 들어와도 개발 문화를 쉽게 따라갈 수 있도록 도와줍니다.

 

공식 가이드의 종류는 다양한데요.

코딩 스타일과 엔지니어링 모범사례, 코드 리뷰 가이드, 금주의 팁, 테스트 가이드 있습니다.

 

또한 후임자에게 개발을 알려줄 때도 관련 링크를 통해 쉽게 전달도 가능합니다.

 

 

2220527.jpg

 

 

끝으로 소프트웨어 엔지니어링은 계속 발전하고 있습니다.

 

기술변화가 빠르면 변화에 빠르게 적응해야 합니다.

 

기술이 변화하더라도 과거의 지식 기반으로 발전하게 됩니다.

그런 이유로 구글이 지금까지 쌓아온 노하우들이 가치가 있는 겁니다.

 

구글팀의 철학과 프로세스도 자세하게 설명해주므로 궁금하신 분들에게 도움 될 것입니다.

 

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

 

	

소프트웨어 엔지니어링 software engineering

코드를 작성하는 행위에 더하여 시간의 흐름에 발맞춰 한 조직이 그 코드를 구축하고 유지보수하는 데 이용하는 모든 도구와 프로세서를 포괄합니다.

 

소프트웨어 엔지니어링이란

엔지니아는 시간의 흐름과 언젠가 변경될 가능성에 더 신경써야 한다.

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

프로그램이 개발에 포인트가 맞춰있다면, 소프트웨어 엔지니어링 작업은 개발과 수정, 유지보수까지 포함한 작업이다.

문화적 측면

2-7장, 조직이 성장하고 건실하게 유지시키는 원칙들

사회적 상호작용의 세 기둥 - 겸손, 존중, 신뢰를 실천하라

  1. 자존심 버리기
  2. 비평하고 비평받는 법 배우기
  3. 빠르게 실패하고 반복하기

프로세스적 측면

8-15장, 구글의 시간과 규모에서 효과적으로 작동한 프로세스 소개

규칙과 지침 - 규칙은 내부 코드베이스 관리 방버, 지침은 권장사항과 모범사례

도구적 측면

16-25장 오픈 소스, 서드파티 등 과 구글의 도구 인프라 소개

버전 관리 시스템 - 구글이 사용하는 버전관리는 중앙집중형 VCS로 이름은 Piper이다.

80TB가 넘는 콘텐츠와 메타데이터를 담고 있따.

Piper는 서비스형 컴퓨트 기술로, 프로덕션 환경에서 분산 마이크로서비스 형태로 구동되게끔 만들어져서 세계 곳곳에 흩어져 있는 구글 엔지니어들에게 표준화된 스토리지와 소통 수단을 제공한다.

Code Search는 구글이 이용하는 코드 브라우징 및 검색 도구로 프런트엔드 UI와 다양한 백엔드 요소로 이루어져 있다.

우리나라를 대표하는 기업에 삼성과 LG가 있는 것처럼, 세계적인 글로벌 기업하면 구글과 애플을 꼽는다.

특히 구굴 기업의 핵심은 융합이다.

구글 엔지니어는 이렇게 일한다라는 책은 융합을 기업의 모토로 삼은 구글다운 책이다.

구글 소프트웨어 엔지니어링을 어떻게 운영하는지 아주 자세하게 소개해 주는 책이다.

출처: https://joyfarm.tistory.com/195 [조이팜스토리:티스토리]

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
구글 엔지니어는 이렇게 일한다

한빛미디어의 "구글 엔지니어는 이렇게 일한다"를 리뷰하게 되었습니다.


 

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

지난 20년간 구글 소프트웨어 엔지니어가 구글에서 직접 경험한 내용을 바탕으로 코드의 가치를 가장 잘 유지하는 방법, 소프트웨어를 효율적으로 관리하는 프로세스 도입 방법, 구글의 문화를

www.hanbit.co.kr


책 소개

이 책은 제가 지금껏 읽어온 개발 입문서나 프로그래밍에 대한 책이 아닙니다. 제목처럼 구글 엔지니어들이 일하는 방식이 주 내용이며

소프트웨어 엔지니어링에 대해 쓰여있습니다.


소프트웨어 엔지니어링은 코드를 작성하는 행위와
시간의 흐름에 맞추어
그 코드를 구축하고 유지 보수하는 모든 도구와 프로세스를 포괄한다

 

글쓴이가 말하길 책의 주제는 세 가지로 문화, 프로세스, 도구라고 합니다.

  • 문화: 소프트웨어 기업이 추구할 개발 문화
  • 프로세스: 구글이 부딪치고 해결하고 또 아직 해결하지 못한 영역에 대해
  • 도구: 끊임없이 커지는 소프트웨어, 코드를 관리하기 위해 구글이 투자한 도구 인프라
구글 엔지니어는 이렇게 일한다

책의 내용은 위의 설명과 같이 구글에서는 어떻게 소프트웨어를 설계하고 또 어떻게 문제를 해결했는지에 대해 작성되어 있습니다.

 



마무리

개발자라면 꼭 가보고 싶은 회사가 구글 아니겠습니까? 이 책은 구글 엔지니어가 자신이 구글에서 일한 썰을 푸는 수필 같기도 하고 레퍼런스 같기도 했습니다. 책은 구글의 개발 팀이 겪은 문제와 문제를 해결하는 방법에 대해 주로 많이 쓰여있습니다. 보통의 개발 서적과 다르게 코드보다는 구글 엔지니어의 경험과 생각이 주 내용이다 보니 글을 통해 "아 내가 나중에 팀을 이끌게 되면 이런 고민을 이런 식으로 해결할 수 있겠구나" 라는 것을 간접적으로나마 느끼게 되었는 데 정말 좋은 경험이었습니다.


저는 개발자에게 방향성을 제시해주는 책이라고 생각이 듭니다. 더 나은 소프트웨어, 서비스를 만들기 위한 구글 엔지니어들의 경험이 이 책에 담겨 있습니다. 이제 막 개발자가 된 저에게는 어려운 내용이 많았지만 시니어 또는 팀의 리더 분들이 이 책을 읽으면 더 많은 것을 느낄 수 있을 것 같습니다. 팀의 더 나은 개발 문화를 위해 고민하시는 분들이라면 이 책을 꼭 추천드리고 싶습니다.

원하는 정보를 찾기 위한 도구로서 어떤 경로든 IT와 관련된 일을 하다 보면 구글과 떨어질 수 없다. 특히 기업문화나 복지 등 세상에 끼치는 영향을 생각해 본다면 그 안에서 이루어지는 것들에 대해 궁금해지기 마련이다. 구글. 그 안에서 일하는 엔지니어가 일하는 방법은 이런저런 과정을 통해 많이 알려져 있기는 하지만 엔지니어의 측면에서 업무에 관한 프로세스, 도구 등에 대해 다루고 있는 책이 있었나 싶었는데 궁금했던 많은 것들을 들여다볼 수 있었다.

소위 천재들의 집합소, 구글의 엔지니어들이 일하는 방법

이 책은 구글이 어떤 식으로 양질의 프로그램을 만들기 위해 협업하고 코드를 만들고 테스트하고 관리하는지를 다루고 있는 책이다. 단지, 책에서 언급하고 있듯 어떤 방식으로 프로그래밍하라거나 설계법, 언어별 주의점 같은 것들을 다루지 않고 있다. 이런걸 기대한다면 도움은 되지 않을 것 같다. 구글의 엔지니어들이 어떤 문화 속에서 어떤 프로세스로 어떤 도구를 활용해서 코드의 생성부터 관리, 그리고 폐기까지. 운영하고 있는 방법 전반에 걸친 부분이 궁금하다면 재미있게 읽을 수 있을 것이라 생각된다.

소위 천재라 불리는 사람들이 모이고 모여서 만들어내는 문화는 당연히 남다른 부분이 있을 것이라 여겨진다. 책에서 다루고 있는 긴 시간 동안 축적시킨, 잘 정리된 방대한 정보는 사용할 수 있는 것도 있고 전혀 써먹을 수 없는 부분도 있겠지만 내가 지금 일하고 있는 곳과의 다른 점, 도입한다면 좋을 것 같은 것들이 정리되어 있기에 구글이 코드 품질을 유지하기 위해 진행했던 프로세스가 궁금했다면 일독해보길 권한다.

도움이 되었던 부분 - 지식 공유, 문서, 스타일 가이드

책 전체 분량으로 봤을 때는 극히 일부분에 지나지 않았지만 문서 제작과 스타일 가이드에 대한 부분이 개인적으로 무척 마음에 들었다. 어떤 경로 건 일정 부분 연차가 쌓이게 되면 문서 작업이 필요해진다. 회의록이 되었건 가이드 문서건 메일이건 읽는 사람을 위한 글을 쓴다는 것은 생각보다 어려운 작업이니까.

어려운 지식을 쉽게 전달시킬 수 있다면 가장 이상적이라 할 수 있겠다. 지식을 협업을 위해 관계자들에게 효율적으로 전달하는 방법에는 어떤 것들이 있을까? 책에서는 조직의 지식을 확장시키기 위해 가장 중요한 것은 정보를 접하는 상호간에 존중이라고 한다. 무척 공감 가는 부분이었다. 일부 인원들은 직접 참여하거나 작성하지도 않으면서 감 놔라 배 놔라 하는 경우가 있는데 무척 민폐다.

지식을 공유한다는 것은 어려운 일이면서도 생각보다 쉬운 일이다. 한번이 어렵지 두 번은 그렇게 어렵지 않다고 할까. 인하우스 작업인 경우 이런 지식 공유 방식은 무척 중요해진다. 외부인력들을 동원한, 단발적으로 이루어지는 프로젝트의 경우 아무리 코딩 규칙을 만들어 둔다고 해도 어디선가는 지켜지지 않게 되는 부분이 있기 때문에 스타일 가이드가 더욱 중요해지기도 한다. 그리고 가능하다면 자동화를 통해 조금은 수월하게 처리가 가능하기도 하다.

책에서 다루는 것은 권장사항에 해당하는 'Guide' 개념으로 'Rule' 처럼 엄격하게 지켜야 하는 것을 지칭하지는 않는다고 생각된다. 관계된 불특정 다수의 사람이 작업하기 때문에 규칙으로 강제하기에는 한계가 있으니까. 따라서 프로젝트에서는 규칙의 양을 최소화하며 읽는 사람에게 기준을 맞추고 일관되도록 작성하며 문제가 생길 수 있는 구조를 피하고 실용적 측면을 위하여 예외를 허용하는 유연성도 갖추고 있어야 한다.(어렵다..)

스타일 가이드에서 중요한 내용은 위험을 회피하기 위한 올바른 사용법에 대한 제시와 모범 사례, 일관성 있는 규칙들에 대해 언급하며 가장 중요한 부분, 규칙은 수정 가능하다는 것도 빼놓지 않고 있는데 스타일 가이드나 각종 문서는 프로젝트에 문외한인 사람이 빠르게 실제 작업에 투입될 수 있는 중요한 부분이기 때문에 프로젝트 별 성격에 따라 항상 제대로 관리될 필요가 있다.

후기

구글 엔지니어들이 업무를 대하는 방법에 대해 궁금하다면, 가볍게라도 읽어 보면 좋을 것 같다.(가볍게 읽을 분량은 아니지만..) 엔지니어가 효율적으로 일하는 데 있어 필요한 모든 것들이 담겨있다 생각하면 좋겠다.

당연한 이야기지만 프리랜서로 일하기 시작한지 꽤 시간이 지났지만 회사마다 분위기도 틀리고 업종에 따라서도 분위기나 환경이 사뭇 다르다. 숙련된 작업자의 경우 자기만의 방식이 어느 곳에 선가는 작용하기 마련이다. 따라서 자동화가 가능한 부분이 있다면 자동화를 정의해 두는 것이 좋을 것이라 생각된다. 사람의 사고라는 것은 언제든지 바뀔 수 있는 부분이기 때문이다.

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

우리나라 개발환경도 많이 개선되고 있는 것 같다. 예전 주먹구구식 개발환경에서 체계를 갖추고 개발문화와 시스템을 제대로 갖춘 회사가 많이 늘어나고 있다. 하지만 개발은 하나의 문화이고 경영진이든 관리자가 그 문화를 이해하지 못한다면 언제든 허물어질 수 있는 위험성을 안고 있다고 생각한다. 그리고 문화를 갖추지 못한 조직인 그 문화를 만들어 가는 과정도 오랜 시간이 필요한 작업으로 볼 수 있다. 문화라는 단어에서 엿볼 수 있듯이 누군가가  시작한다고 완성되는 것이 아니라 오랜 시간동안 그 조직에 녹아들고 서로 공감을 해야 완성되는 체계라고 볼 수 있다.

 

그러나 이러한 문화를 제대로 이해하기도 힘들지만 새로운 조직에서 접목하기도 어려운 것도 현실이다. 일단 이러한 문화에 대해 제대로 된 정보를 접하기도 어렵고 문서화된 자료를 구한다고 하더라도 실제 조직에 적용하는 것은 또 다른 문제라고 볼 수 있다. 이런 측면에서 이 책은 개발문화에 대한 이해와 이미 체계를 갖추고 조직에서 활용하고 있는 실제 사례를 접할 수 있다는 점에서 매우 유용한 자료를 제공한다고 볼 수 있다. 책의 분량만 봐도 간단히 소개하는 정도가 아님을 알 수 있다. 약 700여 페이지에 걸쳐 구글  엔지니어들이 일하는 방법을 소프트웨어 엔지니어링 관점에서 잘 소개하고 있다.

 

프로그래밍과 달리 소프트웨어 엔지니어링은 시간의 흐름에 발맞추어 한 조직이 코드를 구축하고 유지보수하는 데 이용하는 모든 도구와 프로세스를 포괄한 것이다. 즉 당장의 아웃풋이 아니라 향후 지속가능한 개발과 체계를 염두에 두고 다방면으로 고려한 것을 말하는 것이다. 소프트웨어 조직은 시간과 변경, 규모와 성장, 트레이드오프와 비용 등에 대한 기본 원칙을 지키면서 설계, 아키텍처 잡기, 코드 작성을 해야하는 것이다. 이 책은 크게 소프트웨어 엔지니어링에 대한 전제, 문화, 프로세스, 도구에 관련된 4개의 파트로 구분되어 있다. 그리고 각각의 파트에서 세부적인 주제를 다루고 있다.

 

파트 1에서는 소프트웨어 엔지니어링에 대한 개념 개념을 다룬다. 시간과 변경에 관련된 사항과 규모 확장 및 효율성에 대한 부분, 그리고 트레이드 오프와 비용에 대한 주제를 다루고 있다. 특히 소프트웨어 엔지니어링과 프로그래밍에 대한 관점과 차이점에 대해 자세히 설명한다. 파트 2에서는 문화에 대한 소개를 한다. 팀워크 및 지식 공유의 중요성 및 실제 사례, 팀을 이끌어 가는 방법과 성장하는 조직을 이끄는 방법, 그리고 생산성을 측정하는 방법까지 개발 문화에 관련된 전반적인 내용을 언급하고 있다.

 

파트 3에서는 프로세스에 대해 소개한다. 개인적으로 볼 때 가장 중요한 파트이지 않을까 생각한다. 스타일 가이드와 규칙의 중요성, 그리고 코드 리뷰를 통한 장점과 사례, 그리고 리뷰 유형을 설명한다. 또한 문서의 중요성과 다양한 작성 방법과 테스트에 대한 전반적인 내용을 다루고 있다. 파트 4에서는 도구를 다룬다. 버전 관리 및 브랜치 관리에 대한 도구와 방법을 보여주면서 빌드 시스템과 빌드 철학에 대해 잘 보여주고 있다. 또한 구글에서 사용하는 코드 리뷰 도구과 정적 분석 및 의존성 관리의 중요성에 대해 언급한다.

 

이 책은 각각의 파트, 또는 각 파트에 포함된 각각의 장이 독립적적으로 유용한 정보를 제공하고 있는 것 같다. 따라서 책의 내용을 처음부터 읽지 않더라도 본인이 꼭 필요로 하는 파트나 장만 읽어보더라도 많은 도움이 될 것 같다는 생각이 든다. 또한 개발 문화에 대한 지식이 없거나 경험하지 못한 상태라면 이 책을 통해 바람직한 개발 문화와 그 개발 문화를 만들어 가는 방법에 대한 좋은 가이드를 얻을 수 있을 것이라고 생각한다. 또한 이미 개발 문화가 갖춰져 있다고 하더라도 구글의 개발 문화를 접목해서 보다 개선된 개발 문화를 가질 수 있지 않을까 기대도 해 본다.

 

책의 내용을 방대하지만 그만큼 많은 유용한 정보를 담고 있다고 생각한다. 특히 구글이란 조직에서 실제로 적용해서 사용하고 있는 실제 사례이기 때문에 이론적으로만 치우친 다른 참고 자료보다 훨씬 현실적으로 도움이 될 수 있다고 생각한다. 개발 문화 또는 체계를 갖추고자 하는 조직이라는 꼭 한번 읽어볼만한 책이지 않을까 생각한다.

 

 

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

구글이 30년 동안 겪어온 경험과 역사를 읽을 수 있는책 입니다.

 

반드시 지켜야 하는 내용은 아니지만, 지침서 삼아서 이런 문제의 경우 이런 방식으로 해결했구나. 이런 상황에서 잘못했다간 이와 같은 상황을 경험할 수 있겟구나 라는 내용들이 잘 나와 있습니다.

 

외우거나 반드시 지켜야 할 원칙들을 나열한 책은 아닙니다. 그러나 예상치 못한 질문을 하며, 필요한 내용에 대해 용어에 대한 정의를 시작으로 내용들을 계속 이어가고 있습니다.

 

충분히 좋은 책입니다. 넉넉하게 독서하시면 좋을 것 같습니다.

한빛미디어에서 <구글 엔지니어는 이렇게 일한다>를 출간했습니다.


정말 주변분들에게 진심으로 강력추천하는 책! <구글엔지니어는 이렇게 일한다> 리뷰를 시작하겠습니다. 한빛미디어에서 지난 5월 10일에 신간 <구글 엔지니어는 이렇게 일한다> '구글러가 전하는 문화, 프로세스, 도구의 모든 것'을 출간했습니다. 이 책의 원제는 Software Engineering at Google인데요. 2020년에 미국에서 출간했던 책인데, 2년만에 번역을 해서 출간을 했으니 상당히 빠르게 국내에 소개된 책이라고 할 수 있습니다.


이 책은 아마존 소프트웨어분야 베스트셀러인데요, 22년 5월 3일 기준으로 Amazon 소프트웨어 디자인 도구 1위, 컴퓨터 하드웨어 설계 및 아키텍처 1위, 컴퓨터 시스템 분석 및 디자인 2위를 기록한 책입니다. 그만큼 책의 내용이 좋기 때문에 이번에 한빛미디어에서 출간했습니다.


사실 국내에 IT분야 전문출판사가 여러 곳이 있지만, 한빛미디어만 믿고 보는 출판사는 드물다고 생각합니다. 이 말은 제가 한빛미디어 <나도 리뷰어다> 활동을 하기 때문에 입에 발린 소리가 아닙니다. 제가 이 활동을 하기 전부터, 또 주변에 수많은 개발자 지인들의 이야기를 들어도 한빛미디어만큼 수준급의 책을 꾸준하게 출판하는 곳은 없다고 합니다.


개발책의 경우 전문지식을 다루기 때문에 아주 작은 오류만 있어도, 시스템을 멈추게 만드는 치명적 결함을 일으키는데요. 그만큼 IT 관련 책은 실력있는 저자를 선정해서, 독자가 원하는 내용을 선별하여 실력있는 검수자가 꼼꼼하게 검토하여 출간을 해야 합니다.


이런 면에서 한빛미디어는 탁월한 역량을 갖춘 출판사라고 할 수 있습니다. 이는 미국의 컴퓨터프로그래밍 전문 출판그룹 O'REILLY 오라일리미디어의 책을 국내에 번역하는 다른 출판사의 책과 한빛미디어의 책을 비교해보면 확연하게 드러나는 부분입니다.

<구글 엔지니어는 이렇게 일한다>는 무려 704쪽의 방대한 분량을 다루고 있는 책입니다. 그럼에도 불구하고 정말 쉽고 빠르게 읽힙니다. 제가 읽으면서도 이 책의 내용이 너무 좋아서, 주변 지인들과 개발자분들에게 꼭 이 책을 읽어야 한다고 추천을 드렸는데요.


그정도로 <구글 엔지니어는 이렇게 일한다>는 IT테크 기업에 일하는 분들이라면 반드시 알아야 할 내용을 모두다 담았다고 할 수 있습니다. 사실 책의 내용이 너무 좋아서, 리뷰 쓰기를 약간 망설였습니다. 왜냐하면 책이 좋은 만큼, 제가 이 좋은 책의 내용을 리뷰에서 온전히 드러내지 못할까봐 걱정이 들었기 때문입니다.


그동안 여러 책을 읽고 리뷰를 꾸준히 작성해왔습니다. 그런데 한번도 책의 내용에 누가 될까봐 리뷰 작성을 망설였던 적은 없었습니다. 그정도로 <구글 엔지니어는 이렇게 일한다>의 책은 너무 좋았고, 이 책의 좋은 점을 한 명에게라도 더 알리고픈 마음이 들었습니다.


이렇게 좋은 책을 출간한 한빛미디어와 빠르게 번역해준 개앞맵시(이복연)님께 감사의 말을 전하고 싶습니다. 본격적으로 리뷰에 앞서 이 책이 너무 좋아서, 개앞맵시님 페북 친구추가도 했습니다.

개앞맵시가 도대체 무슨 말인가 했는데, <개발자의 앞길에 맵핵 시전>의 줄임말이었구요. 이미 저는 예전부터 이 페이지에 좋아요를 눌렀더라고요. 그 정도로 개발자 사이에서는 실력으로 인정받는 개앞맵시님의 책이니 믿고 봐도 된다고 말씀드리고 싶습니다.


또한 <구글 엔지니어는 이렇게 일한다>가 5월 10일에 출간되자마자 3일만에 2쇄 출간을 위해 수정 작업에 들어간 개앞맵시님이 올린 포스팅을 보면, 교보 4위, 예스 5위, 알라딘 4위, 리디 1위를 기록했다고 합니다.


미국뿐만 아니라 한국에서도 <구글 엔지니어는 이렇게 일한다>는 엄청난 인기를 끌고 있습니다. <골빈해커의 3분 딥러닝 텐서플로 코드로 맛보는 CNN, AE, GAN, RNN, DQN (+ Inception)>를 쓴 저자 골빈해커(김진중)님은 자신의 페이스북에 다음과 같은 글을 남겼습니다.

소프트웨어 개발자로써 딱 세 권만 읽는다면 다음 책들을 추천합니다. 다른 좋은 책들도 많지만, 기본이 되는 거의 모든 내용이 이 세 권의 책에 다 있다고 볼 수 있을 것 같네요. 다른 책들은 이 세 권의 책을 온전히 이해한 후 읽거나, 혹은 이 책들의 내용을 이해하기 위해 읽으면 좋을 것 같습니다.

사실 "코드 컴플리트"와 "리팩터링" 이후 뭔가 하나 더 필요한데.. 뭐지? 뭐지? 했는데, “구글 엔지니어는 이렇게 일한다” 책을 읽고 딱 라인업이 완성됐다고 생각했네요. (툴의 사용과 협업에 관련된 내용) 책 제목이 좀 아쉽지만...



이 포스팅을 보면서 왜 골빈해커(김진중)님이 <구글 엔지니어는 이렇게 일한다>의 책 제목이 아쉽다고 말하지는 이해가 됐습니다. <구글 엔지니어는 이렇게 일한다>라는 제목으로는 이 책에 담겨있는 내용을 모두 아우를 수 없다고 저도 생각합니다.


그만큼 이 책은 방대하면서도 꼼꼼하면서도 구체적이면서도 핵심을 담고 있습니다. 특히 개발자를 존중하고 조직과 팀을 이끌어가는 문화까지도 상세한 사례와 함께 다루고 있기 때문에 개발자는 당연히 읽어야 하고, 개발자와 함께 일하는 IT테크기업의 전직군 모두가 읽어야 한다고 생각합니다. (이하 생략)

더 자세한 리뷰는 아래 링크에서 확인해주세요.

출처 : https://riedel.tistory.com/569

이 책은 홀로서기에 두려운 개발자을 위한 책이라고 단언합니다.

저는 사수가 없는 개발자였습니다. 그래서 일정관리, 대화방법, 컨벤션등을 홀로 찾아가며 배우는 수 밖에 없습니다.

그래서 대부분 블로그나 컨퍼런스를 통해 내용을 채우는데 블로그, 컨퍼런스 경우는 짧은 시간과 어그로를 위해 핵심내용만을 주로 언급하다가 끝이납니다.

물론 이런 내용도 충분히 감사하고 영광스러운 일입니다만, 더 많은 지식을 습득하는 입장에선 매우 아쉽습니다.

그리고

이 책은 이러한 아쉬움을 덜어주기 위해 충분한 사례와 경험담을 통해 구글의 문화에 대해 알려주고 또 화두를 던져줍니다.

책의 서문에는 이런 뉴앙스의 말이 있었습니다.

구글이 정답은 아니다. 다만 정답을 위해 많은 개발자들이 노력한 결과물이다

전적으로 맞는 말입니다.

이미 수천, 수만명의 개발자형, 누님등이 쌓아온 지식의 정수를 안볼 이유가 없습니다.

이제 주니어를 넘어 중니어로 향해가고 있는 제 커리어의 시기에 너무도 소중한 책을 얻게 된 것같아 기쁩니다.

내용을 짧게나마 요약하자면

문화, 도구, 프로세스, 코드리뷰, 리펙토링(대규모 변경)에 대한 섹션으로 되어있습니다.

지금은 프로세스부분을 읽고 있는 중인데

문화, 도구 부분을 읽고 현재 회사에 도입해보고 싶은 너무도 많은 차이점이 보였습니다.

그 동안 잠깐 지나간 불편함이 개선할 수 있는 문제임을 인식하는 것은 항상 설레고 즐겁습니다.

또한 특정 기술스택을 위한 것이 아닌 구글에 대한 책이다보니 이해못하는 단어나 기술들이 나올때, 적절하게 하단에 주석으로 되어있음을 보고 배려심이 그득한 책이구나 라고 생각했습니다.

이 책은 내가 지금까지 봐왔던 한빛미디어의 다른 책들과는 많이 달랐다. 그래서 너무 좋았다.

지금까지는 프로그래밍 관련된 책을 많이 봤다.

조직 운영 등 코딩과 직접적으로 관련 없는 내용은 다른 책을을 통해 습득했다.

이 책은 서론에서 '이 책이 다루지 않는 내용'을 언급한다.

"이 책은 소프트웨어 설계를 다루지 않습니다. '프로그래밍'관련 조언은 거의 없습니다."

 

그러면 이 책은 어떤 것들을 다룰까.

- 팀워크 이끌어내기

- 지식 공유

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

- 팀 이끌기

- 성장하는 조직 이끌기

이런 내용을 다룬다. (물론 다른 내용도 많지만 책이 너무 두꺼워서 난 저 부분만 읽었다.)

 

다른 책들과 비교했을 때 이 책의 큰 장점이고 구매할 충분한 가치가 있다.

주변 사람들에게 선물할 가치도 있다.

 

 

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

저렇게 큰 회사는 어떻게 일할까에 대한 해답을 주는 책을 찾았다.

 

 

http://www.yes24.com/Product/Goods/109182479

 

 

이번달 5월 10일에 출간한 책이다. 내가 가끔 보던 "코드 없는 프로그래밍" 유튜브 채널에서도 소개 해줬던 책이다.

https://www.youtube.com/watch?v=johqw9kSIWM&ab_channel=%EC%BD%94%EB%93%9C%EC%97%86%EB%8A%94%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D 

 

 

 

 

나도 C++ 언어를 주로 다뤄오고 있고 구글에서 C++을 10년 이상 다뤄오는 다르는 큐레이터 2명이 작성한 책이니 기대가 됐다.

 

 

 

책 뒷면 설명 소개 중 일부

 

 

이 책은 기본적으로 어떤 프로그래밍 어떻게 작성하고 사용하는가에 대한 부분 보다는 "소프트웨어 엔지니어링이란"에 대한 좀 더 원초적인 질문에 대한 대답들과 일하는 팀 문화 부분에 대한 내용이 작성되어 있다.

 

"..소프트웨어 설계를 다루지 않습니다. ..."

 

 

파트1 에서는 주로 소프투웨어 엔지니어링이란?에 대한 부분을 답해주고 있다.

 

 

파트2 에선 회사 '문화'에 대한 부분을 이야기 하고 있다. 물론 뛰어난 능력이 있으면 좋겠지만, 결국엔 엔지니어링도 '사람' 하는 일이기에 어떤 사람들과 어떤 생각을 가지고, 어떤 일을 하는가에 대한것도 굉장히 중요한 부분이라고 생각한다.

 

 

 

 

 

책을 읽다보니 마음에 드는 내용들이 많이 있어서 자주 찍게 되었다. 물론 찍지 않는 부분도 굉장히 많다. (물론 추상적이기도 하고 당연히 알고 있을수도 있는 내용이지만 1가지라도 새로운 내용을 배우는 재미이지 않겠는가..)

 

 

 

파트3 는 프로세스라는 이름으로 일 자체에 대한 방식을 이야기하고 있다. '스타일', '코드 리뷰', '문서 자료' 등 각각 기본적으로 부분들 일수도 있지만 왜 필요한가?에대한 답들과 갖추고 있으면 좋은 스킬들에 대한 설명과 핵심을 이야기해주고 있다.

 

 

 

 

마지막 파트4는 일할때 사용하는 "도구"들에 대한 부분들로 "버전 관리", "빌드 시스템과 빌드철학" 일 처리에 도움이 되는 부분들을 기술해주고 있다.

 

 

이 책은 일 자체에 대한 부분들과 공학기법에 대한 다양한 팁들과 원초적인 질문에 대한 답들 잘해주고 있으며, 굉장히 좋은 책이라고 생각이 든다. 구글이라는 어마어마한 대기업에 어떤 사람들이 어떤 생각을 갖고 있는가에 대한 궁금증을 아주 조금이라도 해소해주는 책이지 않을까 싶다. 책의 장점 중인 지구 반대편에 있는 사람의 생각을 정리해준 굉장히 좋다기보단 재미있는 책이라고 생각이 든다.

 

 

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

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

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

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

 

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

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

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

닫기

리뷰쓰기

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

* 리뷰 작성시 유의사항

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

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

오탈자 등록

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

도서 인증

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

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

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

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

닫기

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

자료실