Tweet |
Kauffman Center at Daybreak by Moose Winans |
개발자로 시작한 사람들이 꿈꾸는 길은 과연 무엇일까요? 어쩌면 수준 높은 고급 개발자가 되는 것이 가장 일반적인 꿈이긴 하겠지만, 제 생각엔 어느 정도 수준에 올라간다면 아마 설계자나 아키텍트를 꿈꾸지 않을까 하는 생각을 해봅니다. 하지만, 아키텍트라는 분야는 단순히 프로그래밍만을 잘 한다고 이룰 수 있는 꿈이 아니기에 관련한 공부와 더불어 다양한 경험이 필수적인 것 같습니다. 특히 IT 분야에서는 아키텍트가 설계, 프로그래밍 그리고 테스트 과정뿐만 아니라 프로젝트 전반에 관리할 수 있는 PM 역량을 어느 정도 갖추어야 함으로 많은 시간이 걸려야만 제대로 된 아키텍트가 될 수 있다고 이야기 드릴 수 있을 것 같습니다.
그렇다면 아키텍트가 되기 위해서는 어떤 역량을 갖추어야 할까요?
아마 다른 무엇보다도 제일 먼저 시작해야 하는 것은 사용자 요구사항을 이해하고 분석하는 설계 과정이 아닐까 생각합니다. 제가 이 내용을 가장 먼저 언급한 이유는 프로그래밍을 집중적으로 공부하시거나 업력을 쌓아오신 분들이 가장 꺼려하는 업무 중 하나가 바로 사용자나 고객과의 관계 형성 및 지속적인 모니터링으로 보기 때문입니다. 실상 우리가 프로그래밍을 하는 가장 근본적인 이유는 결국 프로그램을 통해 사용자나 고객에게 편리함을 주기 위한 것이기에 사용할 사람들의 의견을 듣고 설계하는 것은 그 어느 것보다도 중요합니다. 하지만, 모든 분들이 그렇지는 않지만 제가 만난 많은 개발자 분들은 이 과정을 매우 힘들어 하시는 것 같습니다. 아마도 개발과 달리 한두 사람이 전체적인 과정을 주관하고 일관된 프로세스로 움직이기보다는 많은 사람들이 서로 각기 다른 의견을 내거나 심지어는 아주 상반된 의견을 내는 경우도 있고, 이를 조율하는 과정이 만만치 않기 때문일 것 같습니다. 따라서, 많은 개발자들이 이 업무를 자신과 상관없는 영역이라고 생각하시는데, 아키텍트가 되기를 진정으로 바라신다면 반드시 극복해야 하는 사안이라고 생각합니다.
일단 사용자의 분석설계에 대해 어느 정도 능력을 갖추게 된 뒤에 고민해야 할 영역이 있다면 아마도 효율적인 프로젝트 관리가 아닐까 합니다. 보통 교과서나 이론에서는 아키텍트가 되기 위해서는 디자인 패턴이나 UML 등 기술적인 부분을 강조하는 경우가 많은데 제 생각에는 이 부분뿐만 아니라 프로젝트라는 큰 과정을 어떻게 이끌어가야 할 지를 배우는 것이 필요하다고 생각합니다. 왜냐하면 아키텍트는 단순히 툴이나 기술을 사용하고 활용하는 것뿐만 아니라 한정된 자원을 가지고 고객이 원하는 결과물을 만들어 내는 일련의 예술(Art)이라고 보기에 프로젝트를 효율적으로 관리할 수 있는 능력을 갖추는 것이야말로 아키텍트가 반드시 가져야 할 중요한 덕목이라고 생각합니다.
프로젝트 관리를 잘한다는 것은 앞서 언급한 것처럼 정해진 기간 내에 원하는 사양에 맞추어 일을 끝내는 것뿐만 아니라 프로젝트 예산수립부터 인력관리, 산출물 관리까지의 총체적 관점에서 이를 다 운영할 수 있는 능력을 의미합니다. 따라서, 이러한 능력을 갖춘다는 것은 개발에 대한 능력뿐만 아니라 전반적인 관리능력을 갖추어야 하는 것을 의미하기에 매 프로젝트마다 틈틈이 프로젝트를 어떻게 관리해야 하는지에 대해 조금씩 이해하려는 노력을 해야한다고 봅니다.
아키텍트가 되기 위해 준비하는 과정 중 가장 어려운 영역은 아마도 프로젝트 포트폴리오 관리라고 생각되는데, 이 영역은 관점에 따라 달리 보시는 분들이 많아 제 주관적인 관점이 많이 반영된 생각이라고 할 수 있을 것 같습니다. 프로젝트 포트폴리오 관리역량은 개별적인 프로젝트 관리역량을 갖추게 된 뒤에 다수의 프로젝트를 동시에 진행할 수 있는 능력을 갖추는 것을 의미하는데, 때에 따라서는 현재 진행 중인 프로젝트들을 파기할 수 있는 신념과 용기도 갖추어야 하기에 이 과정은 - 특히나 한국에서는 - 매우 쉽지 않은 많은 이슈들을 포함하고 있습니다. 다수의 프로젝트를 동시에 진행할 경우 개별 프로젝트에 대해 이해도를 높이기도 쉽지 않거니와 프로젝트간에 서로 영향을 주는 경우에는 이를 조율하는 작업 또한 고난이도의 업무이기 때문입니다. 하지만, 대형 프로젝트의 경우에는 몇 개의 작은 프로젝트들로 구성되어 진행되고 각 프로젝트의 진척사항이나 성과에 대해 모니터링을 해서 일정을 조율하거나 파기, 생성을 해야하는 경우도 있기에 대형 프로젝트에서 아키텍트가 제대로 된 역량을 발휘하려면 이러한 자질을 갖추는 것은 매우 필요한 요건이라고 생각됩니다.
또한, 이렇게 다수의 프로젝트를 동시에 진행하다 보면 상황에 따라서는 단위 프로젝트들을 포기해야 하는 상황도 맞이하게 되는데, 좋은 아키텍트가 되기 위해서는 반드시 한번쯤은 경험해봐야 하는 일이라고 생각합니다. 이런 과정이 정신적으로 육체적으로 매우 쉽지 않을 업무인 것은 분명하나 진행 중인 프로젝트를 파기한다는 것이 어떤 의미인지 명확하게 이해할 때만이 진정한 의미의 아키텍트가 될 수 있다고 보기 때문입니다. 어떤 의미로 보면 다소 관리적인 업무로 보일 수 있는 있는 이 업무를 해야 하는지에 대한 의문을 가질 수도 있으시겠지만, 프로젝트에서 아키텍트가 차지하는 비중을 생각해 본다면 해당 업무는 전반적인 업무를 조율하는 관점에서 반드시 필요한 역량이기에 꼭 경험을 해보시길 권해드립니다.
'컨설팅이야기 > Consultant Way' 카테고리의 다른 글
6. 소프트웨어 설치에 일주일이 걸린다고요? (0) | 2009.08.19 |
---|---|
5. ERP와의 만남: 컨설턴트로 나를 이끌어준 멋진 소프트웨어 (2) | 2009.08.17 |
3. Born to Program: 컨설턴트보다 개발자가 더 편안한 사람 (2) | 2009.08.12 |
2. 무니만 컨설턴트: 회사에서 준 컨설턴트란 직함 (4) | 2009.08.10 |
1. 컨설팅, 그게 뭔데: 첫 직장에서의 나의 컨설팅 입문기 (2) | 2009.08.07 |