본문 바로가기

마이크로소프트웨어

소프트웨어 개발자의 미래와 진로

자신의 진로에 대해 고민하지 않는 사람이나 직군이 있을까요? 아마 어느 직군이나 어느 직급에 있던지 간에 자신의 진로에 대해 고민하지 않는 사람은 거의 없을 듯합니다. 하지만 그 중에서도 가장 많은 고민을 해야하는 직군이 바로 소프트웨어 개발자인 듯한데요.
마이크로소프트웨어 10월호에 실린 기사 중 이와 관련된 재미있는 내용이 있어 옮겨봅니다.

-----------------------------------------------------------------------------------------------------
프로젝트를 수행하는데 있어 실력있는 개발자를 확보하는 것이 프로젝트 성공 요소 중에 하나이다. 프로젝트라는 것이 결국은 사람이 하는 것이기 때문에, 좋은 인재를 데려다가 프로젝트를 하는 것이 중요한 성공 요소이다. 그런데 우리나라 IT 프로젝트에서는 실력있는 개발자가 많이 투입되지 않는다. 그들은 모두 어디로 갔을까?


한용희 woom33@korea.com|현재 Microsoft Visual C# MVP이며, 여러 SW 개발 프로젝트에 참여했다. 다양한 SW 개발 프로젝트에 참여해 오면서 항상 더 나은 개발 방법에 대해 고민하고 있다.

몰입(flow)의 특징
지난 칼럼에서 긍정 심리학 분야의 대가인 시카고 대학의 칙센미하이(Csikszentmihalyi) 교수의 몰입(flow)에 대해 소개했다. SW개발자는 몰입 상태에 빠졌을 때 개발 생산성을 최대로 올릴 수 있다. 그러면 이 몰입 상태에 빠지기 위한 조건은 무엇일까? 칙센미하이 교수는 몰입 상태에 대한 9가지 특징을 분석하였다.

● Clear goals(명확한 목표) : 자신이 어떤 작업을 해야 하는지 명확한 목표가 있는 상태
● Concentrating and focusing(작업에 대한 집중) : 자신이 수행하는 작업에 대하여 완벽하게 집중하는 상태
● A loss of the feeling of self-consciousness(자의식의 상실) : 자신의 행동은 의식하지만 의식한다는 사실 자체는 의식하지 않음
● Distorted sense of time(시간 감각의 왜곡) : 시간에 대한 지각이 사라짐. 몰입 상태에서는 평소와는 다르게 시간을 빠르거나 느리게 왜곡해서 지각함
● Direct and immediate feedback (직접적이고 즉각적인 피드백) : 자신이 수행하는 작업에 대하여 제대로 수행하고 있는지 확인 가능하고 수정할 수 있는 상태
● Balance between ability level and challenge (도전과 능력의 조화) : 목표가 너무 쉽거나 어려운 것이 아닌 자신의 능력에 맞는 목표
● A sense of personal control over the situation or activity (자기 통제) : 스스로 통제할 수 있는 상태. 예기치 못한 상태가 발생하더라도 두려움을 느끼기보다 모든 것을 할 수 있다고 느끼고 그 상황에 대해 스스로 통제해 나가는 상태
● The activity is intrinsically rewarding (자기목적적인 보상) : 외부적인 보상이 아닌 내재적으로 보상 받는 것. 몰입에서는 몰입 행위 자체가 보상
● action awareness merging (행위와 의식의 통합) : 몰입 상태에서는 잘 하기 위해서는 어떻게 무슨 일을 해야 할 지 스스로 아는 상태

