한국의 소프트웨어 산업이 발전하기 위해서는 기업의 역할이 가장 중요하다고 생각한다. 현실감 있는 정부의 정책도 있어야 하고, 소프트웨어 개발자들의 열정도 있어야 하지만 기업이 그 중심에 있으니 소프트웨어 산업의 문화와 환경에 끼치는 직접적인 영향이 가장 크다.
소프트웨어 엔지니어로 오랫동안 근무하면서 새로운 기술을 습득하기 위해 필자가 택한 방법 가운데 하나가 컨퍼런스나 세미나에 가는 것이다.
수년 전의 일이다. 어느 소프트웨어 신기술 세미나에 참석한 적이 있는데 20대나 30대로 보이는 젊은 층밖에 없는 것이었다. 나와 같은 연령대의 사람은 한명도 없는 것이다. 왜 40대, 50대의 기술자는 없는 것인가 다시 생각해 보았다. 미국과 같은 분위기를 생각하고 갔다가 앉아 있기가 어색해서 중간에 나왔다.
그러면서 생각해 보니 미국에서는 빌 게이츠 같은 최고 경영자들이 제품데모도 하고 프리젠테이션도 직접 하는데 한국에서는 최고경영자가 직접 프리젠테이션 하는 경우를 본 적이 없다. 그럴 수 있는 능력도 없을 것이다. 작성해온 보고서나 보고 프리젠테이션을 듣기만 했지 실제 사용할 수 있는 수준의 경험은 하지 않기 때문이다.
소프트웨어 회사의 경영진이 전문가가 아니기 때문이다.
사회에 잘못된 통념이 있다. 어느 회사나 왜 승진하려면 꼭 관리가 되어야 하는 것일까. 나이 들면 젊은 사람들과 신기술에서 경쟁하기 힘들다고 한다. 나는 동의하지 않는다. 이유는 다른 곳에 있다. 기술습득에 시간을 소비하지 않고 관리업무에 시간을 소비하기 때문이다.
관리업무도 하고 기술 습득도 하려면 뒤떨어 질 수 밖에 없다. 실제 소프트웨어 회사의 현황을 살펴보자. 회사의 종류를 살펴보면 단발성의 프로젝트를 주로 하는 SI 업체를 제외하면 정말 경쟁력 있는 패키지 소프트웨어를 만드는 기업은 몇 손가락에 꼽힌다.
SI 업체는 수 많은 단발성의 프로젝트를 하므로 관리쪽이 더 중요하다. 기술자는 찬밥신세가 되기 쉽다. SI 업체가 아니고 패키지를 개발하는 소프트웨어회사에서도 소프트웨어 엔지니어로 시작해서 능력있는 사람들은 대부분이 서서히 관리직으로 넘어가게 된다. 관리직으로 넘어가지 못하면 능력을 인정 받지 못한 것으로 인정해 회사를 자의든 타의든 그만 두는 경우가 많다.
사농공상의 문화가 많은 영향을 준 듯하다. 이러한 전통문화와 굴뚝산업에 익숙한 경영진들의 경영방식 때문에 소프트웨어산업은 악순환을 거듭할 수 밖에 없다. 전문가의 가치를 모르니 전문가가 생겨나기 어렵고 전문가가 없으니 좋은 제품을 만들 수가 없고 그러니 경쟁력이 떨어져 장기적으로 성공하기 어렵게 된다.
미국의 소프트웨어회사를 방문하게 되면 주시해 볼 것이 있다. 주요 기술직에 있는 사람을 만나게 될 때 잘 주시해 보면 대개 나이가 많은 사람들임을 알게 될 것이다. 40대에서 50대, 60대도 눈에띈다. 그런 사람들의 명함에는 보통 'Fellow Engineer', 'Chief Engineer', 'Chief Scientist'라고 쓰여 있다.
이러한 사람들이 회사에서 하는 역할은 기술적인 중요한 결정을 담당하게 되는데 관리쪽 일은 전혀 안 하는 경우가 대부분이다. 관리쪽 일을 하게 되면 이미 기술자로서의 능력을 조금씩 상실하고 있는 것이다. 회의에서 만나더라도 이런 사람들의 결정이 가장 중요하다는 것을 명심해야 한다.
새 제품을 기안하는 사람은 마케팅부서 같은 기획조직에서 시작할 지 모르나 그 기안의 기술적 승인은 이런 최고 기술자가 한다. 물론 시장성, 수익성 같은 분야는 그 분야의 전문가가 추가로 판단할 일이다. 기술적으로 승인이 안 나면 프로젝트는 취소될 수 밖에 없다. 기술적으로 안 된다는데 영업에서 무대포로 밀어 붙일 수는 없다. 이런 기술자는 회사의 운명을 좌우할 수 있는 직위이다.
소프트웨어 회사에서 최고 기술자라고 하면 적어도 코딩 같은 바닥업무에서도 손을 떼지 말아야 한다고 생각한다. 손을 떼는 순간부터 서서히 현실감이 떨어지기 시작하고 판단능력도 떨어지기 시작한다. 특히 새로운 기술이 나오면 꼭 실제 체험을 해서 익혀야 한다.
이러한 이유로 최고 기술자가 되기 위해서는 관리에 시간을 소비할 여유가 없다. 대부분의 소프트웨어회사에서 경험 몇 년 없는 엔지니어들이 실제 개발업무를 하고 주요 결정은 프로젝트 매니저(PM)라고 부르는 상사가 내린다. PM은 대부분 실제 개발업무에는 참여하지 않는 사람들이다. 물론 PM들의 대부분은 과거에 엔지니어의 역할을 해온 경우가 대부분이다. 하지만 그건 과거 일이고 승진해서 PM이 되었을 것이다.
PM이 상사라는 이유로 엔지니어들은 기술적으로 잘못된 결정이라도 따르는 수 밖에 없다. 기술지식이 모자라는 사람이 상사라는 이유로 결정을 내린다. 최고기술이사 혹은 CTO라 해도 이미 관리직으로 많이 편향되어 있는 경우가 대부분이다.
엔지니어의 고충을 이해하고 엔지니어들을 기술적으로 가이드하며 문제가 생겼을 때 코딩까지도 뛰어들어 해결할 수 있는 능력이 있는 진정한 CTO는 드물다. 그런 CTO가 존경받는 환경이 되어야 기업이 성공할 수 있다. 일단 진정한 전문 기술자가 있어야 하고 관리자는 전문가가 원하는 환경을 만들어 주는데 더 많은 노력을 해야지 기술자를 좌지우지하려고 노력을 해서는 안된다.
역지사지라고 기술자한테 시장조사하고 손익분석하라고 하면 제대로 할 수 있겠는가? 기술적인 판단은 기술자에게 맡겨야 하고 시장조사나 손익분석은 그 분야의 전문가한테 맡겨야 한다.
기술외의 다른 부분도 회사가 성공하기 위해서는 필수조건이다. 하지만 그 중에서 중요한 하나를 선택하라고 하면 당연히 기술자이다. 기술자는 생겨나는데 가장 오래 걸리고 어렵기 때문이다. 그래서 미국의 소프트웨어 회사들이 경영상태가 나빠져 감원을 하더라도 연구개발부 사람들은 남겨 놓는다. 또 연구개발부 중에도 경륜있는 최고의 기술자들은 절대적으로 남겨 놓는다.
그런 고급기술자는 관리해야 할 부하 직원만 없을 뿐 최고의 연봉을 받으며, 기술에 관한한 최고의 권위와 결정권을 갖는 사람들이다. 돈만 주면 언제든지 개발자를 구할 수 있다고 하는 것은 전문가가 아닌 초보개발자에 해당되는 얘기이다.
소프트웨어기술자들이 언론매체에서 '안티 IT'라는 말을 만들어 절망적인 상황을 표현했듯이 지금과 같은 기업문화에서는 현재 소프트웨어 엔지니어들의 미래는 밝지 않다. 모두 관리자의 길로 빠질 수 밖에 없고, 기술결정시에 자기 지식으로는 어려우니까 아래 초급자나 중급자의 설명만 듣고 표면적으로 판단할 수 밖에 없다. 그렇게 해서는 올바른 결정이 나올 수도 없고 기술적으로 경쟁력 있는 제품이 생산될 리 만무하다. 장님 문고리 만지는 식의 운에 맡긴 결정이 될 수 밖에 없다.
SI 업체와 같이 수주를 받아서 개발해 주는 회사는 되도록이면 저렴한 임금의 초급엔지니어들을 사용해서 이윤을 남기는 것이 최대의 목적이니까 하청업체에다가 헐 값에 넘기게 되고 하청업체는 당연히 값싼 엔지니어를 고용할 수 밖에 없는 것이 소프트업계에 종사하면 누구나 다 아는 현실이다. 이러한 환경에서 회사에서 최고의 연봉과 지위를 보장 받는 전문기술자들을 고용한다는 것은 어려울 수 밖에 없다.
필자가 소프트웨어 개발업체를 컨설팅할 때마다 꼭 보장받는 것이 있다. 관리업무를 하지 않고 기술 트랙으로 성장해서 회사 최고의 기술이사가 될 수 있는 길이 있어야 희망이 있다고 말한다. 그렇지 않으면 단발성 프로젝트나 하면서 싼 임금으로 박한 이윤 남기면서 연명할 수 밖에 없다고 말한다.
기술이사는 부하직원을 관리하는 시간도 소비하지 말아야 한다. 단 기술적인 결정에 관해서는 최고의 권위를 부여해야 한다. 이러한 회사체계 없이는 장기적으로 기술력 없이 생존할 수 없다고 강조한다. 아무리 좋은 프로세스와 방법론을 컨설팅해야 이를 실천할 수 있는 기술자가 없으면 효과가 떨어짐은 말할 것도 없다.
기술전문가를 열심히 키워낸다고 해도 그들에게 높은 임금과 절대적인 지위를 보장해 주어야 소프트웨어의 앞날이 있다. 소프트웨어 기술자는 기술을 가졌다는 것 만으로 지위와 권위를 보장 받아야 하고 존경 받아야 한다. 관리능력이 필요한 것도 아니고 영업사원과 같이 성격이 좋을 필요도 없다. 정확한 기술판단을 할 수 있는 것이 더욱 중요하다.
많은 소프트웨어 프로젝트의 경우에 성능이 떨어진다고 비싼 하드웨어를 추가로 구입하는 것을 본다. 성능 문제의 거의 모두가 하드웨어보다는 소프트웨어 문제이다. 하드웨어는 아무리 좋은 기계를 갖다 놓아도 기껏 몇 배 향상되면 다행이다.
소프트웨어는 잘못 개발하면 기하급수적으로 기능이 저하된다. 이 상황에 이르면 이미 고치기도 어렵다. 그냥 하드웨어를 추가해 임시로 해결하다가 차기버전 개발한다고 또 다시 예산을 들여 하드웨어를 산다. 그리고 똑 같은 시행착오가 계속된다.아무도 이 잘못을 모르고 그냥 넘어가게 된다. 이런 문제가 모두 전문기술자가 없어서 생기는 현상이다.
초급자가 아무리 오랜 시간을 연구해도 알 수 없는 것이 있다. 전체를 볼 수 있는 경험과 지식이다.
전문기술자가 성장할 수 있게 회사가 정책과 문화적으로 지원해야 한다. 그걸 몰라서 못하냐고 할 지 도 모르나 가장 중요한 정책을 먼저 수행할 수 없다면 악순환이 계속될 수 밖에 없다.
소프트웨어 기술자들이 기술직에 전념할 수 있는 환경을 기업이 제공해 줄 수 있다면 소프트웨어 발전의 기초는 세워진 것이다. 소프트웨어가 발전하기 위해서는 천재 경영자가 필요한 것이 아니고 소프트웨어 기술자가 우대 받고 존경받는 기업문화가 가장 중요하다. 그러면 좋은 품질의 소프트웨어는 저절로 나온다.
/김익환 SW컨설턴트 ik_kim@yahoo.com
--comment--
첫 번째 댓글을 작성해 보세요.
댓글 바로가기