SW 엔지니어를 위한 로드맵(Roadmap)을 만들려면 SW 엔지니어의 활동 범위와 내용에 따른 분류체계가 필요합니다. 조직마다 서로 다른 분류체계를 가지고 있고, 정부에서 추진하는 분류체계와 현장에서 시행하는 분류체계가 서로 다릅니다. 로드맵을 만들려 할 때, 첫 걸음부터 좌절하는 이유가 바로 분류체계의 다양성 때문입니다. 로드맵을 위한 논의에서 첫 번째 주제로 SW 엔지니어를 어떻게 분류할 것인가로 잡았습니다.

SW 기술이 HW를 이끄는 시대가 되었다고들 이야기합니다. 그래서 SW 기술이 뛰어난  엔지니어가 많이 필요하다고 합니다. SW 엔지니어링은 어떤 기술을 포함하고 있는지 알아보기 위해 "SW 직무수행능력표준" 자료를 찾아봅니다. 직종 항목에 컨설팅, 프로젝트 관리, 아키텍처, SW 구현, SW 품질, 시스템 관리, 기술서비스, 영업 및 마케팅이 있습니다. 직종에 포함된 여덟 가지 중에 SW 구현이 우리가 흔히 말하는 소프트웨어 개발자가 주로하는 활동으로 보입니다. 그 속에는 시스템 SW 엔지니어링, 응용 SW 엔지니어링 등이 포함되어 있습니다.

SW를 개발하려면, 요구사항을 정리하여야 하고, 그것을 시스템 관점에서 분석하고, 다음으로 설계를 한 다음, 프로그램을 작성합니다.  SW 구현 직종의 다섯 가지 "SW 엔지니어링" 활동의 목표는 SW 시스템을 개발하는 것이므로, 요구사항, 분석, 아키텍팅, 설계, 프로그래밍, 테스트 등으로 표현되는 SW 개발 라이프사이클을 모두 포함하고 있습니다. 그렇다고 보면 직무란 것이 개발 대상인 목표 [software intensive] 시스템의 성격에 따라 시스템 SW, 응용 SW, DB SW 등으로 분류한 것으로 보입니다.

SW 국가직무능력표준(한국산업인력공단)

직무체계를 기준으로 로드맵을 만들 수 있을지를 생각해 봅니다. 로드맵은 경력 경로를 표현할 수 있어야 한다는 전제조건을 가지고 있습니다. SW 엔지니어가 지금은 무엇을 하고 있는데, 경험과 지식이 쌓이면 3년 후에는 무엇을 할 수 있는 지, 그리고 10년 후에는 무엇을 할 수 있는지를 표현하여야 합니다. 이런 기준으로 본다면 "응용 SW 엔지니어링"이라는 직무를 수행하고 있는 SW 엔지니어에게 표준으로 주어진 정보만으로는 로드맵 구성이 어려워 보입니다. 그럼에도 로드맵을 구성한다면,  프로그래머, 설계자, 분석가, 그리고 아키텍트 등으로 그릴 수는 있겠지만, 현대의 SW 개발이 기능을 넘나드는(Cross-functional, 여기서 기능은 비즈니스 기능이 아님) 개발자를 요구하는 까닭에 설계 기능, 분석 기능 등으로 개발자의 활동을 나누고 경로를 구성하는 것은 무리가 있어 보입니다. 일전에 어느 SW 개발 회사의 소개자료에서 다음과 같은 구조를 가진 로드맵을 본 적이 있습니다. SW 개발 라이프사이클에서 각 기능(분석, 설계, 등)을 중심으로 역할을 나누는 경우입니다. 처음에는 프로그래머로 시작해서 경험이 쌓이면 설계자, 분석가로 성장하는 시나리오입니다. Cross-functional developer가 큰 흐름을 형성하고 있는 시대를 거슬러 올라가는 그림입니다.

개발기능 중심의 역할과 로드맵의 예

