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

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

개앞맵시 옮김

 

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

 

2022년 5월

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

 

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

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

 

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

 

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

 

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

 

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

 

시간 위를 걷는 프로그래밍

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

 

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

 

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

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

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

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

 

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

 

구글의 시각

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

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

 

- 문화

- 프로세스

- 도구

 

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

 

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

 

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

 

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

 

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

 

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

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

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

 

Love Yourself.

16여 년 만의 개정을 기념해 재탄생한 한국 특별판???

에릭 프리먼, 엘리자베스 롭슨, 케이시 시에라, 버트 베이츠 지음

서환수 옮김

 

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

 

2022년 4월

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

 

4월의 리뷰할 책은 "헤드퍼스트 디자인 패턴(개정판)"이다.

무려 16년 만에 개정판이 나왔다. 개정판이라고 할 수 있을지는 모르겠으나 아무튼 한국 특별판이다.

 

몇 페이지를 휘리릭 봤을 때 느낀 점은 예전 본판보다 보기가 훠어~~ 얼씬 편해졌다.

헤드퍼스트 디자인 패턴이라는 책이 워낙에 좋은 책으로 소문이 많이 났었기 때문에 꼭 봐야지 봐야지 했는데 뭔가 미쿡스런 책의 그림과 구성에 지쳐버리고 말았다. (공부 열심히 하지 않아서 그런 건 아니랍니다...)

어디를 어떻게 봐야 하는 거지? 라는 생각을 많이 했던 것 같다.

책의 일부분을 보여드립니다...

나는 정말 정신 없었다...

 

그런데!

개정판이 나왔다.

구성이 정말 깔끔하게 잘 나왔다.

 

훨씬 보기 편하고 텍스트 색감도 너무 좋다. 

이것 보세요 여러분!!!!

정말 잘 나왔다! 당장 읽어 보고 싶을 정도로 좋은 구성이다.

옮긴이의 말처럼 한국 정서에 맞게 일러스트레이션도 싹 바뀌고 뼈대와 태가 바뀌었다.

어디에 감사를 드려야 하나 ㅎㅎㅎ

일단 한빛미디어에 감사드립니다!!

(늘 감사하고 있어요!!)

 

그럼 이제 책의 본문에 집중해보자.

헤드퍼스트 디자인패턴은 친절하게도 책을 보는 방법을 잘 설명해준다.

여러분의 두뇌를 정복하는 방법

1. 천천히 하세요.

2. 연습문제를 꼭 풀어보세요.

3. <무엇이든 물어보세요> 부분은 꼭 읽어보세요.

4. 자기 전 마지막으로 이 책을 보세요.

5. 물을 많이 마십시다.(????)

6. 배운 내용을 얘기해 봅시다.

7. 두뇌의 반응에 귀를 기울여 봅시다.(힘들면 쉬라는 뜻)

8. 뭔가를 느껴 봅시다.

9. 직접 디자인해 봅시다.

 

진짜 이대로만 하면 개발 실력이 쑥쑥 성장할 수 있을 것 같다.

이 책뿐만 아니라 다른 책들도 이런 식으로 공부한다면 내 머릿속에 잘 남으리라.

 

어쨌든,

이 책은 디자인 패턴을 말하는 책이다.

디자인 패턴을 잘 활용하면 코드 재사용뿐만 아니라 더 확장될 앱을 준비할 수가 있다.

괜히 패턴이라는 단어를 사용하는 것이 아니다. 선배 개발자 분들이 시행착오를 많이 겪은 후에 가장 효율적이라고 생각하는 것을 패턴으로 남겼을 테니 말이다.

지속적으로 공부하고 접목시켜 보다 보면 디자인 패턴을 가장 현명하게 활용하는 법을 깨달을 수 있을 것이다.

 

이 책은 우선 초급 개발자에게 가장 도움이 될 책이라고 생각이 된다.

물론 요즘 시대에 초급 / 중급으로 굳이 구분하고 싶지는 않지만 언어를 공부하고 프레임워크를 다뤄보기 시작한 개발자가 디자인 패턴을 공부하면 가장 도움이 될 것 같기 때문이다.

본인이 생각하기에 자바객체지향을 지속적으로 사용해야 한다면 이 책은 필수라고 생각한다.

 

디자인패턴을 이야기하자면 보통 GoF의 디자인 패턴을 많이 이야기한다.

하지만 GoF의 책은 난이도가 좀 있는 편이기 때문에 이 책으로 먼저 시작하고 디자인 패턴에 대해서 더 궁금하다면 GoF로 넘어가는 것도 좋은 방법일 것 같다. 패턴도 패턴이지만 객체를 설계하는 법에 대해 설명을 잘해주는 책이기 때문에 강추하는 책이다.

 

