2010년 10월 4일 월요일

개발팀장과 프로젝트관리자(PM)

오랫만에 찾아뵙니다.
요즘 워낙 바쁜 날을 보내고 있다는 핑계로 블로그 포스트를 자주 못하고 있습니다. 다시 힘을 내서 시작하려고 합니다.

최근에 컨설팅에 많은 시간을 보내고 있는데, 컨설팅을 하면서 주로 겪게 되는 현실적인 얘기 위주로 적어볼까 합니다. 그 중에서 가장 흔히 보게 되는 것이 개발팀장의 애매한 포지션입니다.

당신이 개발자라면 또는 개발팀장이라면 어떠한 일을 하고 있는지 잘 살펴 보시기 바랍니다. 제가 여러 회사를 컨설팅하면서 만나본 개발팀장의 역할은 천차만별이었습니다. 

공통점은 있습니다. 개발자로서 오랫동안 일을 하다가 개발팀장이 되었다는 것입니다. 
하지만 현재 하고 있는 일들은 천차 만별입니다.

어떤 개발팀장은 여전히 코딩에 90% 매진하고 있고, 어떤 사람은 프로젝트 관리만 하고, 어떤 사람은 회사 경영회의 쫒아다니면서 바쁜 나날을 보내고 있고, 어떤 사람은 코딩도 하고 관리도 하고 정신 없이 시간을 보내는 사람도 보았습니다.

개발팀장은 "개발팀"의 "장"이란 의미를 가지고 있어서 관리자로서의 역할을 요구하고 있는 듯하지만 대부분의 소프트웨어 회사에서는 가장 경험이 많고 뛰어난 개발자들이 맡고 있습니다.  

하지만 회사에서는 "장"이라는 의미에 따라서 개발자로서의 뛰어난 역할도 계속 해주기를 원하면서 관리도 하기를 원하는 경우가 많습니다. 개발팀에서 필요한 관리란 일반관리와 프로젝트관리인데, 보통 개발팀에서 일반관리는 할일이 별로 많지 않습니다. 일반관리 이슈가 매우 크다면 프로세스나 시스템을 개선해야 할 것입니다. 

따라서 이슈가 되는 것은 프로젝트 관리인데, 이것이 그렇게 만만한 일이 아닙니다. 즉, 개발팀장이 최고의 개발자로서 스펙도 잡고, 설계, 코딩도 하면서 할 수 있을 만큼 프로젝트관리가 간단하지 않습니다. 보통 어디하나 펑크가 나게 되어 있습니다. 

제 경험상 보통 프로젝트 관리에서 문제가 생기는 경우가 많습니다. 개발팀장은 개발자체는 원래 하던일이고 익숙하지만 프로젝트 관리는 경험도 적고 대부분 방법도 모르기 때문에 상식선에서 개발하느라고 바쁜 시간에 짬을 내서 하기 때문에 문제가 생기기 십상입니다.

그래서 필자는 개발팀장은 계속 최고의 개발자로서 개발 조직을 기술적으로 이끌고, 프로젝트 관리는 전문 PM(Project Manager)에게 맡기는 것을 권장합니다. 물론 개발자 출신으로 꼼꼼하고 관리를 좋아하는 사람이 PM으로 성장하는 것도 좋습니다.

개발조직이 10명 미만이고 대부분 소규모 프로젝트만을 진행한다고 하면 PM을 따로 두지 않아도 어떻게든 프로젝트가 진행이 될 수 있을 겁니다. 하지만 조직이 커지고 프로젝트가 복잡해지고 많은 프로젝트를 수행한다면 프로젝트의 성패는 요소기술에 달려 있지 않다는 것을 알게 될 것입니다. 이쯤되면 전문 PM이 없다면 가장 뛰어난 개발팀장들은 기술에 매진하지 못하고 잘하지도 못하는 프로젝트 관리에 허덕일 것입니다.