칙센미하이 교수는 인간이 행복을 느끼는 여러 방법 중에서도 특히 몰입에 대한 연구를 많이 수행해 왔다. 왜 과학자들이 특별한 보상이 없어도 연구를 하는지, 왜 예술가들이 식음을 전폐하면서 까지도 자기만의 창작 활동을 하는지, 왜 오픈 소스 개발자들이 아무런 보상이 없어도 개발에 참여 하는지. 이런 일련의 행위를 통해 몰입이 주는 기쁨과 행복에 대하여 연구를 해왔다. 개발자에게 있어서 한 가지 행복이란 바로 이 몰입 상태에 빠졌을 때 일 것이다. 관리자는 이러한 개발자의 특성을 잘 이해해서 개발자가 몰입에 빠질 수 있도록 환경을 조성해 준다면 프로젝트를 보다 성공적으로 이끌어 나갈 수 있을 것이다.

개발자의 커리어 패스(career path)

지난 7월 칼럼에서 실력있는 개발자는 일반 개발자보다 10배 이상 일을 더 잘한다고 하였다. 왜 그럴까? SW 개발이라는 일 자체가 경험주의적이기 때문이다. 대학에서 지식만 많이 배웠다고 뛰어난 개발자가 될 수 없다. SW 개발은 단순 지식이 아닌 오랜 경험을 필요로 하는 분야이다. SW 개발자 세미나에 참가해 보면 보통 데모를 많이 보여준다. 백문불여일견(百聞不如一見)이라 하여 직접 수행하는 데모를 보여주고 직접 해 보라고 한다. 백번 듣고 아는 지식 보다는 한 번 수행해서 아는 경험이 더 중요하기 때문이다. 그래서 SW 개발자를 장인이라고도 한다(‘소프트웨어 장인정신’이라는 책도 있음). 이렇듯 경험 많은 SW 개발자가 프로젝트 수행에 있어 매우 중요한 요소임에는 틀림없다.

그런데 프로젝트에서는 항상 신입 개발자가 많이 들어온다. 경험 많은 개발자들은 다 어디 갔는지 초급 개발자들이 많이 들어온다. 이러한 이유에는 하청에 따른 프로젝트 개발 비용 축소라는 현실이 반영되어 있다. 어떤 프로젝트를 갑이라는 업체에서 발주하면 보통 수주 능력이 있는 대형 업체 을이 수주한다. 을은 프로젝트를 분석해서 리스크가 큰 부분(원가를 맞추기 어려움)인 SW 개발은 병에게 하청을 준다. 병 또한 개발 프로젝트를 분석해서 자신이 수행할 수 없을 때에는 다시 정이라는 업체에게 하청을 준다. 이러한 과정에서 최종적으로 정이라는 업체에 떨어지는 프로젝트 금액은 최초 을에 비하여 매우 작아진다. 그러다 보니 정에서는 개발자를 투입할 때 비용 문제로 중/고급 개발자가 아닌 초급 개발자를 투입할 수밖에 없게 된다. 이것이 IT 프로젝트에 초급 개발자가 많이 들어올 수밖에 없는 이유다. 간혹 고급 개발자가 오는 경우도 있으나 직접 개발하기보다는 지원 형식으로 들어오는 경우가 많다.

1990년대 말 IMF가 터지면서 정부에서는 경제 살리기를 위해서 적극적인 IT 육성 정책을 펼쳤다. 우리나라가 IMF 관리 체제를 졸업하기 위해서 신성장 산업으로 IT를 선택하여 적극 육성한 것이다. 이때 정부의 지원을 받고 전국적으로 많은 IT 교육기관에서 SW 개발자를 양성해 냈다. 전공을 불문하고 단기 6개월짜리 과정만 이수 받으면 누구나 SW 개발자가 될 수 있었다. 그로 인해 시장에는 SW 개발자가 넘쳐나게 되었다. SW 개발은 어려운 직업이 아니었고, 전문가적인 직업도 아니었다. 누구나 6개월 교육만 받으면 할 수 있는 쉬운 직업으로 인식되었다. 그런데 그 많은 인력들이 한국 IT 프로젝트의 현실 앞에 좌절하기 시작했다. 소위 죽음의 프로젝트(Death march project)를 밤낮없이 수행하면서 한국 IT의 현실에 좌절해야만 했다. 그 중에 일부는 살아남아서 장인 개발자가 되기도 하고, 일부는 다시는 개발 안 한다고 관리자로 돌아서기도 하였고, 일부는 우리나라 IT에 좌절하며 이민을 가기도 하였으며, 이를 극복하지 못한 일부는 영원히 IT 업계를 떠나 다른 직업을 찾았다.

