[기고] 사람의 마음을 움직이는, 프로젝트 관리
SI의 프로젝트를 수년간 진행하면서도 프로젝트 관리론(PMP) 이라는 영역을 처음 접한 건 노후 준비용 자격증 공부를 시작하면서입니다.
그동안 SI 프로젝트에서 팀원으로서 위기 아닌 위기를 겪게 될 때마다 “왜 항상 이런 일들은 프로젝트 막판에 불거져 나와 우리를 고생시키는 걸까?”라는 의문에 대한 해답들을 프로젝트 관리론이라는 책에서 발견하게 되면서, 프로젝트 관리에 흥미를 느끼게 되었습니다.
프로젝트가 산으로 가지 않고… 누구나 즐겁게 일할 수 있는 프로젝트를 만들기 위해서 프로젝트 관리자뿐만 아니라, 프로젝트 실무자들도 알면 좋을 듯한 기본 지식을 공유합니다!
◎ 프로젝트 관리는 왜 해야 할까요?
프로젝트는 한정된 기간, 예산, 자원 내에서 사용자가 만족할 만한 소프트웨어 제품을 개발시키도록 하는 모든 기술적, 관리적 업무를 지칭합니다.
반복적인 운영 업무와는 차별화된, 유일한 제품 또는 서비스를 짧은 기간 내에 제공하기 위해 새로운 팀이 구성되고, 팀원들은 각자의 역할을 부여받습니다. 이 과정에서 프로젝트 내외부적으로 많은 갈등이 발생하게 되고, 이로 인해 유발되는 리스크와 이슈들이 제대로 통제되고 관리되어야만 정해진 기간 내에 프로젝트의 목적을 성공적으로 달성할 수 있기에 프로젝트 관리가 필요합니다.
PMBOK에서는 효과적인 프로젝트 관리를 위하여 유사한 기능을 하는 프로젝트 관리 프로세스들을 묶어서 10개 영역의 지식체계로 분류하여 관리합니다. 통합, 범위, 일정, 원가, 품질, 자원, 의사소통, 위험, 조달, 이해관계자의 10개 영역으로 구성되며, 각 영역은 착수, 기획, 실행, 감시 및 통제, 종료라는 프로젝트 프로세스 그룹과 연결되어 49개의 세부 프로세스로 구성됩니다.
PMBOK 10개 지식체계 영역
통합관리 : 나머지 9개 영역의 계획과 활동이 유기적으로 결합되도록 조정하고 총괄 관리 함
범위관리 : 프로젝트의 기획, 업무 범위의 설정 및 승인을 받아 프로젝트의 목표에 맞도록 관리
일정관리 : 프로젝트를 단위 작업으로 분할한 후 각 단위 작업 별로 일정을 할당하고 관리
비용관리 : 프로젝트 수행에 필요한 비용을 각 작업 단위 별로 할당하고 부대비용(간접비) 및 직접 재료비를 관리
품질관리 : S/W 생명주기 과정에서 발생하는 산출물이 요구사항을 충족시키도록 기준을 설정하고 적합성 여부를 관리
인력관리 : 프로젝트 수행요원들의 활동을 조직하고 조정 관리함.
의사소통관리 : 프로젝트의 이해당사자간에 효율적인 정보전달체계를 계획, 조직, 관리
위험관리 : 프로젝트 수행과정에서 일어날 수 있는 위험요인을 발견하고 분석하여 대책을 수립
조달관리 : 프로젝트 수행에 필요한 각종 자원(인력, 장비, 자재 등)을 확보하고 관리
이해관계자관리 : 프로젝트 팀 및 고객과의 프로젝트 성공을 위한 이해관계자 식별, 관리, 참여 전략 관리
도대체!!! 프로젝트에서는 어떤 일들이 발생하기에, 프로젝트에만 투입되면 우리는 저녁이 있는 삶을 그리워하게 될까요?
계획 단계의 비현실적인 일정 계획과 예산 수립은 프로젝트가 진행될수록 더 큰 갈등과 이슈를 발생시킵니다(일정관리, 비용관리). 팀 구성 단계에서 고유 업무에 적합한 스킬을 보유한 인력을 확보하기 힘들 수도 있으며(조달관리), 부적절한 역할분담(인력관리), 그리고 프로젝트가 진행되는 과정에서 발생하는 고객의 지속적인 요구사항 변경(범위관리), 사용자의 의도를 제대로 파악하지 못한 잘못된 기능 구현(의사소통관리), 사용에 불편한 UI(품질관리) 등은 rework 으로 인하여 개발자들을 밤새우게 만드는 요인들이 됩니다. 이후 테스트 과정에서 발견되는 성능 부족 및 하드웨어 과부하 등의 문제는 설계부터 다시 고민하게 만들 수도 있습니다.
◎ 프로젝트에서 일정은 왜 항상 지연되나요?
예상치 못한 일들도 아니고, 일정 계획에 의해서 관리되고 끝나야 하는 일들은 왜 항상 미루고 미루다,,, 프로젝트 오픈일이 다가올수록 문제가 될까요?
프로젝트 관리론에서는 프로젝트에서 납기가 지연되게 하는 몇 가지 이유들을 제시합니다.
파킨슨의 법칙 : 어떤 일이든 주어진 시간이 소진될 때까지 기간이 늘어진다는 경험적 법칙으로, 역설적으로 모든 작업은 빨리 끝낼 수 있어도 주어진 시간을 다 소진한다는 법칙
자기방어기제 : 작업을 일찍 완료하면 다른 작업을 시키기 때문에 작업 완료를 숨기는 자기 방어
학생증후군 : 시험이 코앞에 다가와야 공부를 시작함. 닥치기 전까지는 일을 시작하지 않음.
후행공정 작업준비 미흡 : 일찍 작업을 완료해도 후속 작업의 자원이 준비되지 않으면 일정 단축 불가
이러한 이유 등으로 일정이 지연되는 상황을 미연에 방지하고자 작업량을 과다산정 하더라도, 프로젝트 상황은 여전히 변함이 없습니다. 지연되는 프로젝트 일정을 관리하는 기법으로 아래와 같은 방법을 고려해볼 수 있습니다.
자원평준화(Resource Leveling) : 각 활동에 배정된 자원이 가용 자원 한계 내에서 배정 될 수 있도록 여유 일정 조정 및 작업 순서 등을 조정하는 기법
Crashing : 최상경로(Critical Path)에 외부 전문가 또는 자원 등 추가적인 비용을 투입함. 추가 투입에 따른 비용 발생 및 의사소통 문제가 발생 할 수 있음
Fast Tracking : 서로 의존적인 작업을 병렬로 수행. 작업이 잘못될 경우 재작업 위험이 증가
What-if 시나리오 기법 : 다양한 문제점을 고려하여 시나리오별로 분석 실시하여, 일정에 영향을 미치는 Factor를 기준으로 대안을 시뮬레이션
◎ 고객의 요구사항은 왜 항상 변하는 걸까요?
촉박한 개발 일정과 수직적 의사결정 구조하에서 소수의 담당자만 관심을 가지고 프로젝트 초반에 요구사항을 도출하게 됩니다. 개발 및 테스트가 진행되면서 좀 더 다양한 사람들이 프로젝트에 관여하게 되고, 업무 부서간 또는 업무 담당자 간의 상이한 이해관계에 따라서 요구사항은 지속적으로 수정되고 관리될 수 밖에 없습니다.
부족한 사용자 참여 : 프로젝트 완료를 지연시키는 뒤늦은 요구사항 추가라는 사태 발생
사용자 요구사항 확장 : 시스템을 제대로 이해하지 못한 채 빈번하게 요청되는 요구사항 변경과 개발자의 무분별한 대응
불분명한 요구사항 : 한 요구사항을 읽는 사람에 따라 여러 가지로 해설할 수 있는 애매모호한 요구사항으로 여러 이해 관련자에게서 서로 다른 기대를 만들어 냄.
지나친 외양(Gold Plating) : 요구사항명세에 있지 않지만, 개발자가 “사용자가 좋아할” 기능을 추가할 때 발생. 사용자가 신경 쓰지 않는 기능들을 구현함으로써 시간을 낭비함
간과된 사용자 계층 : 서로 다른 기능들을 사용하는 여러 그룹의 사용자들이 있으며, 가장 중요한 사용자층을 초기에 파악하지 않는다면 일부 사용자의 요구는 충족되지 않음, 요구사항 단계에서 발생된 오류는 소프트웨어 프로젝트에서 발생된 모든 문제점 중 40~60%의 오류의 원인이 되고 있으며, 프로젝트 일정과 비용을 증가시키는 원인이 됩니다. 이러한 요구사항들이 프로젝트 초반에 구체적으로 도출되어, 명세화하여 프로젝트 기간 동안에 통제 관리함으로써 고객이 기대하는 제품을 제공 할 수 있도록 해야 합니다.
◎ 프로젝트에서 발생하는 갈등을 어떻게 해소해야 하나요?
프로젝트 팀원 간의 견해 차이는 적절하게 관리 한다면 의사결정 효율을 높이거나 좋은 방향의 결과를 얻을 수 있는 요인이 될 수 있습니다. 하지만 견해 차이로 갈증이 고조되는 경우 프로젝트에 좋지 않은 영향을 미칠 수 있기 때문에 반드시 적절하게 관리 되어야 합니다.
갈등의 중요성과 강도, 갈등과 관련된 이해관계자의 직위, 갈등을 해결하려는 동기 부여 및 갈등 해결의 시간적 여유 등으로 갈등 해결 우선순위가 결정됩니다.
Problem Solving(Win-Win) : 상호 간의 납득할 만한 최선의 해결책을 찾아내는 것. 매우 중요한 통합된 의견을 도출할 때 사용하는 방법으로 합의 도출 시간이 오래 걸리나 가장 좋은 방법
Smoothing(Lose-Win) : 자기의 의견이 틀렸다고 느끼고 합리성이 있다는 것을 보여줌. 팀 내 조화와 안정성을 중요하게 생각하거나, 상대가 실패를 통하여 배우고 느끼게 할 때.
Forcing(Win-Lose) : 긴급하게 결정해야 할 경우 옳다고 믿는 주요 안건의 집행 시 한 사람의 견해만 관찰하고 다른 사람의 견해는 무시함.
Compromising : 모든 이해 당사자가 만족할 만한 수준으로 해결책을 모색
Withdrawing(Lose-Lose) : 이슈가 사소할 경우, 갈등 사항에서 더 이상 해결하려고 시도하지 않고 회피하는 방법
◎ 프로젝트 관리자(PM)로서 가장 중요하게 관리해야 하는 영역은 무엇일까요?
프로젝트 관리자는 프로젝트 목표달성의 책임자이며, 프로젝트 관리 지식 및 성과 달성과 팀을 이끌기 위한 리더십에 대한 인성을 갖추어야 합니다. 특히 대형 프로젝트 관리자의 가장 중요한 능력 중의 하나는 프로젝트 이해관계자(Stake-holders)와의 의사소통 및 통합 능력입니다.
손자병법에 적을 알고, 나를 알면 백전백승이라는 말이 있습니다.
적을 안다는 것은 프로젝트에 참여 중인 이해관계자(고객, 현업, 스폰서 등)를 안다는 것이고, 나를 안다는 것은 프로젝트팀의 인적자원을 제대로 안다는 것입니다. 프로젝트 구성원의 개인적 역량 및 성향을 제대로 알고, 실력을 충분히 발휘할 수 있는 구성원에게 권한과 책임을 부여함으로써 자발적으로 프로젝트에 참여할 수 있도록 동기 유발을 시킬 수 있어야 합니다. 이해관계자의 숨겨진 니즈와 실질적 영향력을 제대로 파악함으로써, 사전에 프로젝트가 정상적인 방향으로 나아갈 수 있도록 프로젝트의 목표를 설정하는 일이 프로젝트를 성공적으로 이끄는데 중요한 부분입니다.
오늘도 어려운 프로젝트에 참여한 1人으로써,,, 결국, 프로젝트는 사람이 하는 일이기에, 사람을 관리하고 사람의 마음을 얻는 일이 프로젝트를 성공적으로 이끌어가는 가장 중요한 일이지 않을까라는 고민을 잠시 해봅니다.
고객은 만족할만한 시스템을 인도받아 행복해지고, 프로젝트 관리자는 정해진 일정과 예산 내에서 프로젝트가 끝날 수 있어서 행복하고, 프로젝트팀원들은 자신의 역량과 기량을 향상시키고 성취감을 느낄 수 있어서 행복해질 수 있는,,, 모두가 행복해지는 프로젝트를 오늘도 꿈꾸어 봅니다.
.