개발팀장은 쉽게 대체가 되지 않지만 PM은 외부에서 영입을 하는 것도 가능합니다. 즉 외부에서 영입한 사람이 할 수 있는 일을 회사에서 가장 바쁘고 가치 있는 일을 하는 개발팀장에게 맡기는 것은 비효율적입니다.

그렇다고 PM이 아무나 할 수 있다는 뜻은 아닙니다. 이또한 전문적인 일로서 전문가가 해야 하는 일입니다.

지금 일반관리자, 개발팀장, PM 등이 마구 섞여서 일을 하고 있다면 일단 임무를 나누어서 생각하는 습관을 들여야 할 것입니다. 그리고 현재 어느부분에서 문제가 생기고 있고 어느 역할을 보충해야 할지 계획을 세워서 조직을 튼튼하게 해야 합니다. 그렇지 않고 개발자 인원수만 늘여서는 현재의 많은 문제들이 해결되지 않습니다.

댓글 6개:

  1. 예전 피터 드러커의 책에 나온 비슷한 내용이 생각납니다.
    직위가 올라갈 수록 계속 역할은 바뀌는데, 그 바뀐 역할을 빨리 인지해야 성공할 수 있다는..
    뭐 그런 이야기 였는데요 아마 비슷한 맥락이 아닐까 생각합니다.
    아쉽게도 학부 때 읽은지 오래되어서 책 재목이 생각나지 않는군요 ㅎㅎ
    하지만 현실에선 개발자는 슈퍼맨이 되어야만 하죠 ㅠ.ㅜ

    답글삭제
  2. 안녕하세요 규현님.
    전 PM과 팀장이 나뉘어져 있던 프로젝트를 경험한 적이 있습니다.
    효율적으로 보였으나 그들간의 업무가 중복되었고, 팀장은 실제 프로젝트에서 무엇을 하는지 모를정도로 얼굴을 비추지 않더군요. 간혹 그런케이스를 제외하곤 역시나,.. 큰 프로젝트 일수록 팀장과 PM을 분리하여 역할을 분담하는 것이 더 효율적이라고 생각합니다.
    오랜만에 글이 올라와서 오랜만에 기분좋게 댓글 달고 가요~~ 파이팅~~!

    답글삭제
  3. 개발팀장과 PM이 다를 경우에 발생할 수 있는 문제점은 잘 모르겠군요.
    어떤 문제점들이 있을까요?

    답글삭제
  4. 안녕하세요. csj님
    일부 비슷한 맥락이 있을 수도 있겠네요. ^^ 요지는 전문적인 Role이 중요하다는 뜻입니다.

    답글삭제
  5. moova님 안녕하세요.
    PM은 전문적인 롤로서 나름대로 표준적인 뜻을 가지고 있지만, 팀장은 그야말로 천차만별로 회사마다 뜻이 다릅니다. 이런 경우는 관리자로서의 팀장을 말하는 것 같습니다.
    PM은 프로젝트 관리, 팀장은 팀 일반 관리를 나눠서 하다보면 Conflict가 나는 경우가 있고, 개발자는 중복 보고를 하기도 합니다. 회사가 워낙 크고 관리가 복잡한 경우라면 모를까 대부분의 경우 소프트웨어 회사에서 개발자에 대한 일반관리는 그렇게 많이 필요하지 않습니다.
    관리를 하는 사람이 둘이 있으면 말씀 하신 것과 같이 문제가 종종 발생하죠.

    제가 말하는 팀장이란 대부분의 소프트웨어 회사에서 그러하듯이 테크니컬 리더를 말합니다. 이런 경우 PM의 중요성에서 대해서 말하고자 합니다.

    답글삭제
  6. 안녕하세요. 장림님
    회사마다 팀장의 롤이 다르기 때문에 PM과 Conflict가 나는 경우에는 문제가 발생할 수도 있겠네요. ^^

    답글삭제