read

소프트웨어 팀을 관리한다는 건 어떤 의미일까? 팀 관리의 핵심 포인트는 무엇일까? 여기에 대해서 짧은 생각을 한번 정리해 봤다.

우선 소프트웨어 업의 특성을 이해해야 한다. 서버 비용이나 각 개인별 개발 비품들이 필요하긴 하지만, 소프트웨어 업은 본질적으로 인건비가 전부인 산업이고, 경영의 관점에서 소프트웨어 업의 ROI 는 개발팀의 생산성에서 나온다.

그럼 소프트웨어 개발팀의 생산성이란 무엇을 말하는가? 우선 개발 작업은 고도의 지적 능력을 요구하는 작업임을 감안하자. 기계와 달리 사람은 보상을 더 해준다고 더 많은 작업을 할 수 없다. 정신적, 체력적 한계가 있기 때문이다. 다시 말해 단순 업무 시간 증가는 생산성과 크게 직결되지 않는다. 결국 생산하는 총시간을 늘리는 것은 효과가 없고, 생산하는 시간의 효과를 증폭시키는 것만이 방법이다. 즉 주어진 업무 시간 동안 어떤 일들을 하도록 만드느냐가 소프트웨어 개발팀 관리의 중요 포인트이다.

이는 똑같은 자원을 어떻게 배분할 것인가 하는 문제와 동일하다. 업무 시간이 같다고 가정할 때, 모든 사람은 하루 8시간의 리소스를 아침에 할당 받는다. 그리고 그 리소스를 하루 만에 다 쓴다. 덜 쓰더라도 다음 날로 넘길 수 없다. 남은 시간들은 그냥 버려진다. 이는 시간이라는 리소스가 가진 특성이다.

한편 소프트웨어를 개발하고 배포하고 유지 보수하는 일련의 작업들을 보면, 안타깝게도 이 작업들이 시간축에 대해 균등하게 발생하지 않는다. 바쁠 때는 몇 개의 일들이 동시에 진행되고, 한가할 때는 아무 일이 없을 때도 있다. 또 어떤 일들은 사업상의 이유로 도중에 그만둬야 하는 경우도 생긴다.

자 이제 소프트웨어 개발팀을 이끄는 리더가 되어 보자. 우리가 해야 하는 일은 매일 일정하게 발생하는 '시간' 이라는 리소스를 활용해서, 언제 어떤 일이 발생할 지 모르는 불확실한 소프트웨어 개발 프로젝트를 성공리에 마치는 것이다. 다시 말해, 불확실한 프로젝트 계획이 가지고 있는 불완전함을 시간에 대해 균등한 작업들로 환원하는 일이다. 이것이 소프트웨어 개발팀 관리의 핵심이다.

결국 개발팀의 생산성을 높이는 일은 시간이라는 리소스의 특성을 이해해야 가능하다. 한번 소비된 부분은 어떤식으로든 회수할 수 없다는 점. 생산 여부와 상관없이 리소스의 소비가 계속 일어난다는 점. 리소스 할당에 있어 개인차가 없다는 점 등이 있다. 바로 이러한 시간의 속성 때문에 소프트웨어 개발팀 운영시 가장 피해야하는 것은 낭비 그 자체가 되는 것이다.

조금 빙 돌아 온 듯하지만, 이제 결론이다. 소프트웨어 개발 팀을 이끈다면 , 마일스톤 계획 또는 업무 계획등을 세울 때, 예상되는 업무들을 가능한 균일하게 배치하는 것이 중요하다. 그러기 위해서 리더로서 여러가지 부가적인 작업들이 필요해진다. 이렇게 작업의 균일성을 이루려면, 리더는 미래의 불확실함 중에서 선택을 해야 하는 입장에 놓이게 된다. 이 순간 가장 주의할 점은 앞서 말했듯, 낭비를 최소화 하는 선택을 하는 것이다. 이 바탕 위에 개발방법론등을 검토해야 생산성이 좋은 팀을 빌드할 수 있다. 특히나 스타트업처럼 제한된 환경이라 생존 확률을 더 높여가야 한다면, 낭비를 없애는 것은 아주 중요하다 할 수 있다.

[slideshare id=37185422?rel=0&w=427&h=356&style=border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;&sc=no]

The 10 Timeless Productivity Hacks from Bernard Marr
Blog Logo

Ki Sung Bae


Published

Image

Gsong's Blog

Developer + Entrepreneur = Entreveloper

Back to Overview