SW 직무수행능력표준은 방대한 SW 산업을 체계적으로 분류하려는 목적을 갖고 있습니다.  따라서 이 것을 기반으로 하는 상세한 로드맵 구성이 좀 어렵다는 결론에 도달합니다. 그렇다면 뭔가 다른 기준이 있어야 할 것 같습니다. SW 개발과 개발에 참여하는 엔지니어의 역할을 로드맵을 구성하기에 적절한 방법으로 나누어 봅니다. 이를 위해서 SW 개발 프로젝트 현장을 들여다 보겠습니다.  프로젝트 팀이 개발하는 목표 시스템이 운영체제이든, 비즈니스 지원 시스템이든, 보안 솔루션이든 프로젝트 팀의 구성은 비슷합니다.  프로젝트를 관리하는 역할을 가진 사람들이 있고, 설계하고 구현하는 개발자라는 사람들이 있고, 업무 전문가 들이 있습니다. 그 외에 HW나 네트워크 등과 같은 인프라를 지원하는 사람들, 프로젝트에서 사용하는 벤더 솔루션을 지원하는 사람들이 있습니다.

아래 그림은 2013년에 있었던 실제 프로젝트의 조직 구성도입니다. 모두 서른 명이 참여를 했고, LBS(Location Based Service) 분야의 네비게이션 시스템을 개발했습니다. 관리분야 3명, 업무 전문가 3명, HW와 솔루션 등에 3명, 그리고 개발에 21명으로 구성되어 있습니다. 분석, 설계, 그리고 프로그래밍을 하는 인력이 전체 인력 구성의 70%를 차지하고 있습니다. SW 개발 프로젝트라면 인력 구성비에 약간의 차이가 있을 뿐, 대부분 이와 비슷한 프로젝트 조직 구성도를 가집니다.

전형적인 SW 개발 프로젝트 팀의 조직도

어디서나 흔히 볼 수 잇는 프로젝트 조직도로부터 SW 엔지니어를 위한 로드맵을 향한 걸음을 시작합니다.

SW 프로젝트에서는 직무를 기준으로 참여자의 활동범위를 정의하지 않고 역할을 기준으로 정합니다. SW 개발 프로젝트 안에서 수행되는 모든 활동은 활동의 주체인 역할 담당자가 있습니다. 한 사람은 여러 가지 역할을 동시에 수행할 수 있습니다. 소규모 프로젝트에 참여한 어떤 사람은 SW 아키텍트 역할과 서버측 개발자 역할을 동시에 수행합니다. 게다가 빌드 엔지니어의 역할을 함께 수행하기도 합니다.

역할은  참여하는 역할을 분류하는 방법은 조직마다 서로 다릅니다. SW 엔지니어링 영역에서 표준을 제시하지 않기 때문입니다. SW 개발을 바라보는 관점에 따라 서로 다른  분류 기준을 이야기합니다. 출발점이 명확하지 않으면 그 이후에 따라 나올 작업들이 많은 논쟁에 휩싸일 것입니다.  명확한 기준을 갖기 위해 2014년 현재 현장에서 볼 수 있는 프로젝트 팀에 참여하는 다양한 역할을 다섯 가지 역할그룹으로 나누었습니다.

관리 역할그룹: 프로젝트 관리, 품질 관리, 어떤 경우는 수락 테스트(User Acceptance Test) 활동을 수행하는 역할 담당자들이 속합니다.

개발 역할그룹: 요구사항을 식별하고, 이를 시스템 관점에서 분석하고, 설계하고, 프로그래밍을 하거나, 아키텍처를 설계하는 역할 담당자들이 여기에 속합니다.

도메인 역할그룹: 업무 전문가들입니다. 보험 시스템을 개발할 때 보험 업무 전문가들이며, 침입탐지 시스템을 개발할 때 침입탐지 업무 전문가들이 여기에 속합니다. 한 도메인에서 오랫동안 개발한 개발자는 도메인 전문가 역할을 일정 부분 수행할 수 있습니다.

시스템 엔지니어링 역할그룹: HW 관련 역할 담당자들이 속한 그룹입니다. 시스템을 테스트하거나 운영하는데 필요한 [하드웨어] 서버와 네트워크등과 같은 인프라를 준비합니다.

솔루션 엔지니어링 역할그룹: 시스템 구축에 필요한 벤더 솔루션 전문가 들입니다. 오라클 DBMS 전문가, WebLogic WAS 전문가, UP-UX 전문가, SAP 전문가  등이 속한 그룹입니다.

SW 개발프로젝트에 참여하는 다섯 가지 역할그룹