이렇게 한차례 홍역을 치른 후 SW 개발자가 많이 줄었다. SW 개발자는 3D 업종으로 취급되어서 서로 안 하려고 하면서 그 많던 IT 교육기관도 요즘에는 많이 없어졌다. 정부의 지원이 축소되고 지원자가 줄어들더니 제일 먼저 교육 기관들이 없어졌다. 작년에 IT 관련 세미나에 참석한 적이 있었는데, 강사가 현직 대학 교수님이었다. 세미나 참석자가 모두 IT 회사 근무자였는데, 교수님이 우스갯소리로 한 마디 했다. “여러분들이 SW 개발이 어렵다, 힘들다라고 하니, 요즘 신입생들이 컴퓨터공학과에 오지 않습니다. 다들 SW 개발은 안 하려고 합니다.” 컴퓨터 공학은 대학의 인기 학과에서 멀어진 지 오래다. 필자가 대학에 입학할 당시만 해도 컴퓨터공학과는 공대에서 최고 인기학과였다.

회사에는 매년 신입사원이 입사를 한다. 처음 신입사원으로 들어오면 SW 개발 업무나 시스템 관리 업무를 시키는데, SW 개발 업무는 서로 안 하려고 한다. SW 개발자라고 불리는 것도 싫어한다. 필자가 신입사원 때에는 개발과 관련된 각종 자격증 취득을 목표로 공부도 하고 취득도 하였는데, 요즘 신입사원은 개발 관련 자격증 보다는 관리나 감사분야 자격증 취득에 더욱 열심이다. 그들의 꿈은 개발자가 아닌 것이다.

왜 이렇게 되었을까? 우리나라 대부분의 IT 회사에서는 개발을 오래 할 수 있는 커리어 패스가 없다. 개발자는 직급이 올라가면 대부분 관리자로 변신해야만 한다. 그러다 보니 신입사원들은 개발자라는 직무를 잠시 스쳐가는 직무라고 생각해 전문적으로 개발하려고 마음을 먹지 않는다. 개발 업무는 열심히 하여도 알아주는 사람(관리자)도 없고, 어차피 진급하게 되면 개발 업무에서 손을 떼기 때문에 굳이 열심히 개발 기술을 늘리려고 하지 않는 것이다. 그러나 개발자와 개발자를 관리하는 관리자는 전혀 다른 직무이다. 많은 사람들이 착각하는 것 중 하나는 개발자와 개발 관리자를 같은 직무로 생각한다는 것이다. 보통 개발을 잘 하면 그 능력을 혼자 가지고 있지 말고, 여러 개발자를 관리하면서 전수해 주라는 의미로 개발 관리자를 시켜 버린다. 그런데 관리자라는 직무는 기본적으로 사람을 관리하는 직무이다. 사람을 관리하기 위해서는 몰입(flow)을 해서는 안 된다. 관리자는 여러 사람을 종합적으로 관리해야 하기 때문에 몰입을 해 버리면 그 팀은 중심점을 잃고 헤매게 된다.

그동안 개발만 하던 사람이 갑자기 사람을 잘 관리할 수 있을까? 물론 그런 능력이 있는 사람도 있지만 그렇지 않는 경우가 대다수다. 관리자가 되기 위해서는 권한을 위임할 줄 알아야 하며 팀원의 고민을 들어주고 코칭해 줄 수 있어야 한다. 또한 팀의 업무를 위하여 다른 팀의 협조를 이끌어 내거나 잘못한 것을 보더라도 용서하는 마음도 있어야 한다. 그래서 보통 개발자가 관리자가 되면 개발에 손을 놓게 된다. 또한 그래야만 관리를 잘 할 수 있다.

