XP 넘어서기 2
지난 편에 이어서 XP 실천 방안 중에서 전체 팀(Whole Team) 구현에 대한 이야기다.
책에 이런 내용이 나온다.
사실 복합 기능팀cross-functional team 이라는 옛 개념을 그대로 빌려온 것이다
그리고, 함께 책을 읽는 분들도 그 내용을 주로 말한다. 책이 나온 당시에는 복합기능팀이 생소했지만, 지금은 널리 퍼져 있다. 외주개발(SI) 현장은 조금 늦지만, 스타트업에서 말할 필요가 없는 실천법이다. 하지만, 책에서 강조하는 내용 중에 여전히 유효하다고 생각하는 내용은 인간성을 고려한 실천이다. 그래서, 나는 전체 팀 실천법을 (다시) 읽으면서 아래 내용이 강조된 부분에 주목했다.
우리는 소속되어 있다.
우리는 이 안에 함께 있다.
우리는 서로의 작업, 성장, 배움을 돕는다.
TMI가 될 수도 있지만, 나에게는 잊을 수 없는 전체 팀에 대한 에피소드가 있다. 2015년 컨설팅 회사를 그만 두고 백수가 되기 직전에 개발자인 지인의 남편이 나를 찾아왔다. 그리고, 백수가 된 후 발표한 개발자 경력개발 세미나에 참석하더니 나에게 부탁을 했다.
본인이 중국에 가서 개발팀을 이끌어야 하는데, 어떻게 테크니컬 리더가 되는지 물었다. 나는 그에게 제랄드 와인버그의 책을 소개해주고 그의 계획에 대해 들었다. 그리고, 잠시 팁을 준다고 해서 그가 조직을 이끄는 테크니컬 리더는 될 수 없음을 확신했지만 이미 그러기로 한 사람에게 그렇게 말할 수는 없었다.
6년이 지난 지금 공개적으로 과거사를 꺼낼 수 있는 이유는 불가능해 보였던 일을 그가 2019년부터 해냈고, 그의 블로그를 보면 리더로서의 삶을 즐기는 모습을 엿볼 수 있기 때문이다.
암튼, 당시 (내 판단과 무관하게) 너무나 진지했더너 그와의 대화를 어떻게 풀지 난감한 면이 있었는데 나는 딱 한가지만 말해주었다. 그가 수많은 기술로 나눈 팀을 없애고 하나의 팀을 만들라는 이야기만 강조했다. 형상으로만 보면 다기능팀(Cross-Functional)이라고 말할 수 있지만 초점은 같은 미션을 추구하는 팀이어야 한다.
조직이나 시스템의 임무와 인원이 늘어나면 모두가 하나의 팀이 되기는 힘들다. 그럴 때 생산성을 높이기 위해서는 한 번에 하나만 할 수 있는 조직 환경을 만들어야 한다. 그러면 미션을 나눠서 팀별로 미션을 수해하고, 이들을 정렬할 방법이 필요하다. 내가 OKR을 써 보면서 배우는 부분이 바로 느슨한 협업과정에서 정렬을 어떻게 하는가에 대한 노하우다.
아무튼 컨택스트 스위칭을 대표를 비롯한 소수의 사람들만 할 수 있다면 생산성 측면에서는 가장 이상적이 되지 않을까?
나는 소프트웨어 공학을 전공했는데, 개발자로 실무를 하면서 가장 많이 써먹은 개념은 integrity를 추구하는 일이었다. 일관성이라고 우리말로 쓰기에는 부족함이 느껴지는데, design thinking 전문가들이 말하는 내용과 맥락이 비슷한 무엇이다.
굳이 문장으로 정의하면 이 정도?
있어야 할 것이 딱 있도록 만드는 일
누군가에게 설명하면 그게 미학을 떠올리는 사람도 있었다. 아무튼 실용과 거리가 있지만, 개발자 시절에 추종하다시피 했던 개념이 Integrity이다.
요즘은 다른 경험과 지식이 겹쳐지면서 integrity가 조직을 이루기 위한 원리라는 생각도 든다. 응집도(cohesion)란 말과 결합도(coupling)이란 말을 판정하는 기준이 어쩌면 integrity일 수도 있다. 느닷없이 말미에 내가 좋아하는 개념을 들이밀며 불친절하게 글을 쓰는 이유는 (내가 두서없이 말하는 탓도 있지만) 결론적으로 전체 팀을 만다는 기준을 말하라고 하면 나는 integrity를 떠올릴 가능성이 높기 때문이다.
미션을 어떻게 조직에 분배할 것인가? 이것은 소프트웨어 설계와 구성에서 고민하던 일이라 나는 20년이 넘게 그 문제를 다뤄왔으니까. XP는 다만 거기서 인간성과 의사소통이란 측면을 보도록 나를 도왔다.