소프트웨어 개발팀을 운영하게 되면 여러가지 타입의 개발자들을 만나게 되는데 크게 두가지로 나눌 수 있었다.

한 부류의 개발자는, 개발자 자신의 창의성과 문제접근방식의 존중을 요구하고, 최소한의 간섭하에서 작업하는 것을 요구한다. 그들은 문제 자체의 요구사항에 대해서만 제시받기를 원하고, 문제의 구체적인 해결방법에 대해서는 요구받는 것을 꺼려한다. 왜냐하면 자기 자신의 디자인, 코딩 스타일이 있는데도 불구하고 다른 사람의 스타일에 맞춰서 작업하는 것은 부자연스럽고 비효율적이라고 생각하기 때문이다.

다른 부류의 개발자는 보다 적극적인 커뮤니케이션을 통해 문제의 요구사항과 해결방식 둘 다에 대해서 요구를 받아들이고, 다시 피드백한다. 자신의 스타일이 요구받은 스타일과 다르다고 판단하면 문제제기와 토론을 통해 타협선을 만들어낸다. 또한 세세한 요구사항을 간섭으로 여기지 않고 여러가지 방안의 선택의 폭을 넓히는 것으로 받아들인다.

필자가 같이 작업하면서 겪은 개발자중 첫번째 부류 (간섭을 싫어하는) 의 개발자들은 대부분 자발적으로 회사를 떠났다. 그들은 자신에게 필요한 것은 팀장으로서의 위치 또는 그에 상응하는 역할 (간섭을 받지 않을 수 있는) 을 원하고 자신의 스타일대로 작업을 해서 효율적으로 작업을 하는 것이라고 말했다. 팀 작업에 있어서 과연 어디까지 프로그래머에게 '자율'이 주어져야 하고, '간섭'을 받지 않아야 할 것인가?

필자가 그동안의 경험과 성과를 바탕으로 판단한 결론은, 이미 떠난 사람들에겐 섭섭한 말이 될지 모르겠지만, 팀작업 내에서 간섭을 받기 싫어하고, 자신이 원하는 스타일대로만 작업하려는 작업자는, 농구팀이나 축구팀에서 각자 자기가 알아서 공을 잡아서 플레이를 하겠다고 주장하는 것과 크게 다르지 않다. 아무리 베컴이나 지단이라고 할 지라도, 경기장에서 다른 팀원이나 감독의 간섭없이 자율적으로 공만 쫓아가서 차는 플레이를 해서는 절대 팀을 승리로 이끌 수 없다. 오히려 진정한 프로이기 때문에 이 감독과 팀을 할 때에는 이 감독의 스타일에 맞추고, 저 감독과 팀을 할 때에는 저 감독의 스타일에 맞추어야 하는 것이다. 물론 그것은 감독이 플레이어의 재능과 스타일에 맞는 포지션과 작전을 구상하여야 하겠지만 말이다.

올바른 팀웍의 힘은 팀원 개개인의 힘의 합보다 크다. 최고수준의 소프트웨어를 만들어내는 팀들은 특정 개인의 실력이나 스타일에 의존해서 만드는 경우는 드물다. 간혹 보는 사람중에는 소프트웨어 엔지니어링의 지혜를 무시하고 자기 스타일로 아는대로 짜는 것을 최선으로 여기는 개발자들도 있다. 그런 개발자들은 대부분 혼자서 작업하는 경우가 많다. 최소한 4-5 명이 한 팀이 되어 개발하고, 상당수준이상의 규모를 지녔으며 꾸준히 업데이트 되고 있는 소프트웨어는 서로간의 커뮤니케이션을 '간섭'으로 여기고 혼자 '자율적'으로 작업하기 좋아하는 사람들이 모여서 만들어질 수 없는 것이다.

전자에 속하는 개발자들은 작업을 디자인 할 때, 일을 기능단위로 나누기보다는 사람단위로 나눈다. 그 결과는 중복과 낭비의 초래이다. a 개발자가 만든 기능을 b 개발자가 비슷한걸 또 만드는 일이 흔하게 일어난다. 서로 어느정도까지 기능을 공유할지에 대한 큰 그림을 그리지 못했기 때문이다. 또한 사람단위의 작업분담은 작업량 부하의 불균등을 초래한다. a 개발자가 b 개발자보다 중요하고 더 시간이 걸리는 작업을 부담하게 되더라도 b 개발자는 a 개발자를 도와줄 방법이 없다. 따라서 a 개발자가 작업의 병목현상을 초래한다.

기능단위의 업무분담은 그런 문제들에 대해 더 잘 대처할 수 있는 능력을 만들어 준다.
서로 최소한의 간섭을 하면서 자율적으로 짠 사람들의 프로그램이 얼마나 적극적으로 재사용되고, 일반화되어 다른 요구사항에도 쉽게 적응하고 있는지, 얼마나 많은 규모의 팀원들이 유기적으로 일하고 best practice 가 축적되고 있는지 본다면 시간이 지날 수록, 팀이 커질 수록, 기술의 변화가 심해질 수록 차이가 드러날 것으로 확신한다.

진정한 발전을 꿈꾸는 프로그래머들이라면, 자신이 짜고 있는 코드만 보지 말고, 다른 사람이 짜고 있는 코드를 함께 살펴보고 더 개선점은 없는가 토의하는 습관을 들여보기 바란다.

imcgames 의 김학규입니다