소프트웨어 개발 프로젝트 안에는 여러 직군이 있지만, 그 중 대표적인 것이 ‘개발자’와 ‘관리자’다. 이 둘은 각각 역할을 성공적으로 해내기 위해 여러가지 기술을 갖출 것이 요구 되는데, 공통적인 것도 있지만 서로 다른 부분이 훨씬 더 많다. 개발자라면 프로그래밍 언어와 플랫폼에 대한 이해를 비롯해 각종 알고리즘 등과 같은 컴퓨터 과학의 지식들이 필요하다. 관리자는 문서 작성 능력이나 대인 기술 등이 중요 할 것이다. 이렇게 요구되는 기술이 서로 다름에도 불구하고 경력있는 개발자들이 관리자로 자의 또는 타의로 바뀌고 있는 것이 불행한 현실이다.
이런 현상에 대해 여러가지 이유가 있겠지만, 그 중 개발자들이 관리자의 개발 기술력을 따지는 것도 한 원인으로 보고 있다. 개발자와 관리자는 요구하는 기술이 다른데 왜 관리자에게 기술력까지 요구하는 것일까?
그것은 우리나라 소프트웨어 개발에서 디렉터, 아키텍트, 프로듀서의 역할이 제대로 분리되어 있지 않기 때문이다. 현실은 이 셋의 역할을 관리자라는 이름으로 같은 사람이 다 맡고 있다 보니 관리자로서 개발자들을 지원만 해주는 것이 아니라, 여러가지 민감한 기술적인 최종 결정도 내려야 하는 상황이 생기고, 그러다 보니 개발자들은 관리자에게 자신들보다 더 높은 기술력을 요구하게 됐다. 그 결과 많은 경험을 쌓은 개발자가 관리자가 되어야 하는 악순환의 고리가 생겨버린 것이다.
개발자들 보다 더 높은 기술력과 많은 경험이 요구되는 것은 아키텍트다. 그럼에도 불구하고 개발자들은 관리자(프로듀서)에게 기술력을 요구하는 경우가 많다. 실상 요구를 해야 하는 것은 관리자가 아키텍트로서 역할을 하지 말아달라고 하는 것이며, 관리자에게 기술력을 갖추라고 하는 것은 경험 많이 쌓고 기술력을 갖춘 개발자를 관리자로 떠다 미는 효과만을 낳을 뿐이다.
디렉터가 결정을 내리고, 아키텍트가 아키텍트를 디자인 하며, 프로듀서가 프로젝트를 프로듀싱 할 때 개발자가 자꾸 관리자로 변신을 해야 하는 상황을 막을 수 있다.
관리자에게 기술력을 갖추길 요구하지 말고, 아키텍쳐는 아키텍트가 결정을 할 수 있게 해달라고 요구하자. 아키텍트가 없다면 리드 프로그래머라도 그 역할을 대신 수행하면 된다.