한국마이크로소프트 최고기술임원 김명호

 국내 소프트웨어 개발자들에게 앞선 기술과 다양한 정보교류의 기회를 제공하는 대규모 기술 컨퍼런스인 ’마이크로소프트 데브데이 2007’- ‘행복한 개발자 세상’이라는 주제로 진행된 행사에서 필자는 ‘10년 후를 내다보는 개발자의 커리어 개발’이라는 제목으로 기조 연설을 한 바 있다. 다양한 경력을 가늠하게 하는 여러 연령층의 참석자들의 진지한 표정과 잦은 고개 끄덕임은 필자가 전달하려던 내용이 큰 공감대를 형성하고 있음을 짐작할 수 있었다. 소프트웨어 개발이 3D 직종의 하나로 자리매김된 오늘의 현실에서 대체 어떤 개발자가 행복하단 말인가?

필자는 수년 전 ‘10년 후’라는 접두어 제목으로 출간된 여러 서적의 제목에서 모티브를 얻어, 10년 후에도 여전히 개발에 종사할 수 있는 사람이야말로 진정 행복한 개발자일 수 있다는 생각을 해 보았다. 그 다음은 자연히 어떻게 하면 10년 후에도 개발자로 남아 있을 수 있는가, 아니 지금보다 더 유능하고 인정받으며 보람을 느끼는 행복한 개발자가 될 수 있는가에 관한 생각으로 옮겨가고 있었다.

 개발자는 코딩, 테스팅, 디버깅, 이식, 성능, 설계 개선, 스타일 등 다양한 소양을 갖춘 전문인을 의미한다. 그러나 대다수의 컴퓨터과학이나 프로그래밍 과정에서 이들 모두를 교육하지는 않으므로 유능한 개발자가 되기 위해서는 스스로 학습하거나 경험을 통해 학습하여야 한다. 개발자는 타이피스트처럼 단순히 키보드를 빠른 속도로 조작하기만 하면 되는 사소한 직업이 아니라 고도의 전문성을 요구하는 직업이다.

개발자에 대해 흔히 접하는 오해는 아키텍트로 이행하는 중간단계라고 생각하는 것이다. 물론 아키텍트가 되기 위해서 개발에 대한 이해가 필요하기는 하지만 건설 현장에서 오래 일한 경험이 있다고 저절로 건축설계사가 될 수 없는 것처럼 개발 경험이 아키텍트로의 이행을 보장하지 않는다.

제대로 된 개발자가 되는 것은 생각보다 매우 어렵다. 소프트웨어 개발 현장에서 흔히 접하는 능력지수를 보면 가장 유능한 개발자와 가장 무능한 개발자 사이에는 무려 20여배의 생산성 차이가 있다고 한다. 결국 10년 후에도 개발자로 남아 있으려면 무엇보다 유능한, 지금보다 훨씬 훌륭한 개발자가 되어야 할 것이다. 결국 행복한 개발자가 되기 위해서는 먼저 훌륭하고 유능한 개발자가 되어야 한다.

훌륭하고 유능한 개발자가 되기 위해서는 무엇을 준비해야 할까? 필자는 경험상 크게 4가지의 소양이 필요하다고 믿는다. 1. 기본을 충실히 하라, 2. 지식의 포트폴리오를 유지하라, 3. 분야 전문가가 되든지 해박한 지식의 소유자가 되라, 4. 학습을 두려워하지 마라.

모든 사람이 개발자의 재능을 타고 난 것은 아니다. 개발자는 재능을 가진 사람들이 더 큰 능력을 발휘할 수 있는 전문직종이다. 재능이 있는 사람들은 앞에서 열거한 소양을 부담으로 느끼지 않고 오히려 흥미와 즐거움으로 느낄 것이다.

 1. 기본을 충실히 하라

기본이란 어떤 유형의 개발에도 활용될 가능성이 있는 핵심 이론과 기술을 의미한다. 개발의 전문성을 고려할 때 기본은 단순하거나 쉬운 내용이 아니라 심오하고 폭넓은 이론으로 구성돼야 할 것이다. 프로그래밍 이론, 개발의 모든 요소들에 대한 입체적 이해, 프로그램의 정확성, 알고리즘, 프로그래밍 언어, 운영체제, 컴파일러 등의 학문은 기본 가운데서도 특히 기본이 되는 것이므로 한치의 소홀함도 없이 충실히 학습해야 한다.

개발의 기본이 되는 이론은 특정 언어, 제품, 업체에 관련 없이 적용할 수 있어야 한다. 소프트웨어 개발을 손쉬운 취업 수단으로 생각하여 현장에서 당장 적용할 수 있는 기술을 학습한다는 미명 아래 특정 제품이나 업체의 기술만 배워 현장에 투입되는 경우를 자주 보게 된다. 물론 이런 기술도 절대적으로 필요하지만 기본이 충실하지 않은 사람에게 소위 현장 기술은 모래 위의 누각에 불과한 것이다. 즉 현장기술은 기본이 충실한 사람을 위한 부가적 학습 요구이지 단지 그것만 학습하면 된다는 것은 매우 위험한 발상이다.

 2. 지식 포트폴리오를 구성하라