이것이 프로젝트에서는 실력있는 개발자가 부족한 두 가지 이유다. 그러면 이제 외국 사례와 비교하여 우리의 현실과 외국의 현실을 비교해 보자.

먼저 개발자의 현실을 가장 적나라하게 보여주는 부분이 채용 관련 부분이다. 기업에서 과연 어떤 개발자를 필요로 하는지 채용 정보를 살펴보면 그 현실을 알 수 있다. 먼저 외국 기업의 경우를 보자. <화면 1>은 채용 사이트로 유명한 www.monster. com의 미국의 채용 정보이다.

분류를 Computer/IT services에서 IT/Software Develop ment를 선택하여 본 화면이다. 구직 정보 중에 경력 레벨을 보면 대다수가 Experienced(경력자)를 선호하는 것을 볼 수 있다. 그 건수가 5000건이 넘는데 다른 건수와 차이가 너무 나서 비교할 필요가 없다. <화면 1>에서 Experienced(Non-...)이라고 하면서 가려진 부분이 있는데, 이를 확인해 보면 <화면 2>과 같다.

경력자이긴 경력자인데, 관리자를 찾는 것은 아니다. 관리자가 아닌 경력자는 5000건이 넘는 채용 정보가 있는데, 그 밑에 있는 관리자는 채용 정보 건수는 597건에 불과하다. 관리자보다는 기술 경력자를 훨씬 많이 채용한다는 것이다. 이 정보와 우리나라 채용 사이트 정보는 이렇게 분류하지 않기 때문에 단순 비교하기는 어렵다. 우리나라와 비교하기 위해 단순히 경력 년수를 기준으로 비교를 해 보기로 하였다. <화면 1>의 경력 년수를 보면 몇 년 이상 된 경력을 가진 사람을 뽑는다는 채용 건수가 나와 있다. 이 수치를 국내 대표적인 채용 사이트인 잡코리아와 비교해 보자(monster.com에서 국가를 Korea로 선택하면 잡코리아 사이트로 연결된다).

잡코리아에서 분류를 <화면 3>과 같이 응용프로그래머로 한정한 후에 <화면 4>와 같이 경력 년수에 따른 채용정보 건수를 계산해 보았다.

이를 바탕으로 몬스터닷컴과 잡코리아를 <표 1>과 같이 비교하였다.

미국과 한국의 채용 정보 건수가 다르므로 숫자의 절대적인 비교는 의미가 없다. 다만 비율을 비교하는 것은 의미가 있다. <그림 2>는 이를 비율로 표시한 것이다.

우리나라의 경우 과반수가 2년 이상의 경력자를 선호한다. 반면에 미국의 경우에는 2년, 5년, 7년 이상의 경력자도 많이 채용하는 것을 확인할 수 있다. 우리나라에서는 오랜 경력 SW 개발자를 잘 안 뽑는다는 현실을 보여주는 부분이다.

필자는 현재 마이크로소프트 Visual C# MVP로서 해당 분야의 전문가로 활동 중이다. 마이크로소프트에서는 매년 이러한 전문가들을 전 세계적으로 모아서 세미나를 개최한다. 이를 MVP 글로벌 서밋이라고 하는데 매년 미국 마이크로소프트 본사가 있는 시애틀에서 열린다. 필자가 처음 이 행사에 참가했을 때 충격적이었던 점은 해당 분야의 전문 개발자인  MVP 중 백발의 개발자가 많았다는 것이다.

사용자 삽입 이미지

