찬우의 이것저것 Chanwoo's blog

Til 구글은 이렇게 일한다 2장

2장 팀워크 이끌어내기

인간은 간헐적 버그들의 집합ㅋㅋ 동료에 내재된 버그를 이해하기 전에 본인의 내면의 서식하는 버그를 먼저 이해애햐한다. 소프트웨어 개발은 팀의 단합된 노력의 결실이다. 겸손 존중 신뢰

2.1 내 코드를 숨기고 싶어요.

사람들은 자신이 진행중인 작업물을 다른사람이 보고 판단하는것을 두려워한다.

2.2 천재 신화

흔히 리누스토발즈는 혈혈단신으로 리눅스를 개발했다고 알려져있지만.. 유닉스와 유사한 커널의 시제품을 만들어 메일링 리스트로 뿌렸다. 리누스의 진짜 업적은 현재 수백배 커진 리눅스를 추천명의 인재와 함께 협업하도록 이끈것이다. 귀도반로섬의 파이썬도 마찬가지. 이들은 모두 커뮤니티를 이끌어 집단적 성과물의 상징이 되었다. 이렇듯 천재 신화는 팀이 이룬 성공을 단 한사람에게 몰아주어 만들어지는 경향이 있다.

천재들도 실수를 하고 훌륭한 아이디어와 최고수준의 프로그래밍 기술도 이 소프트웨어가 성공하리란 보장은 하지 못한다. 천재든 아니든 사회성이 부족한 사람은 팀원으로 적합하지 않다. 구글에서의 업무 대부분이 천재수준의 지능을 요구하지 않는 반면 모든 업무가 최소한의 사회성을 요구한다.

우리는 천재가 아니다. 많은 프로그래머가 동료들이 자신의 실수를 보면 자신이 천재가 아님을 눈치챌것이라는 두려움때문에 방금 시작한 프로젝트를 공유하길 꺼린다. 진행중인 프로젝트의 아이디어를 누군가 훔쳐서 나보다 먼저 세상에 내놓을지도 모른다는 두려움

2.3 숨기는 건 해롭다.

개발이 고도의 집중력을 요하고 혼자만의 시간을 견뎌야하는 매우 지적인 작업인것은 사실이지만 집중과 인내가 주는 가치를 협업과 인내로 맞서 이겨내야한다.

숨기다가 보여주지않고 .. 진즉 보여줬더라면 한주면 해결했을 문제들

2.3.1 조기 감지

올바른일을 하고있는지, 제대로하고있는지, 누군가 이미 해놓은일은 아닌지 피드백을 조기에 받을수록 이러한 위험이 크게 줄어든다. 검증된주문 "일찍 실패하고, 빨리 실패하고, 자주 실패하라."

2.3.2 버스 지수

몇 명의 팀원이 버스에 치여서 일을 할 수 없게 될 때 프로젝트가 망하게되는지를 나타낸 지수..ㅋㅋㅋ 최소한 각 책임 영역마다 2차 담당자를 두고 제대로된 문서를 갖춰둔다면 프로젝트의 미래를 보장하고 버스지수를 높이는데 도움이 된다. 실패한 프로젝트의 핵심을 책임진 경험보다 성공한 프로젝트의 한 부분에 참여한 경험이 낫다는 데 대다수 엔지니어가 공감할것이다. 프로그래밍은 어렵다. 소프트웨어 엔지니어링은 더 어렵다. 그래서 우리에게는 제 3의 눈이 필요하다. 함께 일하자.

2.3.3 진척 속도

현재의 데브옵스 철학 : 가능한 일찍 피드백하고 가능한 일찍 테스트하고 보안과 프로덕션 환경을 가능한 한 초기부터 고려한다. 문제를 빨리 찾을수록 고치는 비용이 작아진다.

눈이 많아야 버그가 줄어든다. 눈이 많아야 프로젝트가 탈선하지 않고 옳은 방향으로 나아간다. 동굴에 갇혀 일하면 원래의 비전을 완성하는 동안 세상이 바뀌어있을것이다.

방해받지않고 코딩에 집중할 시간이 필요하다고 생각한다. 하지만 다른 팀원과의 소통도 그에 못지않게 중요하다고 믿는다. 아직 모르는게 많은 팀원이 여러분에게 질문조차 어려운 문화라면 분명 문제가있다.