SW 엔지니어(또는 좀 더 넓은 의미로 표현할 때 SW 시스템 개발에 참여하는 역할 담당자)를 위한 로드맵 구성할 때, 그 로드맵의 대상을 명확하게 하여야 합니다. SW 엔지니어를 위한 로드맵이 어려운 이유는 바로 대상이 명확하지 않기 때문입니다. 로드맵을 구성할 때, 이 로드맵은 SW 개발 역할 그룹을 대상으로 하는 것이다 라거나 관리, 개발, 도메인 세 가지를 모두 대상으로 한다고 명시적으로 이야기를 해야 합니다. 예를 들면, "SI 분야에서 수행하는 프로젝트에 참여하는 개발 역할그룹을 위한 로드맵이다"라거나 또는 "보험 회사의 시스템 유지보수 활동에 참여하는 엔지니어를 위한 로드맵으로 대상 역할그룹은 관리, 개발, 도메인 세 가지를 포함하고 있다"라고 표현해야 합니다. 그렇지 않으면 소통의 혼란이 시작됩니다. 예를 들면,  SI 개발팀을 위한 로드맵에서 네트워크  담당 일을 하는 엔지니어가 자신의 위치를 로드맵에서 찾으려 하지만 그 엔지니어를 위한 내용은 없습니다. 왜냐면, "개발 역할그룹"으로 범위를 제한했기 때문입니다. 물론 시스템 엔지니어링 역할그룹에 속하는 엔지니어들이 많은 조직에서는 그 역할 그룹을 위한 로드맵을 별도로 구성할 수 있습니다.

현재 다운로드 페이지 (http://www.nextree.co.kr/roadmap/) 에서 볼 수 있는 로드맵은 SI(System Integration) 영역에서 활동하는 개발 역할그룹을 위한 로드맵입니다. 그곳에서 관리 역할그룹을 위한 정보는 찾을 수 없습니다. 물론 다음 기회에 관리 역할그룹을 위한 로드맵도 제시를 하겠지만 현재는 개발 역할그룹을 대상으로 합니다. 작년 12월 경에 시스템 운영관리를 주로 하는 고객사에서 로드맵 작업을 했습니다. SM 분야은 SI 분야와 달리 관리, 개발, 도메인 세 가지 역할 그룹을 대상으로 로드맵을 구성해야 합니다. SM 분야에서도 시스템 엔지니어링이나 솔루션 엔지니어링을 위한 로드맵을 구성하지는 않았습니다. 시스템 엔지니어 역할 담당자가 2~3명 정도 밖에 되지 않아서 로드맵 수요가 없었습니다.  솔루션의 경우는 외부 벤더 엔지니어의 지원이나 서비스에 의존하거나, 벤더가 정한 로드맵 체계가 있어서 그것을 따르는 경향이 있는 까닭으로 로드맵 수요가 없었습니다.

SW 엔지니어를 위한 로드맵을 구성할 때, 다섯 가지 역할 그룹을 기준으로 로드맵의 대상을 정합니다. 다섯 가지 역할그룹 분류체계는 SW 엔지니어의 역할 분류를 보다 명확하게 해 줍니다. 각 역할 그룹 별로 역할을 분류하는 방법이 있습니다. 역활의 특성이 서로 다르기 때문입니다. 다음 글에서는 다섯 가지 역할 그룹 중에서 가장 많은 역할 담당자를 거느리고 있는 "개발 역할그룹"에 대해 알아 보겠습니다.  그리고 역할을 기준으로 SW 엔지니어의 활동을 분류하고 로드맵을 구성했을 때  "경력경로"를 로드맵에서 표현할 수 있는 지도 확인해 보겠습니다.

감사합니다.

로드맵다운로드

2014.2.5, 송태국(tsong@nextree.co.kr)

namoosori
안녕하세요. 나무소리 입니다. 나무소리는 넥스트리(주)의 교육 브랜드 입니다.넥스트리가 지난 20년 동안 쌓아온 개발 및 교육 경험들을 나무소리를 통해 많은 분들과 공유 하려고 합니다.앞으로 저희 나무소리를 통해 보다 나은 교육을 경험 하실 수 있도록 구성원 모두 최선을 다하겠습니다.