SW 개발자라는 직업 자체가 새로 생겨난 직업이다 보니 많은 사람들이 SW 개발 직무의 특징에 대해 잘 이해하지 못 하는 경향이 있다. 필자는 SW 개발자를 비행기 조종사에 비유하고 싶다. 비행기 조종사는 학교에서 이론만 배운다고 누구나 비행기 조종을 잘 할 수 있는 것이 아니며, 학원에서 6개월 교육 받는다고 누구나 비행기 조종을 잘 할 수 있는 것도 아니다. 비행기 조종이라는 직무는 기본적으로 경험주의적이다. 경험이 있어야만 잘 할 수 있는 직무이다. 기상청 날씨 예보관도 이와 흡사하다. 아래 박스는 2009년 2월 9일자 연합뉴스의 일부이다.

기상청의 잦은 인사이동이 오보를 낳는 원인 중 하나라는 분석이 나왔다.

9 일 고려대 행정학과 대학원 조원범씨의 석사학위 논문에 따르면 2004∼2007년 기상청 예보상황과의 평균 인력 31명 중 67%인 21명이 매년 전출된 것으로 나타났다. 예보상황과는 컴퓨터가 수집한 기초자료들을 토대로 가장 확률이 높은 기상 시나리오를 산출하는 부서다. 또 예보상황과의 평균근속 기간은 2000~2003년 22개월에서 2004~2007년 13개월로 확연히 줄어든 것으로 드러났다. 이 기간의 실제 예보 적중률을 보면 호우, 대설, 태풍, 황사 등 4대 기상 특보의 정확도가 2000~2003년 83.7%에서 2004~2007년 78.1%로 떨어졌다.

조 씨는 “순환보직은 다양한 경험을 쌓게 하는 장점이 있지만 과업에 대한 전문지식을 축적해 활용하기 힘들다는 단점이 있다”면서 “특히 예보상황과의 경우 장기간 한 곳에서 일하며 기술의 숙련성을 높여야 하는 부서”라고 지적했다. 그는 또 “2000~2003년 박사학위를 받은 예보관이 28%, 석사는 72%를 차지했던 반면 2004~2007년에는 박사 11%, 석사 68%로 줄었다”며 “인력의 전문성 약화가 두드러지고 있다”고 주장했다. 조 씨는 “그간 최신 기상기기 도입에도 오히려 오보가 점점 잦아지는 것에 대해 많은 사람이 의구심을 가졌다”며 “예보의 정확성을 높이기 위해서는 인사운영의 효율성 증대와 충실한 인력교육에도 힘써야 한다”고 주장했다.

개발자의 미래
우리나라에서 전문 개발자가 많이 육성되지 못하는 이유를 외적인 요인과 내적인 요인으로 설명하였다. 외적인 요인으로 피라미드로 이어지는 하청 구조를 설명하였는데, 정부에서는 분리발주라는 제도를 통해서 이 부분을 보완하려고 하고 있다. 내부적인 요인으로는 개발자의 커리어 패스가 없다는 것을 설명하였는데, 한국소프트웨어진흥원에서는 ‘SW직무수행능력표준’이라는 가이드를 2007년도부터 만들어서 보급하고 있다. 이 부분에 대한 내용은 나중에 소개할 기회가 생긴다면 소개하겠지만, 기본적인 내용은 정보통신산업진흥원에서 확인할 수 있다. 현재 많은 사람들이 이러한 문제점을 인식하고 보완하려고 노력하고 있다. 현재의 부족한 현실보다는 앞으로의 미래는 보다 나아질 수 있다는 희망이 있다. 언젠가는 전문 개발자로 대접받고 살 수 있는 그 날이 오기를 기다려 본다.


참고자료
1. 소프트웨어 공학의 사실과 오해, 로버트 L. 글래스, 2003
2. 조엘 온 소프트웨어, 조엘 스폴스키, 2004
3. Professional 소프트웨어 개발, 스티브 맥코넬, 2004
4. 똑똑하고 100배 일 잘하는 개발자 모시기, 조엘 스폴스키, 2007
5. 스크럼-팀의 생산성을 극대화시키는 애자일 방법론, 켄 슈와버, 마이크 비들, 2002
6. 피플웨어, 톰 디마르코, 2003

출처 | 아이마소