2.3.4 결론은, 숨기지 말자!

홀로 일하기는 함께 일하기보다 본질적으로 더 위험. 다른 사람이 아이디어를 훔친다거나 여러분이 똑똑하지 않다생각하는게 두렵더라도 잘못된 일에 여러분의 천금같은 시간을 낭비할 가능성을 더 걱정해야한다!

2.4 모든건 팀에 달렸다.

고독한 장인은 매우 드물고, 존재하더라도 초월적인 업적을 홀로 이루지는 않는다.

2.4.1 사회적 상호작용의 세 기둥

  • 겸손: 당신의 코드는 우주의 중심이 아니다. 당신은 모든것을 알지도 완벽하지도 않다. 겸손한사람은 배움에 열려있다.
  • 존중: 함께 일하는 동료를 진심으로 생각합니다. 친절하게 대하고 그들의 능력과 성취에 감사합니다.
  • 신뢰: 동료들이 유능하고 올바른 일을 하리라 믿습니다. 필요하면 그들에게 스스로 방향을 정하게 해도 좋습니다.

2.4.2 세 기둥이 중요한 이유

사회적 관계의 힘을 과소평가하지 말라. 동료들과 끈끈해지면 여러분이 필요할때 기꺼이 자신들의 수고를 마다하지 않을것입니다.

2.4.3 겸손 존중 신뢰 실천하기

많은 예시가 당연하게 보이겠지만 조금만 더 생각해보면 여러분, 혹은 여러분의 동료가 얼마나 자주 지키지 못하는지를 깨닫게 될것입니다. 우리 역시 마찬가지였습니다.

자존심 버리기 모든걸 다 안다는듯 행동하지 않기.

비평하고 비평받는 법 배우기

  • 잘못했다 하지말기
  • 고치라고 요구하지않기
  • 다른사람들과 다르다고 비난 하지않기
  • 좀더 둥글게 말하기

빠르게 실패하고 반복하기

실패는 선택이다. 실패하지 않는다면 충분히 혁신적이지 않거나 위험을 충분히 감수하지 않은것이다. 실패는 배우고 다음단계로 넘어갈 수 있는절호의 기회. 같은이유로 동일한 일을 반복해서 실패한다면, 즉 다음단계로 넘어가지못한다면 실패한게 아니라 무능한것이다.

2.4.4 비난없는 포스트모템 문화

실패한 근본 원인을 분석해서 문서로 남기는것이 실수로부터 배우는 핵심이다. 이를 구글은 포스트모템이라고 한다. 포스트모템 문서가 쓸모없는 사죄 변명 지적으로 채워지지않도록하자 무엇을 배웠는지, 배운것을 토대로 앞으로 무엇을 바꿀지를 고민해야한다.

  • 사건의 개요
  • 사건을 인지하고 해결에 이르기까지의 타임라인
  • 사건의 근본 원인
  • 영향과 피해 평가
  • 문제를 즉시 해결하기위한 조치 항목(담당자)
  • 재발 방지를 위한 조치 항목
  • 해당 경험에서 얻은 교훈

인내심을 기르자 마음을 열고 받아들이자

  • 내가 항상 옳을 수 없다.
  • 팀원은 동반자. 경쟁자가 아니다.

2.4.5 구글다움(Googleyness)

  • 모호함을 뚫고 번창한다
  • 피드백을 소중히 한다
  • 저항(항상성)을 극복한다
  • 사용자를 우선한다
  • 팀에 관심을 기울인다
  • 옳은 일을 한다

2.5 마치며

  • 제대로 작동하는 팀
  • 겸손, 신뢰, 존중
  • 위험을 감수, 때로는 실패도 할줄알아야한다.
  • 실패를 인정하려면 건강한 팀 환경이 반드시 갖춰져야한다.

2.6 정리

고립되어 일할때의 트레이드 오프에 유의하라.

  • 집중 잘되는건 좋지만 팀이 어떻게 굴러가고있는지 파악하기 어려워질수있다.

서로의 일하는 방식을 이해하는데 조금만 투자하면 생산성을 크게 끌어올릴 수 있다. 효과적으로 일하고싶다면 자신이 선호하는 방식은 물론 다른사람들이 선호하는 방식도 잘 알아야한다.