직업 프로그래머의 마지막 길은 개인사업자’라는 이야기를 가끔씩 듣고 그렇게 창업을 하는 개발자들을 종종 봅니다. 다만 벤처 열풍 시절과는 다르게 자신이 믿는 비전을 이루기 위해 일을 시작하는 사람들이 조금씩 늘고 있습니다. 이번 인터뷰에서는 Struts 2 컨설팅을 준비중인 현철주 님을 만나 사람과의 관계, 오픈 소스와 커뮤니티의 힘 등에 대한 이야기를 나눠보았습니다.
개발 이력에 대해 들려 주세요. 컴퓨터를 오래 전부터 좋아했는데 그 때만 해도 워낙 비싼 장비라 부모님께서 컴퓨터의 필요성을 못 느끼셔서 사달라고 졸라도 안 사주시더라고요. 할 수 없이 친구들 컴퓨터를 가지고 놀면서 베이직 프로그램 같을 걸 짜기 시작했고요. 대학에서는 물리학을 전공했는데 당시에는 전산실이 제대로 갖춰지지 않았습니다. 그래서 재학 중에 KAIST SERI(한국과학기술원 시스템공학연구소)의 3개월 과정을 다니며 전산 이론, 포트란, 코볼, 구조적 프로그래밍 등을 배웠습니다. 그 과정을 마치고 나서 학교에 돌아가 후배들에게 프로그래밍을 가르치기도 했습니다. 입대 후 C를 공부했는데 컴파일러 구하기도 힘든 시절이었죠. 그 후 비트교육센터에서 윈도우 프로그래밍을 공부했고 29세에 대우정보시스템에 입사해 사회 생활을 시작했습니다.
입사 후에는 어떤 일들을 하셨나요. 처음에는 문자 인식 등 이미지 솔루션 개발 일을 했습니다. 고속 스캐너로 카드 전표를 스캔해 필요한 자료를 뽑아내고 데이터베이스에 구축하는 시스템 같은 것을 개발했고요. 그 다음에는 EDMS 개발에 대한 필요가 생겨 그 업무를 맡게 됐는데 처음에는 패키지 솔루션을 만들려다 시기가 이르다고 판단해 우선은 팀원들의 기술력을 높이는 취지에서 프로토타입을 개발했습니다. 그러다 회사에서 SI로 사업 분야를 넓히면서 자바로 전향해 개발, 프로젝트 관리 등을 했습니다.
10년 가까운 직장 생활에서 얻은 것이 있다면… 서로 좋은 관계를 맺은 사람들입니다. 사람들 사이의 관계가 좋으면 일 자체도 잘 되고 생활도 즐거워지고요. 또 그 팀의 전체적인 능력이 강해지는 걸 경험했습니다. 예를 들어 제 시간에 하기 힘들 거라 생각했던 프로젝트를 해내는 경우가 있었습니다. 이직 후에도 그런 관계가 중요했고요. 시스템 사용자든, 개발자든 사람을 보지 못하고 일만 보는 게 아니라 서로 도움을 받고 성장하는 것이 중요하다고 봅니다.
창업에 대한 생각은 어떤 계기로 하셨나요. 오픈 소스로 프로젝트를 수행해 본 후 프레임워크에 욕심이 생기기 시작했고 더 깊이 제대로 공부하고 싶었습니다. 그런데 SI 프로젝트를 하다 보면 항상 시간에 쫓기고 공부하고 싶어도 더 할 수 없는 상황이 잦았습니다. 업무도 자주 바뀌고 혼자 공부하는 데 한계도 있고요. 2004년에 회사를 그만 두었습니다. 나이가 차다(?) 보니 회사에서는 ‘행정형’ PM을 하기를 원하는데 제 자신은 엔지니어로서 더 성장하고 싶었거든요. 그렇게 하려면 스스로 회사를 세우는 방법밖에 없겠더군요. 물론 쉬운 일은 아니지만 일단 저지르기로 마음을 먹었습니다. 최근에는 회사 일 외에 주변 후배 개발자들과 함께 세미나를 열면서 스터디를 하고 있고요. 개인적으로는 잡지에 기고를 하면서 Struts 2 서적을 쓰는 중입니다.
벤처 열풍 시기와 요즘의 창업 분위기를 비교했을 때 어떤 특징이 있다고 보시나요. 많이 다른 것 같습니다. 벤처 열풍 시절 제 주위에도 이직하는 사람이 많았습니다. 경제적인 조건이 가장 큰 이유였겠죠. IT 거품이 빠지면서 호황이라는 흐름만을 보고 찾아 왔던 사람들은 많이 빠져 나가고 지금은 열정을 지닌 사람들이 주로 남아있는 게 아닌가 하는 생각이 듭니다. 그런 상태에서 창업을 한다는 것은 단지 돈만이 목적은 아닌 것 같습니다. 또 시장이란 주기를 돌므로 다시 상승 곡선을 타려면 그 전부터 준비를 해야 하는데 지금이 그 시기로 볼 수도 있겠습니다.
말씀하신 것처럼 당장의 성공이 아니라 회사에서 추구하는 것이 있다면 무엇인가요. 경쟁이 심하다 보니 엔지니어들이 대우를 잘 받지 못합니다. 야근이나 밤샘이 당연시 되고 있고요. 대우란 게 경제적인 것만이 아니거든요. 가장 힘든 것은 자신이 하는 일에 대해 제대로 인정 받지 못하는 것일 겁니다. 서로 재미있게 지내고 여유 있게 일하면서 공부하고 실력을 키울 수 있는 환경을 만들고 싶습니다. 그렇지 않고 쏟아내기만 하고 끝난다면 미래가 없는 것이죠. 그런데 이런 기반이 아직 되어 있지 못합니다. 먹고 사는 문제에 쫓겨 똑똑하고 열정 있는 개발자들이 자기 능력을 발휘하지 못하는 게 안타깝습니다. 좀 큰 욕심을 부리자면 그런 개발자들이 자신의 능력을 펼칠 수 있는 판을 만드는 데 힘을 보태고 싶습니다. 그 전에 작게나마 우리가 즐길 수 있고 공부할 수 있는 일을 찾고 싶고요. 그래야 고객에게 그만한 품질을 제공할 수 있으니까요.
오픈 소스와 인연은 어떻게 시작됐나요. 대우정보시스템 내에서 자체적인 프레임워크를 구성하는 데 오픈 소스를 도입하기로 했습니다. 개발도 하면서 PM도 하던 때였는데 약간 두려웠습니다. 신기술을 좋아하고 찾아 다니는 스타일이지만 검증이 충분히 되지 않은 기술로 프로젝트 성공을 이끌 수 있을지 확신이 들지 않았습니다. 그러던 중에 먼저 테스트를 해 보기로 하고 어느 정도 결과가 나오면 도입하기로 했는데 결과는 반반이었습니다. 그 정도면 맞춰나가면서 할 수 있겠다고 생각하고 프로젝트를 수행했습니다. 기간이 짧아 고생을 많이 했지만 마치고 나니 오픈 소스 적용 후 많은 것이 달라졌음을 느꼈습니다. 그 전에는 오픈 소스에 대해 큰 믿음이 있는 편이 아니었는데 그 매력에 눈을 뜨기 시작한 거죠. 물론 문제가 전혀 없는 것은 아니었지만 충분히 감당할 수 있는 수준이었습니다.
Struts 2에서 인상적인 변화로 무엇을 꼽으시나요. 사실 Struts 2는 Struts 1의 업그레이드 버전이 아니라 Struts 프로젝트와 웹워크(Webwork) 프로젝트가 통합되어 나온 결과물입니다. 인상적인 변화로는 좀 더 직관적으로 개발할 수 있게 발전했다는 점을 들고 싶습니다. 다른 프레임워크와 연동도 잘 된다는 점도 장점이고요. Struts 1에서는 단순 반복 작업을 많이 했는데 2에서는 그런 작업이 많이 줄었습니다. 초보 개발자는 아키텍처를 잘 몰라도 쉽고 재미있게 쓸 수 있고 숙련된 개발자는 아키텍처 이해를 바탕으로 고급 개발을 할 수 있게 배려한 점도 주목할 만합니다.
오픈 소스의 경우 해당 커뮤니티의 분위기도 중요한데 Struts 2 커뮤니티들은 어떤 분위기인가요. 해외에는 여러 사이트가 생기고 있는데 의외로 중국에서도 활발하다고 합니다. 저도 Struts 커뮤니티 사이트를 준비 중인데 지금 쓰고 있는 Struts 2 책이 나올 때쯤 공개하려고 합니다. 말씀 드렸듯이 결국 사람이 중심이기 때문에 프레임워크가 성장하려면 사용자들이 활발히 활동해야 하고 사람들 사이에서 자주 회자되어야 합니다. 그 외에 해외에서 만들어진 좋은 결과물을 가져오는 것 외에도 국내 커뮤니티에서 나온 결과물들을 해외에도 알릴 수 있는 통로를 만들 수 있는 방법이 무엇일까 고민하고 있습니다.
여러 오픈 소스 프레임워크가 치열하게 경쟁 중인데 Struts 2의 위치는 어디라고 보시나요. Struts 1은 시기적인 상황이나 요구 사항에 잘 맞아 웹 개발의 표준이라 불릴 정도로 많이 쓰였는데 그만큼 많은 단점도 드러났습니다. 그런 문제들을 극복하기 위해 다른 프레임워크들이 등장했고요. Struts 2의 경우 웹워크 시절에는 잘 알려지지 않았지만 이제는 도입이 확산될 시기가 됐다고 봅니다. 결국은 프레임워크 보급이란 것도 ‘마케팅’에 달려 있는 것 같습니다. 책이나 커뮤니티 활동도 마케팅의 한 모습일 수 있고 그것을 통해 사용자 층이 넓어질 수도 있으니까요. 시스템 개발에는 기술 외에 컨설팅이나 지원 등 외적인 부분이 차지하는 비율이 큰데 오픈 소스 프레임워크가 경쟁력을 갖추려면 사용자를 만족시킬 수 있는 기술적인 수준을 갖춰야 하는 것이 당연하지만 홍보가 되지 않는다면 묻혀 버리게 됩니다. 많이 알려지고 그에 따라 장단점이 많이 드러날 때 더욱 발전할 길이 생기리라 생각합니다.
쓰기 쉽고 가벼운 프레임워크 이야기가 많이 나왔지만 학습 곡선은 여전히 가파르다는 의견이 있는데… 우선은 쓰기 쉬운 기능부터 차례로 익히고 그 안을 들여다 보고 싶을 때 서서히 배워 나가는 것이 좋습니다. 간단하게 쓰던 것들의 원리를 깨우치면서 수준이 조금씩 올라가는 것이죠. Struts 2에서는 개발자들이 그렇게 공부해 나갈 수 있도록 배려하고 있는데요. 아키텍처를 알아야만 제대로 쓸 수 있는 프레임워크라면 개발자들에게 점차 잊혀질 것 같습니다.
MVC 기반 프레임워크로 개발을 하면서 불편함을 느꼈던 적이 있으시나요. 많았습니다. 실제로 비즈니스 로직(Model), 화면(View), 그것들을 제어하는 것(Control)을 나누기가 쉽지 않아 그것을 돕는 프레임워크들이 나왔고 그것을 이용해 개발을 했는데 시간이 지나고 보니 그 결과물들이 특정 프레임워크에 종속되어 버린다는 문제를 발견하게 됩니다. 새로운 프레임워크가 나왔을 때 기존 결과물을 재활용하기가 어려워지는 거죠. 앞으로는 한 프레임워크로 만든 결과물들을 다른 프레임워크에서도 활용할 수 있는지 여부가 프레임워크를 선택할 때 중요한 기준이 되리라 봅니다. POJO 사용을 권장하는 것도 그런 맥락이겠죠. Struts 2에서도 그런 기능을 지원하구요.
자신에게 커뮤니티란 어떤 곳인지요. 웹 개발을 하기 전에 전자 도서관이나 고문서 문자 인식 관련 프로젝트를 했던 적이 있는데 그 일을 하면서 지식을 정리하고 배포하는 일에 관심이 생겼고 원하는 높은 품질의 지식을 빠른 시간 안에 찾는 것과 관련된 일을 하고 싶었습니다. 그런데 사실 지식을 찾다 시간을 낭비하는 경우가 많아서 지식 기반이 제대로 이뤄져야 한다는 생각을 했습니다. 그런 고민을 하던 중에 커뮤니티의 가능성에 주목하게 됐고 사용자들이 원하는 지식이 커뮤니티에서 만들어지려면 그를 위한 기반이 필요하다는 생각이 들었습니다. 그 작업을 잘 해낼 수 있느냐가 핵심이겠고 또 사람들의 네트워크 속에서 서로 필요한 것을 얻고 나눌 수 있으며 단순히 지식이 나열되는 것이 아니라 정리되는 게 필요하구요. 그런 것들을 잘 실현하는 방법을 연구하는 것이 숙제일 것 같습니다.
앞서 준비 중이라고 말씀하신 Struts 2 커뮤니티에 대한 계획이 있으면 소개해 주세요. 기술적으로는 Struts 2 기반으로 사이트를 만들 계획이고 내용적인 면에서는 커뮤니티에 올라오는 정보 외에도 여러 블로그에 올라오는 좋은 지식을 연동하는 방법도 구상 중입니다. 결국은 말씀 드린 것처럼 사람이 중심이기 때문에 좋은 사람들을 많이 만나면서 서로가 가진 것들을 주고 받고 공유하면서 상승 효과를 낼 수 있는 통로로서 커뮤니티를 키워나가려 합니다.
앞으로 계획을 말씀해 주세요. 구상하는 사업이 두 가지가 있습니다. 기업 정보 시스템을 보면 기업 안에서는 행정 관리를 하고 외부 전문가를 통해 시스템 구축을 하는 경우가 느는 추세인데 이에 따라 컨설팅 전문 조직이 필요하리라 봅니다. 저는 Struts 2를 전문으로 하는 컨설팅을 준비 중입니다. Struts 2 책을 쓰는 것도 그 일환이고요. 또 우리 기술을 고객에게 제공하는 것 외에도 사용자를 대상으로 하는 서비스를 직접 해보는 것도 시도 중입니다. 한 가지 바람이 있다면 한국에서도 기반 기술을 만들어 내는 사람들이 많이 나오면 좋겠는데 제 스스로 그런 사람들이 활동할 수 있는 판을 만드는 데 작은 보탬이 되고 싶습니다.
[현철주 소개]
대우정보시스템에서 개발자 및 아키텍트로 일했고 최근 아첸소프트웨어를 설립했다. Struts 2를 바탕으로 자바 커뮤니티 사이트를 개발 중이며 Struts 2 서적을 집필하고 있다.