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

woori kim·2023년 2월 26일
1

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

이 책을 읽어봐야겠다고 생각했던건 회사 업무에서 일하는 방식이 조금 비효율적이라는 생각이 들고부터였다. 같이 일하는 사람과의 협업이 전혀 되지않고 코드 리뷰가 제대로 되고있지 않는 상황에서 내가 할 수 있는건 뭘까? 라는 고민을 엄청 했던 것 같다.

그러던 와중에 이 책의 제목을 보고 “그 구글에선 도대체 어떻게 일하는데?” 라고 어그로 끌려서 이 책을 홀린듯 읽기 시작했다.

챕터 소개

  1. (전제) 소프트웨어 엔지니어링이란? (1장)
  2. 문화 (2~7장)팀워크, 지식 공유, 공정 사회,팀 리딩, 조직 성장, 생산성 측정
  3. 프로세스 (8~15장)스타일 가이드, 코드 리뷰,문서자료, 테스트, 폐기
  4. 도구 (16~25장)버전/브랜치 관리, 코드 검색, 빌드, 코드 리뷰, 정적 분석,의존성 관리, 대규모 변경, 지속적 통합/배포, 서비스형 컴퓨트

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

  • 기대 생애 동안 요구되는 모든 가치 있는 변경에 대응할 수 있는 지속 가능한 소프트웨어 작성

이 챕터에서는 오랫동안 유지보수가 가능하고 업데이트하기 용이한 코드를 작성하기 위해 팀간 협업을 가능하게 하는 정책, 관례등을 모두 어우르는 개념에 대해 설명하고있다.

사실 나는 지난 프로젝트때 가장 힘들었던게 유지보수 가능한 코드가 아닌 당장 기능만 돌아가면 되는 코드를 만들고 있었기때문에 나는 당장 소프트웨어 엔지니어링이 되고있지 않는다. 라는 생각을 했던 것 같다.

문화

가장 재미있게 읽었던 챕터였다. 정말 구글에서 어떻게 일을 하는지 어떤 프로세스를 도입하고있는지 실례를 가지고 설명했기때문에 꽤 많은 도움이 되었다.

  • 위대한 팀 만들기
    • 자존심 버리기
    • 비평하고 비평받는 법 배우기
    • 빠르게 실패하고 번복하기

내가 가장 관심 있게 봤던 부분은 팀워크에 관련 된 내용이었다. 어느정도 연차가 쌓인후 관심을 갖는건 리딩, 팀워크 이었기때문에 관심있게 읽었다.

내 코드에 대해 부끄러워하지말고 적극적으로 피드백을 받고 피드백을 반영하는 것이야 말로 퀄리티를 향상시키며 서로간의 신뢰 받는 코드를 만드는 길이 아닐까? 라는 생각을 해보았다.

지식공유 파트에서는 팀이 성장하기위한 지식공유, 리더의 역할에 대해 설명하고 있다. 그중 인상적인 구절은 다음과 같았다.

  • 지식공유
    • 장기적으로 조직의 성패는 인재를 얼마나 잘 키워내느냐에 달려있다.

매번 비슷한 말을 반복하게 되는데 나는 간단하게는 코드리뷰가 얼마나 잘되느냐에 따라 팀의 성장이 달라진다고 생각한다.

어떤 사람이 리더가 되어야 하는가?

사실 나는 매니지먼트를 지향하고 있기때문에 이 챕터 역시 관심있게 읽었던 부분이다. 현재 팀에서 리더, 서브리더를 번갈아 맡아가고있었지만 과연 내가 리더로서 팀원들에게 신뢰를 줄수있는가? 나는 과연 좋은 리더인가? . 다음 팀에서 내가 좋은 리더로 성장할 수 있는가? 라는 생각을 많이 했던 것 같다.

  • 리더의 역할
    • 팀의 활기를 불어넣기
    • 생산성높이기
    • 팀섬기기
    • 겸손, 존중, 신뢰 분위기 조성
    • 사회적 건강 관리
    • 기술적 건강 관리

리더는 팀원의 성과와 생산성 행복을 관리할 수 있어야하고 구성원들의 다리가 되어줄 수 있어야한다.

  • 구글이 리더에게 권장하는 조언과 요령
    • 위임하되 곤란한 일은 직접 처리
    • 여러분을 대신할 사람 찾기
    • 혼란으로부터 팀을 보호
    • 팀이 잘하는 부분을 칭찬하기
    • 실패하더라도 되돌릴수있는 일은 할수있도록 도와주기

즉 자율성을 부여하고 목적의식을 주며 성장할 기회를 제공할 수 있어야한다. 라는 부분을 인상깊게 본것같다. 연차가 낮을수록 성장욕구는 강해지는데 그런 부분을 이룰수있는 팀을 만드는것이 중요할 것 같다는 생각을 했다.

프로세스

이 챕터에서는 실제 구글에서 어떤 프로세스로 코드리뷰를 진행하는지, 문서를 관리하는지 테스트는 어떻게 하는지에 대해 설명하고 있었다. 이부분은 솔직히 각 조직에서 바로 가져와서 대응하기엔 어려운 부분도 많다라는 생각을 했다. 하지만 일부 부분에 대해서는 우리팀에서도 이러한 부분을 도입하면 좋겠다 라는 생각을 했다.

그중 이런 부분이 중요하다라고 생각한것은 코드리뷰에 있어서 “가독성”리뷰가 매우 신선하다고 생각했다.

대부분의 조직은 리뷰에서 가독성도 리뷰어가 전부 확인하게되는데 구글에서는 가독성 인증자라는 담당자가 있어 코드의 가독성에 대한 리뷰를 진행한다고 한다. 각 리뷰어에 따라 가독성에 대한 기준이 다를 수 있는데 가독성인증자라는 제도는 일관적인 기준이 있어 모두가 이해하기 쉽지않을까? 라고 생각해 보았다.

이 책을 읽으면서 느낀점

사실 위에 작성한 내용은 이 책의 일부분에 지나지 않는다. 하지만 한페이지에 작성하기엔 책의 내용이 너무 방대하기때문에 우선은 여기까지 작성하려고 한다. 우선 나는 이 책을 읽으면서 굉장히 많은 인사이트를 얻었다고 스스로는 생각한다. 하지만 내가 아직 여기서 배운걸 적용할 수 있느냐? 라고 물어보면 아직 팀내에 그정도 영향력은 없기때문에 느낀부분을 적극적으로 활용하지 못하기 때문이다.

개인적으로 나는 이 책은 리더를 지향하거나 리더로서 현업에 근무하고 있는 사람들에게 추천하고싶다. 그 이하 연차에서는 크게 공감이 되지않거나 이런 부분을 개선하고 싶지만 개선하지 못하는 벽에 부딪칠수 밖에 없다고 생각한다.

나는 실제로 이 책을 보면서 우리 팀에 적용하고자 하는 부분이 많았지만 현실적인 문제로 상당부분 개선하지 못했기때문에 내가 팀을 꾸린다면 내게 이정도 권한을 준다면 차용하고싶다. 라고 생각한 부분이 다수 존재했다.

0개의 댓글