2.1 내 코드를 숨기고 싶어요
- 불안감: 사람들은 자신이 진행 중인 작업물을 다른 사람이 보고 판단하는 걸 두려워 함 (인간으 ㅣ본성)
2.2 천재 신화
리눅스
- 리누스가 한 일은 유닉스와 유사한 커널의 시제품을 만들어 메일링 리스트로 뿌린 것
- 진짜 업적은 사람들을 협업하도록 이끈 것
파이썬
- 귀도 반 로섬이 첫 번째 버전을 작성한 건 사실이지만 그 후 버전들은 수천 명의 사람이 아이디어를 모으고 기능 개발 & 버그 수정
천재 신화는 팀이 이룬 성공을 단 한 사람(리더)에게 몰아주어 만들어지는 경향이 있으며 결국 우리 내면의 불안을 드러내는 또 다른 사례일 뿐이다.
2.3 숨기는 건 해롭다
자신이 올바른 길을 걷고 있음을 확인할 수 없다.
2.3.1 조기 감지
아이디어를 숨기는 것은 엄청난 도박으로 초기 설계에는 근본적인 실수가 스며 있기 쉽다. 그리고 협업이 주는 이점도 얻지 못하며 '초기'단계에서 실수(올바른 일을 하고 있는지, 제대로 하고 있는지, 다른 누군가가 이미 해놓은 일은 아닌지)를 범할 확률이 높다. 따라서 피드백을 '조기에' 받을수록 이러한 위험이 크게 줄어든다.
'일찍 실패하고, 빨리 실패하고, 자주 실패하라'
2.3.2 버스 지수
버스 지수: 몇 명의 팀원이 버스에 치어서 일을 할 수 없게 될 때 프로젝트가 망하게 되는지를 나타내는 지수
살다보면 예기치 못한 사정이 생기기 마련이므로 각 책임 영역마다 담당자를 두고 제대로 된 문서를 갖추어 버스 지수를 높여야 한다.
혼자 일하게 되면 버스 지수 외에 전반적인 진행 속도에도 해롭다. 다른 이들과 함께 어울려 일하면 개인의 노력만으로는 깨우치기 어려운 공동의 지혜라는 이점을 얻을 수 있다.
2.3.3 진척 속도
현재의 데브옵스 철학은 '가능한 한 일찍 피드백하고, 가능한 한 일찍 테스트하고, 보안과 프로덕션 환경을 가능한 한 초기부터 고려한다'라는 목표를 천명하고 있다. 문제를 빨리 찾을수록 고치는 비용이 낮아지기 때문이다.
이러한 피드백을 마련해주는 것이 팀 플레이이다.
2.3.4 결론은, 숨기지 말자
'홀로 일하기'는 '함께 일하기'보다 본질적으로 더 위험하다.
2.4 모든 건 팀에 달렸다
소프트웨어 엔지니어링은 팀의 단합된 노력이다. 천재 프로그래머에 대한 환상과는 완전히 다를테지만...
다른 사람과 함께 일해야 한다. 비전을 공유하고, 역할을 나누고, 다른 이로부터 배우며 멋진 팀을 만들자.
2.4.1 사회적 상호작용의 세 기둥
협업의 열반에 들어가기 위해선 세 원칙이 존재한다.
- 기둥 1: 겸손
- 당신과 당신의 코드는 우주의 중심이 아니다. 당신은 모든 것을 알지도, 완벽하지도 않다. 겸손한 사람은 배움에 열려 있다.
- 기둥 2: 존중
- 함께 일하는 동료를 진심으로 생각하라. 친절하게 대하고 그들의 능력과 성취에 감사해하자.
- 기둥 3: 신뢰
- 동료들이 유능하고 올바른 일을 하리라 믿는다. 필요하면 그들에게 스스로 방향을 정하게 해도 좋다.
2.4.2 세 기둥이 중요한 이유
사회적 관계의 힘을 과소평가하지 말라. 동료들과 끈끈해지면 필요할 때 기꺼이 자신들의 수고를 마다하지 않을 것이다.
2.4.3 겸손, 존중, 신뢰 실천하기
- 자존심 버리기
- 비평하고 비평받는 법 배우기
- 빠르게 실패하고 반복하기
2.4.4 비난 없는 포스트모템 문화
포스트모템: 실패한 근본 원인을 분석하여 문서로 남기는 것
쓸모없는 사죄, 변명, 지적보다는 무엇을 배웠는지와 배운 것을 토대로 앞으로 무엇을 바꿀지가 담겨야 함.
훌륭한 포스트모템에는 다음 내용이 담겨있다.
- 사건의 개요
- 사건을 인지하고 해결에 이르기까지 타임라인
- 사건의 근본 원인
- 영향과 피해 평가
- 문제를 즉시 해결하기 위한 조치 항목(소유자 명시)
- 재발 방지를 위한 조치 항목
인내심을 기르자 -> 인내심을 않고 새로운 협업 방식 찾기
마음을 열고 받아들이자 -> 결점을 드러내는 것은 겸손을 겉으로 표현하는 일이며, 책임을 지고 의무를 다 하려는 의지의 표출이다. 그리고 다른 이들의 의견을 신뢰한다는 신호이기도 하다.
2.4.5 구글답게 하기
구글은 사람을 대하는 구글만의 '겸손, 존중, 신뢰'원칙이 있고 다음과 같다.
- 모호함을 뚫고 번창한다
- 끊임없이 변화하는 환경 속에서도 상충하는 메시지와 방향에 잘 대처하고, 합의를 이끌어내고, 문제에 대한 진전을 이룰 수 있다.
- 피드백을 소중히 한다
- 피드백을 주고받을 때 품위와 겸손을 유지하고 개인과 팀의 발전에 피드백이 주는 가치를 이해한다.
- 저항(항상성)을 극복한다
- 다른 이들이 저항하거나 관성 때문에 움직이지 않으려 하더라도 야심 찬 목표를 세우고 밀고 나아간다.
- 사용자를 우선한다
- 구글 제품의 사용자 입장에서 생각하고 존중하며 그들에게 가장 도움되는 행동을 추구한다.
- 팀에 관심을 기울인다
- 동료들의 입장에서 생각하고 존중하며 팀의 결집을 위해 누가 시키지 않더라도 적극적으로 돕는다.
- 옳은 일을 한다
- 모든 일에 강한 윤리 의식을 갖고 임한다. 팀과 제품의 진정성을 지키기 위해서라면 어렵거나 불편한 결정을 내릴 수 있어야 한다.
2.5 마치며
거의 모든 규모의 소프트웨어를 떠받드는 토대는 '제대로 작동하는 팀'이다.
2.6 핵심 정리
- 고립되어 일할 때의 트레이드오프에 유의
- 팀원들 사이의 소통, 그리고 그 과정에서의 대인 관계 충돌 때문에 낭비한 시간이 얼마나 많은지 생각. 다른 사람들의 성향과 일하는 방식을 이해하는 데 투자하자
- 다른 사람들이 선호하는 방식도 알아야 한다.
'도서 리뷰 > IT 도서 리뷰' 카테고리의 다른 글
[IT 도서 리뷰] 구글 엔지니어는 이렇게 일한다 (CH. 4) (0) | 2023.01.26 |
---|---|
[IT 도서 리뷰] 구글 엔지니어는 이렇게 일한다 (CH. 3) (0) | 2023.01.19 |
[IT 도서 리뷰] 구글 엔지니어는 이렇게 일한다 (CH. 1) (0) | 2023.01.12 |
[IT 도서 리뷰] 읽기 좋은 코드가 좋은 코드다 (Part. 4) (0) | 2022.07.26 |
[IT 도서 리뷰] 읽기 좋은 코드가 좋은 코드다 (Part. 3) (0) | 2022.07.24 |