포트폴리오를 구성하는 것은 재테크에서의 상식이다. 기본적으로는 이익이 적더라도 안정적인 대상에 투자하지만 큰 이익을 기대해 모험적인 투자를 하기도 한다. 모험적 투자에서 큰 손실이 발생하더라도 안정적 투자 대상으로 손실을 어느 정도 보전할 수 있으며, 모험적 투자가 성공할 경우 안정적 대상의 적은 이익을 크게 보충할 수 있기 때문이다.

개발자의 경우도 마찬가지이다. 보편적 주류 기술에만 매달리지 말고 남들이 크게 관심을 보이지 않지만 조만간 크게 각광받거나 틈새 시장에서 매우 요긴하게 사용될 가능성이 있는 기술에도 투자하는 지혜가 필요하다. 주류 기술에 투자하지 않으면 남들이 모두 알고 있는 것을 본인만 모르고 있는 부끄러운 상황에 처할 수 밖에 없다. 모든 개발자가 닷넷과 자바를 논하고 있는데 혼자서 이들을 무시하는 것은 올바른 처신이 아니다. 또한 남들과 차별화되는 본인만의 기술이 없으면 자신의 유능함을 손쉽게 보일 수 있는 기회를 얻기 어렵다.

몇 년 전만 하더라도 병행 혹은 병렬 프로그래밍 언어는 실험실에서나 사용되는 지적 유희의 도구에 불과하였으나 멀티코어 프로세서가 널리 보급되면서 주류 프로그래밍 분야로 진입하고 있다. 과거에 이 분야에 모험적 투자를 했던 개발자는 오늘날 크게 인정받을 수 있는 기반을 마련한 것이다.

 3. 분야 전문가가 되든지, 해박한 지식의 소유자가 되라

개발자는 희소성을 입증해야만 자신의 가치를 드높일 수 있다. 특정 기술에 대한 거의 절대적 권위를 가진 전문가가 되거나, 여러 부분 기술들을 체계적이고도 종합적으로 이해할 수 있는 해박한 지식을 가진 개발자가 될 수 있다면 자신의 희소성을 보이는 것이 보다 쉬울 것이다. 물론 분야 전문가와 해박한 지식을 겸비한 개발자가 있기는 하지만 대다수의 개발자는 이들 가운데 어느 하나에 주력하는 것이 보다 현실적인 선택이다. 이 소양에서 특히 경계해야 할 것은 시대적으로 더 이상 요구되지 않는 과거 기술에 대한 매우 전문적 지식에 얽매여 있거나, 실제 문제 해결에 적용하기 어려울 정도로 얕은 수준의 피상적 지식에 만족하는 잘못된 태도이다. 잘못된 지식은 신속하게 오답을 구하도록 프로그램을 수정하고도 시스템을 최적화했다고 주장하는 터무니없는 상황에 이르게 하기도 한다.

 4. 학습을 두려워하지 마라

하루가 멀다 하고 새로운 기술이 쏟아져 나오는 정보기술과 소프트웨어 개발 분야임에도 불구하고 개발의 기본이 되는 이론과 기술은 수십 년의 세월이 지난 오늘에도 크게 변하지 않았다는 것은 매우 놀라운 일이다. 이는 그만큼 소프트웨어 개발을 위한 기본 이론이 충분히 성숙하고 탄탄한 토대 위에 구축되었다는 것을 의미한다. 그러나 소프트웨어 개발 대상이 변함에 따라 주변 기술은 수시로 변화하고 있다.

새로운 기술을 학습해야 하는 것은 개발자의 숙명이다. 기쁜 마음으로 기꺼이 새로운 기술을 학습하는 것은 행복한 개발자의 필수 덕목이다. 달리 생각하면 새로운 기술의 출현은 다른 개발자와 차별화할 수 있는 모험적 투자 대상이 하나 더 있음이 아니던가. 다행히 기본에 충실한 개발자는 주변 기술을 빠른 속도로 학습할 수 있고, 기본은 크게 변하지 않는다는 점을 고려하면 학습 효율과 의욕은 기본을 얼마나 충실히 했는가에 달려 있다고 해도 과언이 아닐 것이다.

 지금까지 소개한 소양이 도무지 적성에 맞지 않다면 날이 갈수록 안 그래도 어렵기만 한 개발자의 길이 더욱 험하게만 느껴질 것이다. 교육과 훈련을 통해 주입할 수 있는 능력은 한계가 있으므로 차라리 다른 직종을 택했더라면 더 보람을 느낄 수 있는 사람에게 힘들고 험한 개발자의 길을 강요하는 것은 불행의 씨앗을 심는 것이다.

10년 후에도 개발자로 남아 있기를 바라는가? 그 해답은 기본에 충실하고, 지식의 포트폴리오를 가지고 있으며, 분야 전문가나 해박한 지식을 가지고 있으며, 학습의욕에 넘치는 보다 유능한 개발자가 되는 것이다.

 

 

 

 

저작권자 © 디지털투데이 (DigitalToday) 무단전재 및 재배포 금지