프로젝트는 pro(forward)와 ject(throw)로 이루어진 합성어다. 단어 그대로 해석 하자면 ‘앞으로 내던지는 것’. 프로젝트의 사전적 의미인 “계획된 일(planned work)”과는 느낌이 많이 다르다. 왠지 계획보다는 한번 해 보자는 시도가 더 중요한 것처럼 느껴진다.
프로젝트에서 계획은 중요하다. 잘 짜여진 계획은 프로젝트가 잘 돌아가기 위해 필요한 것이 무엇인지 알게 해 주고, 프로젝트가 가야할 방향을 알려준다. 하지만 프로젝트를 계획대로 진행하는 것은 불가능에 가깝다. 예상하지 못한 수많은 변수가 튀어 나오기 때문이다. 어떻게 보면 프로젝트는 언제 나타날지 모르는 변수들을 최대한 예방하거나, 아니면 아예 받아들여서 계획한 것들을 효과적으로 변경하는 과정의 연속이다.
현대적 의미의 프로젝트는 문제의 해결책을 일정한 기간동안 만드는 활동을 말한다. 이를 위해 팀을 꾸리고, 필요한 사람들을 찾고, 일정이나 비용을 계획한다. 체계적이고 과학적인 프로젝트 수행을 위해 프로젝트 영역을 범위, 시간, 원가, 품질 등으로 나누어 관리하기도 한다. 각 영역마다 효율적인 관리를 위한 프로세스와 도구들도 많이 찾을 수 있다. 결국 프로젝트의 성공을 결정하는 요인은 검증된 여러 공학적인 기법들을 활용해서 프로젝트를 관리하는 것에 달려있다.
프로젝트에는 세가지 특성이 있다. 그 첫번째 특성은 일정이다. 일정이 중요한 이유는 프로젝트의 성공 여부가 프로젝트 완료 시기에 큰 영향을 받기 때문이다. 아무리 좋은 제품이나 서비스라하더라도 적당한 시기에 완료해 내놓지 못한다면 제 역할을 해낼 수 없다.
또한, 프로젝트는 결과물이 있어야 한다. 결과물은 눈에 보이는 제품이 될 수도 있고, 보이지 않는 서비스나 프로세스가 될 수도 있다. 중요한 사실은 결과물을 통해 문제를 해결할 수 있어야 한다는 것이다.
프로젝트의 마지막 특성은 점진성이다. 프로젝트를 통해 단번에 결과물을 만들 수는 없다. 단계별로 계획하고 계획대로 진행되는지 검토하며 점진적으로 구체화된다. 따라서 프로젝트는 초반에 많은 리스크를 가지고 있고 불투명하지만, 시간이 지날수록 결과가 점점 더 확실해진다.
프로젝트의 세가지 특성은 어찌보면 당연한 얘기지만, 많은 사람이 간과하는 부분이기도 하다. 프로젝트의 특성만 잘 파악해도 프로젝트를 관리하는데 큰 도움이 된다. 프로젝트 초기에 투입된 개발자가 ‘도대체 이 프로젝트는 뭘 하려는 프로젝트인지 모르겠다’며 불평을 한다면, 이 사람은 프로젝트가 가지고 있는 점진성에 대한 이해가 없는 사람이다. 프로젝트는 점진적으로 구체화되기 때문에 프로젝트 초기에 느끼는 불확실성은 어찌보면 당연한 것이다.
프로젝트를 관리한다는 것은 관리 할 것들을 계획하고, 계획대로 되는지 확인하고, 계획대로 되고 있지 않다면 어떻게 해야하는지를 결정하는 과정이다. 그렇다면 프로젝트는 누가 관리해야 하는가? 정답은 프로젝트 구성원 모두이다. 흔히 프로젝트 관리는 PM이 해야 한다고 생각하지만, 각 분야의 전문적인 영역까지 PM이 모두 관리할 수는 없는 노릇이다. PM은 프로젝트 실무자들이 요구사항을 구현하기 위한 환경을 마련하고, 더 효율적으로 역할을 다 할 수 있도록 지원해 주는 일을 할 뿐이다.
개발자들이 단지 잘 만들어진 코드만을 관리해서는 프로젝트가 성공할 수 없다. 요구사항, 일정, 비용, 품질, 커뮤니케이션, 리스크 같은 프로젝트의 세부적인 영역에 대한 철저한 관리가 필요하다. 즉, 프로젝트가 성공하기 위해서는 무엇보다도 프로젝트를 제대로 이해하고 있어야 한다는 말이다. 프로젝트는 단순히 잘 짜여진 코드의 결과물이 아니다. 프로젝트 이해관계자와 구성원들의 니즈가 공학적인 기법들을 바탕으로 잘 조화된 종합적인 결과물이여야 한다.
코딩만 잘한다고 훌륭한 개발자가 되는 시절은 이제 지나갔다.

카테고리: ResearchTech

김 태훈

a dream you dream together is REALITY!

0개의 댓글

답글 남기기

아바타 플레이스홀더

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다