본문 바로가기

=====지난 칼럼=====/채진석의 '컴 ON'

CNN 머니가 꼽은 미국 최고의 직업 '소프트웨어 아키텍트'

채진석(인천대학교 컴퓨터공학과 교수)

 
코더(coder), 프로그래머(programmer), 소프트웨어 아키텍트(software architect), 구루(guru). 이것은 소프트웨어 개발자들을 구분하는 용어이다. 이 사람들은 모두 컴퓨터 프로그램을 만드는 코딩이라는 작업을 하지만, 각각의 용어가 의미하는 바는 조금씩 다르다.

일반적으로 코더는 다른 사람이 설계해 놓은 설계서대로 소프트웨어를 개발하는 사람을 말하고, 프로그래머는 자신만의 신념이나 철학을 가지고 소프트웨어를 창조하는 사람을 의미한다.
소프트웨어 아키텍트는 소프트웨어의 전체적인 구조를 이해하여 소프트웨어를 설계할 수 있는 능력을 가지고 있는 사람을 말하고, 구루는 인도에서 유래한 용어로서 자신의 신념과 철학을 행동으로 실천하는 소프트웨어 업계의 최고 스승을 의미한다
구루는 아무에게나 붙여주는 호칭이 아닌데, 이 시대의 대표적인 구루로는 소프트웨어는 모두 함께 나누어야 한다는 철학에 기초하여 자유 소프트웨어 재단을 창시한 리처드 스톨만을 들 수 있다

소프트웨어 개발자 중에서 소프트웨어 아키텍트는 소프트웨어의 완성도를 높이는 중요한 역할을 하고 있다. 설명서 없이도 사용법을 직관적으로 이해할 수 있어서 사용하기 편리하고, 모든 오류 가능성을 분석하여 오류 발생률을 줄인 소프트웨어를 좋은 소프트웨어라고 할 수 있다면, 실력 있는 소프트웨어 아키텍트의 손길이 닿은 소프트웨어는 좋은 소프트웨어가 될 가능성이 크다.

소프트웨어 아키텍트는 제품을 넘어 사용자와의 상호작용을 고민한다. (출처 www.bbv.ch)

 
최근 IT 제품에서 차지하는 소프트웨어의 비중은 점점 더 높아지고 있다. 실제로 휴대폰을 비롯한 최신 IT 제품을 사용하다 보면 소프트웨어의 미세한 차이가 사용자 만족도에 큰 영향을 미치는 경우를 많이 보게 된다. 실제로 아이폰과 갤럭시S, 시리우스 등의 휴대폰을 사용해 본 사람이라면 제품의 질에 영향을 미치는 중요한 요소가 소프트웨어임을 실감할 수 있을 것이다.

구글에서 유람선을 만들고 애플에서 비행기를 만드는 것을 상상할 수 있겠는가? 만일 실제로 이런 일이 일어나게 된다면 결국은 소프트웨어가 제품의 질을 좌우할 것이 확실해 보인다. 하드웨어는 외주 회사를 통해 만들면 되므로 질적인 면에서 큰 차이가 없을지도 모르지만, 구글이나 애플에서 일하는 최고의 소프트웨어 아키텍트에 의해 만들어지는 소프트웨어는 많은 차이가 날 것임이 틀림없기 때문이다.

건물을 지을 때 전문 설계사무소를 통해 설계를 먼저 하는 것은 상식 중의 상식이다
. 그렇다면 인류는 집을 짓기 시작한 때부터 설계를 먼저 했을까?
초기에는 전문 설계사가 없었을 것이니 아마 설계도도 없이 대충 집을 지었을 것이다. 그렇게 집을 짓다 보면 여기저기 물이 샌다든지 아니면 건물 자체가 무너진다든지 하는 문제가 발생하게 되고, 차츰 전문 설계사를 통해 설계를 먼저 하는 관행이 정착되었을 것으로 보인다.


2008년 열린 소프트웨어 아키텍처 컨테스트의 포스터. (출처 www.topcoder.com)


소프트웨어도 집을 짓는 것과 마찬가지로 전문 설계사를 통한 설계를 먼저 해야 하는데, 전문 소프트웨어 아키텍트에 의해 설계되지 않고 만들어지는 소프트웨어는 여러 가지 면에서 문제가 발생할 수밖에 없다.
최근 교육행정정보시스템(NEIS)에서 발생한 오류를 보면 과연 이 시스템이 전문 소프트웨어 아키텍트에 의해 설계가 되었는지 의문이 든다. 이런 문제를 근본적으로 해결하기 위해서는 대형 소프트웨어 개발 과제의 경우 소프트웨어 전문 설계사무소를 통해 설계를 먼저 한 다음, 여기서 나온 설계 문서에 따라 프로그래머가 코딩 작업을 하도록 의무화할 필요가 있다.
실제로 전문 소프트웨어 아키텍트에 의해 작성된 설계 문서는 어떤 프로그래머가 어떤 프로그래밍 언어를 사용하여 코딩을 한다고 하여도 동일한 결과를 출력할 것이다.

CNN 머니라는 사이트에서는 매년 미국의 직업들 중 최고의 직업을 발표하고 있는데, 2010년 최고의 직업으로 선정된 것이 소프트웨어 아키텍트이다.
그런데 한 가지 흥미로운 사실은 소프트웨어 아키텍트가 연봉을 가장 많이 받는 직업은 아니라는 것이다. 미국에서 연봉을 가장 많이 받는 직업은 마취과 의사이며, 외과 의사, 응급실 의사, 산부인과 의사 등 의료 업계 종사자들이 상위권을 형성하고 있고, 소프트웨어 아키텍트는 평균 연봉이 약 119000달러(12000만원) 정도로 14위에 불과하다.

1등을 꿀꺽

 
그럼에도 불구하고 소프트웨어 아키텍트가 최고의 직업으로 선정된 것은 연봉 외에도 성장 가능성과 함께 직업상 발생하는 스트레스나 여가 생활과 같은 삶의 질을 종합적으로 판단한 결과로 보인다. 참고로 연봉 1위인 마취과 의사의 경우 최고의 직업 순위에서는 68위에 머물렀다.

수많은 소프트웨어 개발자들이 소프트웨어 아키텍트가 되기를 원하지만, 아무에게나 소프트웨어 아키텍트라는 호칭을 허락하지는 않는 것 같다. 진정한 소프트웨어 아키텍트가 되기 위해서는 우선 프로그래밍에 능통해야 하며, 기술적인 면뿐만 아니라 비즈니스에 대한 감각도 있어야 하고, 수년간의 실무 경험과 지속적인 자기 계발이 필요하기 때문에 결코 쉬운 일이 아니다.
그런 의미에서 소프트웨어 아키텍트가 되는 일은 평생을 걸고 도전해 볼만한 가치가 있다.

(2011년 8월8일자 경향신문에 실린 글입니다.)