마지막으로, 개정판이라고 해서 내용은 크게 바뀌진 않았다.

일단 예제 코드가 최신 자바버전인 자바 16에 대응 가능하도록 변경이 된 것 제외하고는 내용에서 큰 변화는 없는 것으로 보인다.

 

디자인 패턴을 재미있게, 그리고 효과적으로 공부하고 싶은 분들은 헤드퍼스트 디자인패턴으로 시작하자.

괜히 16년 만에 개정판이 나온 것이 아니다. 그것도 한국 특별판으로.

 

Love Yourself.

Go 개발자처럼 생각하는 방법

존 보드너 지음

윤대석 옮김

 

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

 

2022년 3월

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

 

올해 두 번째 리뷰할 책은 "러닝 Go" 이다.

 

어떤 책을 선택할까 고민하다가 Go를 단어만 들어봤지, 뭐 어떤 건지 전혀 몰라서 무작정 신청해 보았다.

 

Go는 구글이 만든 개발 언어이다.

옮긴이의 말을 빌리자면, 비교적 최근에 개발되었고 오랫동안 유지 개발되어온 다른 인기 있는 프로그래밍 언어들과는 다르게 최신 멀티코어 아키텍처(?)를 제대로 활용할 수 있도록 고안되었다. 특히 Go루틴(goroutine)과 채널을 통해 작업을 동시성과 병렬성을 쉽게 구현해 낼 수 있도록 한 부분에서 다른 언어들과 차이를 보인다.

 

특히 Go 언어는 도커나 쿠버네티스와 같은 대형 프로젝트에서 사용되는 만큼 성공했다고 할 수 있다.

 

이런 장점으로 시스템 프로그램이나 서버용 프로그램 개발에 많이 활용되고 있지만, 국내에서는 서버 개발로 아직도 자바를 많이 쓰고 있다.

(자바 만세!)

 

개발자가 원하는 프로그램을 구성하면서 언어에서 제공하는 다양한 기능을 사용하는 방법뿐만 아니라 효율적이고 확장할 수 있게 진행하려면 언어가 가지는 특징과 철학을 잘 이해할 필요가 있다고 생각한다. 개발자가 자신이 사용하던 언어와 Go가 개념적인 부분에서 크게 다르지 않지만, 이 책에서는 다른 언어들과의 차이점을 명확히 구분해주기 때문에 Go 언어만의 매력을 느낄 수 있다.

 

옮긴이가 한 말 중에 가장 와닿는 부분은,

"Go 언어는 다른 언어에 비해 배우기 쉽고 프로젝트가 커지더라도 간결함을 유지하여 확장도 쉬운 언어라고 생각한다."

프로젝트가 커지더라도 간결함을 유지할 수 있다니?

굉장히 매력적인 부분이라는 생각이 든다. 간결하지만 강력한 기능을 제공하여 유지 보수에도 많은 이점을 가지고 있다는 Go.

 

다음으로 대상 독자에 대해 저자가 정리해준 부분이 있다.

본인이 구분 지어 보고자 한다.

1. 두 번째 개발 언어를 찾는 개발자

2. 버전 관리나 IDE를 사용해본 경험이 있는 개발자

3. 동시성이나 추상화 같은 컴퓨터 과학 개념에 익숙한 개발자

4. 기본적인 HTTP 개념에 익숙한 개발자

이 정도로 정리가 되는 것 같다. 4가지 조건을 다 충족시킬 필요는 없지만 하나의 언어가 익숙해진 미들급 개발자가 이 책을 본다면 가장 적합한 시기의 책이 아닐까 싶다.

 

목차를 간단히 보자.

1. Go 개발 환경 설정

2. 기본 데이터 타입과 선언

3. 복합 타입

4. 블록, 섀도, 제어 구조

5. 함수

6. 포인터

7. 타입, 메서드, 인터페이스

8. 오류

9. 모듈, 패키지 그리고 임포트

10. Go의 동시성

11. 표준 라이브러리

12. 컨텍스트

13. 테스트 작성

14. Reflect, Unsafe, Cgo

15. Go의 제네릭

 

보통의 컴퓨터 언어 책과 구성은 비슷하지만 익숙하지 않은 단어들이 있는데, Go 만의 특징이 아닐까 싶다.

 

본문은 설명과 코드 그리고 Tip, NOTE 등으로 구성되어 정리하기 편하게 되어 있다.

근 450 페이지에 달하는 분량이지만 새로운 언어를 배우고자 한다면 Go를 450 페이지 만에 배울 수 있다는 것이다.

 

개발이 무료하고 새로운 것을 찾고자 하는 개발자들이여.

러닝 Go에 도전해 보는 것은 어떨까?

 

LoveYourself.

+ Recent posts