팀으로 일을 할 때 개발만큼 중요한 것이 팀워크인 것 같다. 개발에 영향을 끼칠만큼 그 영향력이 크기 때문에 팀을 구성하는 개개인과 리더는 어떤 사람인지에 대한 중요성이 크게 느껴진다.
책에서 인간을 간헐적 버그들의 집합
이라 표현한 문장이 있는데 비유가 재밌었다. 자세히 표현하자면, 종종 실수를 하는데 그마저도 일관되지 못하다
라는 옮긴이의 설명이 있었다. 나 또한 그렇고, 완벽하지 않은 인간들이 모여 팀을 이루기 때문에 이에 대한 부수효과는 예측하지 못할 수 밖에 없는 것 같다.
소프트웨어 개발은 홀로 하는 것이 아니라 팀원들과 같이하기 마련이기에 책에서도 협업에 대해 끊임없이 강조한다. 팀의 구성원으로서 어떻게 협업해야 나 그리고 팀의 생산성을 높일 수 있는지에 대한 지침이 담겨있다.
해당 파트를 읽으면서 내가 원하는 팀의 문화는 무엇인지에 대해서도 생각할 수 있어 기록해두면 좋을 것 같아 정리해봤다.
우리는 우리가 올바른 일을 하고 있는지, 제대로 하고 있는지, 그리고 다른 누군가가 이미 해놓은 일은 아닌지를 확인해봐야 합니다. '초기' 단계에서 이런 실수를 범할 확률은 상당히 높습니다. 피드백을 '조기에 ' 받을 수록 이러한 위험이 크게 줄어듭니다. 검증된 주문인 '일찍 실패하고, 빨리 실패하고, 자주 실패하라'를 기억해두세요.
'눈이 많아야 버그가 줄어든다'라는 말을 많이 들어봤을 텐데 '눈이 많아야 프로젝트가 탈선하지 않고 옳은 방향으로 나아간다'라는 표현이 더 나을 것 같습니다. 동굴에 갇혀 일하면 원래의 비전을 완성하는 동안 세상이 바뀌어 있을 것입니다.
개발을 공부하면서 공개적으로 학습하라
라는 이야기를 많이 들어왔다. 이 책에서도 같은 맥락에서의 이야기를 하고 있다. 프로젝트가 아직 미완성의 단계에 있다거나, 나의 코드가 잘 다듬어지지 않았거나, 지식의 부족함을 느끼면 누군가에게 이를 보여주기 꺼려지게 된다. 잘 정돈되어 다듬어진 것만 사람들에게 보여주고 싶은 것은 자연스러운 마음인 것 같다.
그렇지만 다른 사람에게 나의 결과물을 공유함으로써 홀로 삽질하며 해결해내지 못한 문제나 잠재되어 있던 문제들을 빠른 시간 내에, 좋은 해결책으로 해결되는 경험이 쌓이면서 공유하기를 주저하지 않게 되어가는 것 같다. 러버덕 디버깅이라는 말도 있듯이 상황을 정리하며 설명했을 때 깨달음을 얻는 경우도 많았다.
질문은 다른 사람의 생산성을 망친다는 시각의 말도 많이 들어보았지만, 상황을 고려하고 정도를 벗어나지 않는 선에서 서로 간의 트러블 슈팅과 결과물을 공유하는 것은 잘못된 것을 복구하는 시간, 삽질하며 보낼 며칠의 시간을 단축시켜 팀의 생산성을 오히려 높여주는 일이 아닐까 싶다.
정확한 균형점 찾기란 예술의 영역이니 정답은 없습니다.
책에서도 활발한 소통과 코딩에 집중할 시간에 대한 균형점을 찾는 게 어렵다고 말하듯 어떻게 문화를 만들어나가는 게 좋을지에 대해서는 다양한 시도를 통해 팀원 간에 합의점을 찾아야 할 것 같다. '요즘엔 AI가 사수 역할을 한다'라는 말을 할 정도로 성능이 좋아 어느 정도의 문제점들은 해결되는 것 같기도 하다.
지난번에 읽었던 책(프로그래머의 길 멘토에게 묻다)에서도 당신의 경력 중에서 이 시기가 위험을 감수하고 속내를 털어놓기에 가장 적당한 때다. 당신은 잃을 것이 별로 없다.
라는 내용이 있었다. 누군가에게 나의 무지를 드러내는 것을 꺼리지 않는 게 지름길로 가는 것임을 항상 잊지 않아야 할 것 같다.
가능한 한 일찍 피드백하고, 가능한 한 일찍 테스트하고, 보안과 프로덕션 환경을 가능한 한 초기부터 고려한다.
겸손: 당신과 당신의 코드는 우주의 중심이 아닙니다. 당신은 모든 것을 알지도, 완벽하지도 않습니다. 겸손한 사람은 배움에 열려 있습니다.
존중: 함께 일하는 동료를 진심으로 생각합니다. 친절하게 대하고 그들의 능력과 성취에 감사해합니다.
신뢰: 동료들이 유능하고 올바른 일을 하리라 믿습니다. 필요하면 그들에게 스스로 방향을 정하게 해도 좋습니다.
책에서 협업할 때 여러 번 강조하는 세 가지의 미덕은 겸손, 존중, 신뢰이다. 이는 다른 사람과 건강한 소통을 할 수 있는 기반이 되어준다고 한다.
겸손은 중요하지만 그렇다고 바짝 엎드리라는 뜻은 아닙니다. 자신감을 갖는 건 나쁠 게 없죠.
그저 모든 걸 다 아는 듯 행동하지는 말라는 뜻입니다. 더 나은 방법이 있습니다. 바로 ‘집단적 ’ 자존심을 찾는 것이죠. 자신이 잘 아는 분야에 대해 걱정하는 대신 팀의 성취와 단체의 자부심을 높이려 노력하세요.
많은 경우 자존심은 생선성을 떨어뜨린다고 책에서 말하고 있다. 자존감과 자신감은 비슷하지만 조금 다르게 느껴진다. 팀원들 간의 소통에서 자신감은 어느정도 필요하겠지만, 자존심을 세우게 되면 상대방의 의견을 존중하지 않게 되거나, 논점에서 벗어나기 십상이라 건강한 소통을 위해서는 지양되어야 하는 것 같다.
저자의 말과 같이 자신감은 깎지 않되 자존심을 세우지 않는 태도가 상대방과 소통할 때 준비되어야 하는 자세로 나는 항상 그런 자세로 소통하고 있는지 습관적으로 점검할 필요가 있을 것 같다.
가장 중요한 점은 건설적으로 비판하는 사람은 상대방을 진심으로 생각하고 상대방의 업무가 개선되길 바라야 한다는 것입니다. 그리고 동료를 존중하는 법을 배우고 건설적이고 공손하게 비평하는 법을 배워야 합니다. 누군가를 진심으로 존중한다면 자연스럽게 재치 있고 도움되는 표현을 고르려 신경 쓰게 될 것입니다.
코드 리뷰 시 상대방이 예민해질 수 있기때문에 감정적으로 받아들이지 않게 하기 위해서는 나의 톤을 다듬을 필요가 있는 것 같다. 코드의 수정이 필요할 때 의도는 명확하게 담되 비판의 태도보다 제안의 태도를 갖추는 게 불필요한 오해를 쌓지 않고, 감정적인 싸움을 발생시키지 않는 방법이 되어주는 것 같다.
'나는 내 코드가 아니다'라고 반복해서 되뇌세요.
피드백은 더 나은 프로젝트를 만들 때 필요한 과정이기 때문에 기본적으로 피드백에 대해 닫혀있지 않는 분위기를 형성하는 것이 중요한 것 같다. 코드 리뷰는 언제나 비난에 목적을 두지 않기 때문에 이에 열려있는 태도를 항상 유지하도록 주의해야 한다.
실수했다거나 자기 역량을 넘어선 일임을 인정하면 장기적으로 지위를 확고히 해줄 것입니다. 사실 결점을 드러낸다는 것은 겸손을 겉으로 표현하는 일이며, 책임을 지고 의무를 다하려는 의지의 표출입니다. 그리고 다른 이들의 의견을 신뢰한다는 신호이기도 합니다. 그 결과 사람들은 당신의 솔직함과 용기를 존중하게 될 것입니다. 때때로 여러분이 할 수 있는 최선의 말은 ‘저는 잘 모르겠습니다’일 수도 있습니다.
자신의 무지나 실수를 인정하고 빠르게 다른 이들과 해결책을 함께 찾아가는 것이 팀의 생산성을 높여주는 방법이 된다. 그러나 창피하고 공격을 받을 거라 생각해 인정하지 않는 경우가 자주 있는 것 같다.
확실하게 모른다라는 것을 표현하면 무시하는 사람도 있을 수 있겠지만, 대부분 같이 답을 찾아주려 한다. 그렇게 얻은 경험과 지식 또한 값질 때가 많기에 나의 부족함을 드러내는 것에 두려워하지 않는 태도를 항상 가져야 할 것 같다.
CEO는 사고 친 임원을 해고한다고 해서 천만 달러가 돌아오는 것도 아니고, 다시는 같은 실수를 하지 않을 유능한 임원까지 잃으면 더 손해라는 사실을 잘 이해하고 있습니다.
구글에서 제가 정말 좋아하는 좌우명은 ‘실패는 선택이다’입니다. 구글에서는 ‘가끔씩 실패하지 않는다면 충분히 혁신적이지 않거나 위험을 충분히 감수하지 않은 것이다'라는 믿음이 널리 통용됩니다.
잘못하고 폐기한 시도 하나하나가 다음 단계로 이끌어주기 때문에 나는 낙담하지 않는다.
실패나 실수에 대한 두려움이 있는 편이라서 새기면 좋을 세 문장을 정리했다. 이 문장들처럼 실패의 경험은 다음 도전의 완성도를 높여주며, 성공을 하기 위해 반드시 거치게 되는 과정이기에 실패를 두려워하지 않는 태도를 갖추기 위한 노력을 계속해서 해야 될 것 같다.
실패를 하지 않고 있는 상태에서 마음으로는 안정적이겠지만, 그건 어떠한 도전을 하지 않았다는 의미가 될 수도 있기에 오히려 그 상태를 경계할 필요가 있지 않을까 싶다.
이 챕터를 보면서 실패를 두려워하지 않고 비난하지 않으며 공유하는 문화를 갖춘 팀에서 일하고 싶다는 생각이 들었다.
여러분이 걸어 간 발자취를 지우지 마세요. 오히려 활주로처럼 빛을 밝혀 후임들이 올바른 길을 빠르게 찾을 수 있도록 도와주세요.
저자가 강조했던 세 가지 겸손, 존중, 신뢰를 바탕으로 팀원들과 일을 하게 된다면 팀의 생산성을 높이 끌어올릴 수 있을 것 같다. 구성원 모두가 이런 인식을 바탕으로 일을 하려면 어떻게 문화를 만들어나가야 할지 고민하면서 읽었다.
개발도 그렇지만, 사람은 예기치 못한 변수로서 작용하기에 다루기 어려운 것 같다. 챕터의 서두에서 저자는 '여러분 자신'을 반드시 통제해야 하는 하나의 변수라고 말했는데, 나의 태도를 변화시키는 것에서 시작해야 할 것 같다.
책에서 얻은 교훈들을 통해 태도를 하나씩 바꿔나가는 노력이 필요해보인다.