해커톤이 끝난 후, 일주일간 코딩과는 잠시 거리를 뒀다. 방학 때부터 제대로 쉬지 못하고 지금까지 달려온 것에 대한 보상을 나에게 줬다.
일주일, 그 소중한 시간 동안 충분히 휴식을 취했다. 여유 있게 사람도 만나고, 미뤄둔 미용과 운동, 책 읽기 등의 자기관리도 했는데, 너무 좋은 책을 읽게 되어 소개를 안 할 수 없게 되었다.
오늘 소개할 책은 구글 엔지니어는 이렇게 일한다 이다. 이 책은 소프트웨어 엔지니어링의 다양한 방면을 다룬다. 초장부터 프로그래머와 소프트웨어 엔지니어가 다르다는 말과 함께 시작한다. 이후 소프트웨어 엔지니어, 테크 리드, 리더로서 어떻게 해야 하는지를 과거 구글의 고민과 함께 이야기를 풀어낸다.
💡 이 책은 누가 읽으면 좋을까요?
- IT 회사가 급격히 성장할 때 발생한 문제를 어떻게 헤쳐 나갔는지 궁금한 사람
- 조직장으로서 팀을 성장시키고 싶은 사람 또는 조직원으로서 팀장을 이해하고픈 사람
- 개발자로서 앞으로의 길을 고민하는 사람
목차에 대해서 서술하기보단 이 책을 읽으며 느낀 점을 중점으로 글을 써보겠다.
이 책은 재밌다. 책을 읽으며 지루하지 않았다. 구글에서 실제 겪은 골칫거리들을 소개해 줌으로써 이론이 직관적으로 이해가 되며, 나오는 용어들도 나에겐 꽤나 신선한 충격이었다. 제일 인상 깊은 단어는 버스 지수이다. 버스 지수란 팀 내에서 몇 명이 버스에 치였을 때, 프로젝트가 망하는지를 나타내는 지수이다. 구글 내에서만 쓰이는 비욘세 규칙 또한 이름이 흥미로웠다. 책 내용이 개발에 관심이 있다면 흥미로운 주제들로 가득하기에 재밌게 읽을 수 있었다.
이 책을 통해 내 사고가 확장됐음을 인지한다. 지금까지의 나를 본다면 나는 책에서 서술하는 '프로그래머'이지 '소프트웨어 엔지니어'가 아니다. 이 책에서는 구글 자체 코드 베이스를 영구적으로 유지하기 위해 다양한 소프트웨어 엔지니어링 스킬들을 알려준다. 책에서 알려주는 소프트웨어 엔지니어링 프로세스들은 학부생이나 취준생 수준에서 모두 경험할 수 있는 내용은 아니다. 토이 프로젝트에 대해 코드의 이해 용이성과 지속 가능성을 따질 순 없다. 이는 수명이 짧을 확률이 높고, 수명이 짧은 것에 지속 가능성을 따질 이유는 없기 때문이다. 그럼에도 '소프트웨어 엔지니어'로서 어떤 시각을 가지고 프로그래밍을 해야 할지 알게 되었다. 이는 나에게 앞으로 큰 영향을 줄 것이다.
이 책을 읽기 전, 나는 앞으로의 진로에 대해 막연하게 생각했다. '프론트엔드 개발자로 일하다가 테크 리드가 되고 싶다'가 내가 희망하는 진로인데, 이는 그저 테크 리드라는 자리가 매력적으로 다가왔고, 높은 지위에 있어서 내 커리어적 가치가 더욱 오래 유지될 수 있다는 생각이 들어서라고 볼 수 있다. 이 책을 읽다 보면 구글의 개발 프로세스에는 다양한 직군이 존재함을 알 수 있다. 이를 통해 관리자나 테크 리드가 되는 길 말고도 내 영향력을 키울 수 있음을 알게 됐고, 또한 관리자와 테크 리드로의 길에 대해 충분히 설명해 준다. 처음엔 개발자에서 관리자가 되는 것에 본능적 거부감이 있었는데, 이 책을 읽다 보면 오히려 관리자로서의 나는 어떨지 궁금해진다.
책의 전반부에서 중요하게 다루는 요소 중 하나가 바로 팀/조직 이끌기이다. 이 파트를 가볍게 팔로워 입장에서 읽으며 리더가 되면 이런 부분까지 신경 쓰는구나 정도의 관점으로 보았다. 어차피 한 번만 읽고 끝낼 책이 아니기도 하며, 현재로선 리더도 팔로워도 아닌 일개 취준생이기에 앞으로 내게는 팔로워의 길이 먼저 주어질 것이다. 좋은 후임이 될 수 있어야 좋은 선임이 될 수 있다는 군대에서의 명언도 떠오른다. 훗날 팔로워의 역할이 익숙해지는 시점이 다가왔을 때, 다시 한번 이 책을 읽으며 리더의 시점을 연습해야겠다.
아까 위에서 언급했듯, 지금까지의 나는 '프로그래머'라 할 수 있다. 잘하든 못하든 '소프트웨어 엔지니어'로서의 관점을 배우기 위해 앞으로의 리팩토링이나 새로운 프로젝트에 도입할 예정이다.
단위 테스트와 e2e 테스트
이 책을 읽기 전부터 이에 대한 중요성도 들었고 실행도 했지만, 코드 지속 가능성을 고려하며 테스트를 진행할 예정이다.
트레이드오프 고려하기
A 안과 B 안이 있을 때, 각 안의 어떤 장단점이 있으며 어떤 자원을 소모하는지를 명확히 하고, 이를 설계 문서에 명확히 표시를 해두는 연습을 해야겠다.
스타일 가이드 찾아보기
구글의 코드 베이스는 모노레포로 구성되어 있기에, 모든 개발자들의 코드는 한 코드 베이스에 저장된다. 코드 베이스의 코드 지속성을 위해 모든 개발자들이 지키는 스타일 가이드가 있다. 앞으로 내가 어떤 회사를 들어가냐에 따라 각 회사별 스타일 가이드는 존재하겠지만 구글의 스타일 가이드를 미리 접하며 공부하는 건 좋을 것이라 판단한다.
코드 리뷰를 더욱 구체적으로
구글은 코드 리뷰를 굉장히 중시한다. 코드 리뷰 이후 accept 된 코드는 코드 베이스에서 영구히 존재하며 수백, 수천 번 이상 읽히기에 코드 리뷰 절차가 3단계나 존재한다. 이 정도는 아니지만 앞으로의 코드 리뷰는 코드 정확성과 코드 이해 용이성 측면을 분리하여 진행할 것이다.
처음 이 책의 존재를 접한 것은 커리어리였다. 읽어보면 좋다는 소식과 함께 당연 끌릴 수밖에 없는 제목과, 목차의 소주제들은 나를 참을 수 없게 만들었지만 4만 원이란 가격은 이성적으로 참을 수 있는 사람이란 걸 알게 해주었다.. 덕분에 우리 학교의 e-book이 꽤나 잘 되어있단 걸 알게 되었다.
일주일 동안 책의 절반 정도를 읽었다. 절반만 읽고 이 글을 적는 건 꽤나 아쉽지만 닥쳐올 학업과 사이드 프로젝트를 생각하면 지금이 바로 글을 쓸 타이밍이다. 글이 어렵지 않기 때문에 쉬면서도 틈틈이 읽을 예정이다. 2학기가 끝나기 전에 1회독하기를 목표로 여유 있게 읽어보겠다.