소프트웨어 아키텍트라는 직무는 소프트웨어 시스템의 퀄리티를 높이기 위한 역할을 하는 일입니다. 시스템 개발을 할 때 기능을 개발하는 것은 개발자들이 합니다. 하지만 예를 들어서 어떤 기능을 개발하는데 안정성이 필요한 시스템이라고 한다면 안정성을 위해서 어떤 구조와 내부 연관관계를 갖도록 할건가 하는 것을 결정하는 일을 하는 것입니다. 소프트웨어 아키텍처는 기록으로 표현되는 구조를 말하는 것이고 이 구조를 만드는 사람이 아키텍트 입니다. 그리고 구조를 만드는 일을 하는 것을 아키텍팅이라고 합니다. 비슷하지만 조금은 다른 뜻을 갖고 있어요.
지금까지 해오신 업무에 대해 설명 부탁 드립니다.
처음에는 소프트웨어 개발을 전담하는 벤처회사에 있었어요. 벤처에서 한 10년 가까이 개발 업무를 하다가 외국계 기업에서 잠시 일을 했었죠. 미국에 본사가 있고, 현재 오라클이랑 합병된 회사인 썬 마이크로시스템즈로 갔죠. 그 회사로 갔다가 이제 2006년도에 SK C&C에 왔어요. 제가 올 때는 회사 내에 아키텍트의 조직이 없었는데, 선마이크로시스템즈에서 제가 맡았던 일이 자바 기술에 대한 아키텍트였죠. 그런데 C&C내에 아키텍트 조직을 만들고 역량을 높이는 활동을 할 사람을 뽑는다고 해서 제가 이 회사로 들어오게 됐습니다.
전공이 전자공학이셨는데, 이 일을 하는데 있어 전공이 중요한가요?
전자 공학 중에서도 통신분야를 전공했는데, 통신이라고 하는 업무의 영역자체가 IT하고는 땔래야 땔 수 없는 관계에요. 현재 하고 있는 대부분의 통신 서비스는 소프트웨어적인 것을 포함하기 때문에 밀접한 관계가 있어요. 그리고 통신과 소프트웨어가 사실 원하는 능력은 달라요. 통신은 통신을 위해서 필요한 기술들과 도메인 날리지(리포터 설명 : 어떤 특정영역에 국한된 지식)을 필요로 하고, 소프트웨어 개발은 도메인에 대한 개발방법 ,기법, 언어, 라는 다양한 분야에 관계가 되기 때문에 도메인에 대한 지식과 프로그래밍 자체의 스킬이 동시에 필요하죠.
소프트웨어 아키텍트로서 중요하게 생각하시는 포인트가 있다면?
제가 하는 일이 시간이나 비용에 제한이 있어요. 제한된 시간과 비용 안에서 최선의 선택을 해야 하는데 이것이 상당히 어려운 문제입니다. 제약조건을 무시할 수는 없지만 가능하면 결과물이 제대로 만들어질 수 있도록 노력하는 것이 가장 중요해요. 이 때문에 시간이나 비용을 관리하는 사람들, 예를 들어 고객이나 프로젝트 관리자들과 의견대립이 있는 경우가 있어요. 이 분들에게 제가 주로 설득하는 점이 지금 약간의 시간과 비용을 들이는 것이 훨씬 경제적이고 효율적인 이익이라는 점을 강조합니다. 근데 사실은 설득을 하지만, 설득이 안 되는 경우도 있어요.
지금 일하고 계시는 SK C&C에서는 정확히 무슨 일을 하는 건가요?
IT 시스템과 관련된 개발, 구축, 유지, 보수, 운영 등을 전체적인 IT 토탈 서비스를 제공하는 회사입니다. 기업에서 필요로 하는 IT시스템을 만들고, 만들어진 시스템이 실제로 사용될 수 있도록 지원하고 운영하고 있어요.
소프트웨어 아키텍트로 일하시면서 힘든 점도 있으신가요?
우선 일과 관련해서 제가 생각하는 부분이나 목표가 다른 사람하고 안 맞았을 때가 힘들어요. 예를 들어 어떤 시스템을 개발 하는데 오랜 시간이 걸려도 다양한 환경에서도 정상적으로 돌아가는 시스템을 만들어야겠다고 생각했을 때, 고객이 지금은 그렇게까지 만들 필요가 없다라고 얘기를 하면 의견이 충돌하는 거죠. 또 A와 A-라는 기능을 서로 분리해서 독립적으로 돌아가도록 하고, 통합할 수 있는 별도의 메커니즘을 포함시키는 것이 좋겠다고 생각했을 때, 개발자들이 제 의견에 동의하지 않는다고 하면 힘들겠죠. 그런데도 한편으로는 그 의견차이를 해결하기 위해 설득하고 서로를 이해해서 해결되면 보람을 느끼기도 하죠. 힘든 것과 보람 있는 것의 ‘동전의 양면’ 과도 같다고 생각해요.
소프트웨어 아키텍팅 일을 하시면서 특별한 기억이 있으신가요?
제가 만든 소프트웨어가 아주 오랫동안 사용될 때 정말 좋은 기억으로 남습니다. LG 전자에서 장비를 관리하는 시스템을 만들었었는데, 그 시스템이 5년 이상 사용되었어요. 그리고 교육이나 강의 들을 통해서 후배들에게 소프트웨어의 기술적인 내용을 전수하는 것이 보람되었어요. 후배들이 저보다 더 뛰어난 개발자가 되는 경우가 있는데, 이런 경우는 특히 더 보람을 느끼는 것 같아요. 물론 아주 많진 않지만(웃음) 뛰어난 후배들이 여러 명 있어요.
소프트웨어 산업의 전망은 어떻게 생각하시나요?
소프트웨어 산업은 점점 황폐해지고 있는 것 같다는 생각이 들어요. 일단 소프트웨어 개발 업무에서 가장 큰 부분은 시스템 인터그레이션 (SI : 시스템을 구축하고, 필요한 하드웨어나 미들웨어, 소프트웨어를 통합하여 기업에서 비즈니스 적으로 사용할 수 있도록 만드는 업무)인데, 이 SI 업에서 어떤 본질적인 내면을 들여다 보면 열악한 개발자들의 생활환경 및 근무조건을 볼 수 있어요. 이 일을 하기에 부족한 인재들이 들어오면서 실제로 해 낼 수 있는 일이 그렇게 많지 않은 거죠. 그러다 보니 페이나 조건이 열악해 질 수 밖에 없어요. 그러면서 또 시장의 문이 닫히고 전체적인 크기는 더 이상 성장하지 않게 되는 것이죠. 게다가 요즘 외국계의 다국적 IT 벤더들은 자체적으로 직접 개발 했었던 것을 ‘솔루션’이라는 명목으로 제품화 했어요. 이전에는 SI 회사 혹은 개발자들이 직접 개발해서 구현했던 것들이 외국계 기업의 제품으로 팔리고 있기 때문에, 더 이상 개발을 하지 않아도 되는 상황이 온 거죠. 그래서 프로그램을 구현하는 데에 있어서 난이도가 높거나 역할이 중요한 것은 글로벌 벤더들이 만들어서 제품을 판매해요. 당연히 능력 있는 개발자들이 별로 설 자리가 없어지겠지요. 벤더들이 제공하는 솔루션은 가격이 비싸고 유지보수 효율성이 상당히 낮다고 생각해요. 하지만 선택의 여지가 없기 때문에 고객들이 쓰게 되는 경우가 있어요. 그러다 보니 업계 자체가 힘들어졌어요. 그래서 유능하고 참신한 인재들이 이 업계에 계속 들어와서 전체적인 능력도 늘려야 하는데, 인재들이 갈수록 줄어들고 있어요. 이 부분만 해결이 된다면, 소프트웨어 산업도 더 이상 열악해지지는 않을 거에요.
이 일을 잘 하기 위해 가장 필요한 자질이 무엇이라고 생각하세요?
기본적인 자질은 창의력 이라고 생각해요. 소프트웨어 개발 업무 자체가 굉장히 창의적인 일이죠. 정해진 규칙이나 방법을 배워서 그것을 따라 하면서 익숙해지는 것은 좋은 방법이 아니라고 생각해요. 정해진 몇 가지 것들은 사실 중요하지 않거든요. 배운 것을 가지고 실제로 창조적인 뭔가를 만들어야 해요.
쉽게 표현하면 한국어를 잘하는 사람에게 소설을 처음 써보라고 하면 한국어를 잘해도 소설은 어려울 수 있어요. 어휘와 문법을 알고, 여러 가지 국어와 관련된 기본적인 지식을 갖고 있는 것과 소설을 만드는 것은 다르죠. 소프트웨어도 이와 같아요. 소프트웨어를 만들 때 가장 기본이 되는 소프트웨어의 언어, 그리고 그 언어로 만들어진 원천소스를 실행하게 만든 툴을 사용하는 법을 안다고 해서 프로그램을 잘 구성한다고 할 수 없어요. 소프트웨어 개발자로서 필요한 자질은 "직관력, 상상력, 통찰력" 또한 필요하다고 생각해요. 방금 제가 얘기한 것은 공학적인 것보다 인문학적인 측면이 강하죠? 저는 소프트웨어는 인문학의 응용에 가깝다고 생각해요. 소프트웨어 개발은 인문학 베이스의 응용이에요. 밑바닥에는 논리적인 사고나 수학에서 얘기하는 추론이 필요로 하지만 이런 것이 사실 본질을 꿰뚫어 볼 수 있는 통찰력이나 직관력이라고 생각해요. 이런 능력이 없으면 후천적으로 이러한 능력을 기르기가 굉장히 어려워요. 인문학적인 자질이 뛰어난 사람이 소프트웨어 개발을 잘 할 것이라고 생각해요.
인문학적인 자질과 성향이 필요하다고 말씀하셨는데, 특별한 이유가 있을까요?
소프트웨어시스템을 만드는 것은 똑같은 기능을 하는 것이라고 해도, 어떤 식으로 구조를 잡느냐 그리고 어떻게 내부 알고리즘을 정하느냐에 따라서 그 소프트웨어를 얼마나 쓸 수 있느냐가 정해져요. 이것이 바로 품질이죠. 어떻게 구조를 잡느냐가 품질의 차이를 만들어내요. 그런데 구조를 잘 잡는 것에서 인문학적인 자질이 바탕이 되어야 하는 거죠. 그러니 잘 만들어진 소프트웨어는 품질이 좋은 것이고, 품질이 좋은 소프트웨어는 생명이 길어요. 누구나 글은 쓸 수 있지만, 그 글이 시장에서 사람들에게 오래 남아서 읽힐지는 또 다른 이야기인 거죠.
10년 넘게 아키텍트 일을 해오신 원동력은 무엇일까요?
일단 저하고 잘 맞았던 것 같아요. 새로운 것을 만드는 것에 대한 즐거움 같은 것을 느끼거든요. 소프트웨어 아키텍트는 일을 즐길 수 있어야 한다고 생각해요. 그리고 소프트웨어로 뭔가를 만들다 보면 새로운 시야가 열리게 되요. 그 전까지 볼 수 없었던 소프트웨어 개발분야에서 한 단계 업그레이드 되는 경험을 하는 것이죠. 그리고 그런 경험들이 스스로가 느끼기에 이제 나도 어느 정도 전문가가 되는 느낌을 받아요. 실제로 그래서 우리나라의 이름난 이 분야 전문가 분들하고 대화를 해보면 대화가 잘 이루어지는 것이 좋아요.
앞으로의 목표나 꿈이 있다면 무엇인가요?
이 업계에 있으면서 하고 싶은 꿈은 우리나라의 IT산업의 직업적인 비전을 만드는 역할을 하고 싶어요. 그리고 내가 다른 후배들에게 롤 모델이 되었으면 좋겠어요. 물론 일의 측면도 있지만 사회적인 지위라든지 경제적인 페이 같은 부분 역시도 닮고 싶은 수준이 되었으면 좋겠어요. 그래서 이런 사람이 있다는 것 자체가 이 일을 해볼만하다고 생각하고 많은 사람들이 관심을 가지게 되었으면 해요.
소프트웨어 아키텍트를 준비하고 있는 후배들에게 조언 한 마디 해주신다면?
일단은 기술력이 전제가 되어야 해요. 본인의 기술력을 바탕으로 깔고 있지 않다면, 일을 계속하기 어렵고 계속 한다 하더라도 경쟁력이 없어요. 기술력이 있다는 전제 위에 금융, 의료, 통신, 제조 등의 특정 산업 분야 에 대한 지식을 쌓는 것이 좋습니다. 이 지식이 왜 필요하냐 하면 특정 산업 분야에서 요구하는 비지니스적인 요구사항을 만족시키기 위한 IT시스템을 만드는 것이기 때문에 시스템을 잘 만들기 위해 그 산업분야를 잘 알아야 해요. 기술만 알아서는 안 됩니다. 이 두 가지를 갖췄을 때 유능한 인재가 되고 높은 가치를 가진 능력자가 되는 것이죠.
또 하나는 이 일을 하는 사람들은 개인화가 많이 되어 있어요. 이기적인 것과는 조금 다른 이야기인데 예시를 들어서 설명해 드릴게요. 이직을 해야 하는 상황이 생겼을 때 그 상황에서 개개인이 선택할 수 있는 옵션이 다 달라요. 어떤 사람은 금방 다른 곳에 취직할 수 있는 사람이 있고, 바로는 아니지만 새로운 일을 할만한 여건이 되는 사람들도 있어요. 또 이도 저도 아닌 사람도 비슷한 조건의 다른 일을 할 수 있어요. 그러다 보니 상대방과 내가 같은 일을 했더라도 공동체 의식은 거의 없어요. 그래서 공동체 의식을 조금 가졌으면 좋겠어요. 공동체 의식이 직업적인 비전을 만드는데 상당히 중요한 요소라고 생각해요.
통찰력과 직관력을 말씀하셨는데, 이 능력을 키울 수 있는 후배들에게 알려주세요.
잘 만들어진 전문가의 소스코드를 보는 방법을 추천하고 싶네요. 세상에 소프트웨어 소스코드는 정말 많습니다. 전문가들의 많은 코드들이 오픈 소스로 공개되어 있습니다. 개발 도구 같은 것들도 있고, 미들웨어 서버(리포터 설명 : 분산 컴퓨팅 환경에서 서로 다른 기종의 하드웨어나 프로토콜, 통신환경 등을 연결하여, 응용프로그램과 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있게 하는 소프트웨어) 등의 소스들은 그 분야의 전문가들이 만든 거죠. 이런 사람들이 만든 소스를 리뷰하는 것이 중요해요. 아마 굉장히 많이 공부가 될 거에요.
혹시 추천해주고 싶으신 책이 있으신가요?
아무 책이나 보면 효율이 떨어지니까 전문가들이 쓴 책을 읽는 것이 좋아요. 소프트웨어 개발의기본적인 경력을 갖고 있고 새로운 경지에 올라서기 위해 고민하고 있는 사람들이라면 “마틴 파울로, 켄트백, 로버트 라틴” 이 쓴 책을 한번씩은 보기를 권합니다. 이 사람들은 대단히 창의적인 요소를 강조하는 사람들이에요. 형식적, 구조적인 것은 반대하고 실무적이고 실제적인 구현을 중심에 두고 소프트웨어 개발을 바라봅니다. 그래서 책이 아주 디테일하고 책 속에 완성된 소스코드도 있습니다. 소프트웨어의 전문가다운 통찰력도 쓰여있어요. 책에 나온 내용을 따라 해보고 전문가들이 이야기하는 가이드라인을 적용해 보는 것들이 필요하다고 생각해요.
전문가의 잘 만들어진 소스를 리뷰하고 책을 보는 것은 개인적으로 할 수 있는 것이고, 연습이 어느 정도 되었다면 주변에 가까운 사람들과 모여 자기가 하고자 하는 것을 추천하고 함께하면서 그룹을 만들어서 실제 개발업무를 해보는 것도 좋아요. 당장은 진도가 느리고 답답하게 느껴질 수도 있지만, 끈기 있게 소프트웨어 프로그램이 갖고 있는 의미를 찾으면서 열심히 연습하면 시간이 오래 걸리지 않을 거에요.
멘토님에게 소프트웨어 아키텍팅이란 무엇인가요?
제가 생각하는 아키텍팅은 “예술가의 창작활동” 이라고 생각합니다. 목표는 내가 표현해 낸 아키텍처가 모든 사람에게 쉽게 이해되고, 이해된 것을 바탕으로 내가 생각했던 시스템이 만들어지는 것이 목표에요. 그러기 위해서는 간결하고, 명확하고, 쉬워야 된다고 생각합니다. 그러기 위해서 현재 노력을 하고 있어요. 아키텍트라는 예술가로서 더 많은 창작활동을 하고 싶습니다.
Side Story 리포터 후기
콘텐츠마케팅팀 리포터이수아
출판.편집 디자인
담당부서:인터뷰
취재:이수아
INTERVIEW
이수아
01084771970@cyworld.com
EDITOR
이수아
01084771970@cyworld.com
위 내용은 사람인에서 직접 취재한 내용을 재구성한 콘텐츠입니다. Copyright @ (주)사람인HR. all right reserved.