개발자로 시작한 사람들이 꿈꾸는 길을 과연 무엇일까요? 어쩌면 수준 높은 고급 개발자가 되는 것이 가장 일차적인 꿈이긴 하겠지만, 제 생각엔 어느 정도 수준에 올라간다면 아마 설계자나 아키덱트를 꿈꾸지 않을까라는 생각을 해봅니다. 하지만, 아키텍트라는 분야는 단순히 프로그래밍만을 잘 한다고 갈 수 있는 길이 아니기에 해야 할 공부도 상당히 많습니다. 특히 IT 분야에서는 아키텍트가 설계, 프로그래밍 그리고 테스트 과정뿐만 아니라 프로젝트 전반에 대한 공정, 인력, 비용, 산출물 등을 모두 고려해서 진행을 해야함으로 매우 어려운 분야라고 하겠습니다.
그렇다면 아키텍트가 되기 위해서는 준비해야 하는 과정은 어떤 것들이 있을까요?
아마 다른 무엇보다도 제일 먼저 준비해야 일은 사용자 요구사항을 이해하고 분석하는 설계 과정이 아닐까 생각합니다. 제가 이 과정을 가장 먼저 언급한 이유 중 하나는 프로그래밍을 집중적으로 하신 분들의 경우 가장 꺼려하는 부분 중 하나가 바로 사람들과 만남으로 보기 때문입니다. 실상 우리가 프로그래밍을 하는 이유는 결국 프로그램를 통해 편리함을 얻기 위한 것이기에 사용할 사람들의 의견을 듣고 설계하는 것이 매우 중요합니다. 하지만, 일반적으로 개발자 분들은 이 과정을 매우 힘들어 하시는 것 같습니다. 아마도 그러한 이유는 프로그래밍과 달리 한 사람이 전체의 과정을 주관하기보다는 많은 사람들이 서로 각기 다른 의견을 내거나 심지어는 아주 상반된 의견을 낼 때 조율하는 과정이 만만치 않기 때문일 것입니다. 따라서, 많은 분들이 이 부분을 회피하려고 하는데 아키텍트가 되기를 진정으로 생각하신다면 반드시 극복해야 하는 문제라고 생각합니다.
일단 사용자의 분석설계에 대한 과정에 어느 정도 능력이 갖추게 된다면 그 다음 배워야 할 분야는 효율적인 프로젝트 관리 분야라고 생각합니다. 보통
책에서는 아키텍트가 되기 위해 디자인 패턴이나 UML 등 기술적인 부분을 강조하는 경우가 많은데 이 부분뿐만 아니라 프로젝트라는 큰 과정을 어떻게 이끌어가야 할 지를 배워야 한다고 생각합니다. 왜냐하면 우리가 아키텍트가 되고자 하는 것은 단순히 툴이나 기술을 익히기 위해서가 아닌 고객이 원하는 결과물을 만들어 내는 것이기에 프로젝트를 효율적으로 관리할 수 있는 능력을 갖추는 것이야말로 아키텍트가 반드시 가져야 할 중요한 덕목이라고 생각합니다.
프로젝트 관리를 잘한다는 것은 앞서 언급한 것처럼 정해진 기간 내에 원하는 사양에 맞추어 일을 끝내는 것뿐만 아닌 프로젝트 예산수립부터 인력관리, 산출물 관리까지의 총체적 관점에서 이를 다 운영할 수 있는 능력을 의미합니다. 따라서, 이러한 능력을 갖춘다는 것은 개발에 대한 능력뿐만 아니라 전반적인 관리능력을 갖추어야 하는 것을 의미하기에 매 프로젝트마다 틈틈이 프로젝트를 어떻게 관리해야 하는지 조금씩 이해하려는 노력을 해야한다고 봅니다.
프로젝트 관리에 대해 어느 정도 능숙해진다면 마지막으로 준비해야 하는 부분은 프로젝트 포트폴리오 관리라고 생각합니다. 이 부분에 대해서는 사람에 따라 달리 보시는 분들도 있는데, 제 관점에서는 이 부분이야말로 아키덱트로 가는 매우 중요한 영역이라고 생각합니다. 즉, 다시 말해 프로젝트 관리역량을 갖추게 된 뒤에 다수의 프로젝트를 동시에 진행할 수 있는 능력을 갖추어야 하는 것을 의미하는데, 때에 따라서는 현재 진행 중인 프로젝트들을 파기할 수 있는 능력도 갖추어야 한다고 봅니다. 물론, 이 과정은 매우 쉽지 않은 것들을 포함하고 있습니다. 다수의 프로젝트를 진행할 경우 개별 프로젝트에 대해 이해도를 높이기도 쉽지 않거니와 다수 프로젝트간에 서로 영향을 주는 경우에는 이를 조율하는 작업이 만만치 않기 때문입니다. 실제 대형 프로젝트의 경우에는 작은 프로젝트들로 구성되어 진행을 하는 경우도 많기에 아키텍트가 이러한 능력을 갖는 것은 매우 중요하다고 봅니다.
또한, 이렇게 다수의 프로젝트를 진행하다 보면 상황에 따라서 프로젝트들을 포기해야 하는 상황도 맞이하게 되는데 저는 아키텍트가 반드시 경험해봐야 하는 일이라고 생각합니다. 누구에게나 이런 과정은 쉽지 않을 뿐만 아니라 특히 개발자의 경험을 가지고 있는 분들의 경우 진행 중인 프로젝트를 없앤다는 것은 어떤 의미인지 알기에 매우 힘들기는 하겠지만, 이 과정을 거쳐야만 진정한 의미의 아키덱트가 될 수 있다고 생각합니다. 왜냐하면, 다소 관리적인 이 업무를 아키덱트가 해야 하는 것은 관련 프로젝트에 대해 누구보다도 잘 알고 있고, 또한 회사가 성공하기 위해서 아키덱트는 관련된 일들을 조정해야 하는 임무가 주어진다고 생각하기 때문입니다. 때문에 많은 분들이 아키텍트라는 자리를 IT에 입문한 뒤에 한번쯤은 꿈을 꿈꾸는 자리이긴 하지만, 막상 그 자리에 도달하게 되면 매우 어려움을 느끼시기 때문입니다.
저도 그 자리에 올라가기 위해서 노력하는 한 사람으로써 한번은 멋지게 해보고 싶다는 생각을 가지고 있기에 아직은 현실보다는 이상주의자에 더 가까운 것 같지만, 그래도 이 분야에 들어온 이상 이런 꿈 정도 한번 꾸어보지 않는다는 것은 되려 더 이상하지 않을까 생각합니다.