어느 한 자리에 안주하려는 것은 사람의 본능일지도 모릅니다. 그런데 이런 본능을 거슬러 사는 사람들도 있습니다. 이번 인터뷰의 주인공은 안주할 수 있는 순간에 새로운 도전을 찾아나서는 김성훈 님입니다.
|
dW: 학문적으로 버그에 대한 연구가 시작된 것은 언제부터인가요.
정확한 연도는 기억나지 않는데 펀치 카드가 생기자마자 시작됐을 거고 지금까지는 주로 디버깅 도구에 대해 연구를 많이 해왔습니다. 제가 택한 접근 방식은 도구가 아니라 공통적인(common) 버그 패턴을 자동으로 찾아내려는 것입니다. 최근에 개발되는 도구 중에서 FindBugs라는 것이 있는데 사람이 인식하는 버그 패턴을 모아 그와 똑같은 코드가 나오면 알려주는 소프트웨어입니다. 제가 연구한 것은 그러한 패턴을 자동으로 뽑아내는 것인데 이를 위해 히스토리가 필요합니다. 역사를 공부하지 않으면 불행한 과거를 되풀이하는 우를 범한다는 말처럼 소프트웨어 개발자들이 이전 역사에서 오류를 만들어낸 부분들을 잘 알지 못하면 똑같은 실수를 반복하게 되어 있습니다. 문제는 역사를 잘 안다는 것이 굉장히 어렵다는 점입니다. 한 프로젝트에 수년 간 일한 개발자라면 그 역사를 잘 알겠지만 그 지식이란 것이 그 개발자의 머리에 들어 있으므로 새로 들어온 개발자는 그것을 잘 모르죠. 그 수년 치 지식을 자동으로 데이터베이스화해 초보 개발자가 어떤 코드를 쓸 때 이전에 비슷한 에러가 있는지 점검해 피드백을 주려는 것이 제 연구의 기본적인 아이디어이고 디버깅의 새로운 방향이 될 되리라 생각합니다. 긴 연구 여정의 시작입니다.
|
 |
 |
|
dW: 버그에 대한 연구 역사가 짧지 않은데 버그를 잡는 것은 아직도 고된 작업 같습니다.
버그라는 것 자체가 어렵고 기존 도구들이 대부분 디버깅이 노동 집약적인 작업임을 가정하고 그것을 도와주는 정도입니다. 다시 말하면 디버깅이 개발자들이 해야 하는 일이라는 인식 하에 편하게 쓸 수 있는 도구를 만드는 게 지금까지 주요 흐름입니다. 그마저도 항상 도움이 되는 게 아니라서 printf를 여전히 쓰는 개발자들도 있죠. 그에 대한 대안으로 나온 정적 분석(static analysis) 같은 것들은 시작 단계이고요. 이해하기 어려운 논리 버그는 어차피 사람이 고쳐야 할 것 같습니다. 하지만 단순한 버그들, 그렇지만 이런 버그들은 의외로 많이 생기는데요, 앞으로는 이런 것들을 자동으로 감지, 수정하는 수준까지 올라가리라 예상합니다. 제가 꿈꾸는 디버깅 환경은 현재 논리 버그와 단순 버그의 비율이 50:50이라면 단순 버그의 비율을 70~80까지 끌어올리는 것입니다. 그렇게 되면 개발자들이 좀 더 창조적인 일에 집중할 수 있을 것입니다.
|
 |
 |
|
서지원: 소프트웨어 공학에서 버그 탐지 도구에 대한 연구도 최근 활발한데, 실제로 개발할 때 그러한 도구들을 쓰는 것이 여러 이유에서 쉽지 않습니다. 그러한 도구들을 쉽게 쓸 수 있으려면 학계에서 어떤 노력과 연구를 해야 할까요?
학계에서 그에 대한 노력을 많이 하는 편은 아닌데요. 학계에서는 주로 멋진(cool) 아이디어를 고안하고 그 가능성을 제시하는 것까지만 하니까요. 저도 고민하는 문제입니다. 저는 도구나 알고리즘을 개발할 때 ‘이걸 내 자신이 쓸까’하고 질문을 합니다. 아이디어가 멋져도 제 스스로 쓰지 않을 것 같다면 굳이 만들지 않습니다. 현재 박사 논문의 알고리즘을 구현 중인데 어느 정도 단계에 이르면 실제 개발자들에게 써보게 하고 어떻게 느끼는지 확인해 보려 합니다. 다른 연구자들도 이와 같은 노력을 하면 좋겠습니다. 또 최근에 블로그(http://sestory.tistory.com/)를 하나 만들었는데 연구에 대한 아이디어가 떠올랐을 때 그에 대한 사전 결과를 블로그에 올리고 개발자들의 피드백을 듣는 등 현장의 개발자와 좀 더 가까워지려 합니다. 그 외에도 OOPSLA처럼 연구자와 개발자가 함께 모여 활발하게 교류하고 토론할 수 있는 장이 한국에도 만들어지면 좋겠습니다.
|
 |
 |
|
dW: 결과를 빨리 낼 수 있는 기술 위주로 연구가 되다 보니 이와 같은 기초 연구는 상대적으로 연구자도 많지 않고 비중이 없어 보이기도 합니다.
회사나 연구소는 생존과 직결되는 문제이다 보니 2~3년 안에 성과가 나오지 않는 연구를 하기란 쉽지 않습니다. 그래서 학교의 존재 이유가 기초 연구에 있다고 볼 수 있는데요. 물론 트렌드를 따라가는 것도 중요하고요. 미국 대학교에는 종신 재직(tenure) 제도가 있어서 연구자가 6~10년 간 좋은 연구 결과를 보여주면 재임을 보장 받고 자신이 원하는 연구를 할 수 있습니다. 이렇게 당장의 트렌드 외에도 연구자가 필요로 하는 것을 연구할 수 있는 여건이 되어야 한다고 봅니다. 학교가 나아가야 할 방향이기도 하고요. 미국의 교수들 중에는 젊을 때는 인기 있는 주제로 논문을 많이 내다가 종신 재직권을 받고 나서는 근본적인(fundamental) 문제를 푸는 데 매달리는 사람들이 있습니다.
|
 |
 |
|
dW: 블로그에 쓰신 ‘이 버그를 누구에게 넘겨 줄 것인가?’라는 글을 보면 버그 해결의 사회적 측면에 관심을 두신 것으로 보입니다. 어떤 계기로 관심을 갖게 되셨나요.
연구 아이디어를 전에 개발자로 일했던 경험에서 얻는데요. 당시 고민했던 문제가 ‘버그가 생기면 누구에게 넘겨줄까’하는 것이었습니다. 요즘 모질라나 이클립스 등 주요 오픈 소스 프로젝트에서 버그가 보고되면 어떻게 처리되는지를 살펴보는 중입니다. 개발 규모가 크고 여러 장소에 흩어져 개발이 진행되는 상황이 앞으로 점점 늘어날 텐데 버그가 얼마나 많이 전달(toss)되는지가 중요한 문제가 되리라는 생각이 들었고 그 안에서 개발자 간 소셜 네트워크가 어떻게 형성되는지 궁금했습니다. 재미있는 관찰 결과들이 나오고 있습니다.
|
 |
 |
|
dW: 그와 같은 연구에는 일정 규모 이상의 집단이 필요할 텐데 어떻게 찾으시나요.
처음에는 데이터가 많지 않다는 점이 어려웠죠. 회사에서는 관련 데이터를 공개하려 하지 않거든요. 다행히도 오픈 소스 소프트웨어가 있어서 큰 도움이 됩니다. 1990년대 중반 오픈 소스 소프트웨어들이 본격적으로 성장하기 시작한 후로 10여 년이 지났는데 그렇게 쌓인 데이터를 이용할 수 있고 데이터 신뢰도도 높고 분야도 다양합니다.
|
 |
 |
|
dW: 6개월 동안 서울대 프로그래밍 연구실(이하 ROPAS)에서 방문 연구원으로 어떤 일들을 하셨나요.
구체적으로 말씀드리기는 좀 이른데… 한 가지 예를 들면 사람들이 조건문에서 에러를 많이 만듭니다. 기존 연구는 코드 패턴을 가지고 if 같은 조건문이 쓰인 형태를 보고 에러인지 아닌지를 판단했는데 허위 경보가 많았습니다. 반면 ROPAS의 기술은 if 조건문에 어떤 값이 들어오는지, 그 값이 들어왔을 때 어떻게 체크해야 하는지 등을 이용해 허위 경보를 줄이고 경보의 정확도를 높일 수 있습니다. 제가 연구한 버그 패턴 인식 분야와 ROPAS 이광근 교수님이 연구하신 분야를 접목하는 방법을 연구했습니다. 6개월이 긴 기간이 아니라 연구 결과가 바로 나오지는 않았지만 좋은 시도였고 홍콩에 가서도 6개월 동안 연구했던 것을 계속 할 수 있는 터전을 닦은 것 같습니다.
|
 |
 |
|
dW: 지금까지 연구하신 것 외에 관심 있게 주목하시는 분야는 무엇인가요.
병렬 프로그래밍입니다. 그 중에서도 병렬 처리 안에 숨은 버그를 찾아내는 것에 관심이 많습니다. 최근 들어 시스템이 멀티 코어로 가고 있고 기존 프로그램들을 멀티 코어에 맞게 바꿔 쓰려는 노력을 많이 하고 있죠. 그런데 사람의 뇌는 병렬적으로 움직인다고 알려져 있지만 평소 생각은 순차적입니다. 그래서 병렬 프로그래밍 자체가 어렵고 병렬화된 프로그램은 스케줄링이 뒤범벅되므로 에러를 찾기가 더 어렵습니다. 관심은 있는데 굉장히 어려운 도전입니다.
|
 |
 |
|
dW: 홍콩과기대는 어떤 이유에서 선택하셨나요.
미국이 원천 기술을 많이 가지고 있지만 성장 동력을 전에 비해 많이 잃어버린 것 같습니다. 좋은 학생들도 줄고 있고요. 그에 비해 중국, 인도 등은 개발자가 늘고 있어서 홍콩에 가면 중국의 좋은 학생들을 많이 유치할 수 있을 것 같습니다. 또 다른 이유는 제가 새로운 도전을 좋아해서인데요. 미국의 괜찮은 주립대학교에 남았으면 수월할 수도 있었겠지만 새로운 선택을 하고 싶었습니다. 또 홍콩과기대의 연구 조건이 미국에 못지않게 좋았고요.
|
 |
 |
|
dW: 홍콩에서 소프트웨어 엔지니어링을 가르치실 예정이라고 들었습니다. SE를 지식이 아니라 실천이라 본다면 그것을 몸에 익히게 하는 게 중요할 텐데 어떤 계획이 있으신가요.
소프트웨어 엔지니어링 수업을 따분하게 생각하는 학생이 많습니다. 제가 하고 싶은 수업은 첫 시간에 엉킨 소스 코드를 가지고 디버깅이나 리팩터링을 하는 숙제를 주는 것입니다. 학생들이 그 과정에서 동기를 느끼게 하는 것이죠. 즉 처음부터 이론만 복잡하게 가르치는 게 아니라 소프트웨어 개발 과정에서 어렵고 힘든 문제를 맛보고 그것을 푸는 데 필요로 하는 것이 무엇인지를 깨닫고 그 기법들을 익히도록 하려 합니다. 또 오픈 소스에 관심이 많아서 오픈 소스 개발 프로세스들을 살펴보고 학생들이 한두 가지 오픈 소스 프로젝트의 메일링 리스트나 버그 보고•수정 같은 활동에 참여하게 할 예정입니다.
|
 |
 |
|
dW: 홍콩과기대에 지원할 때 추천하고 싶은 경력을 들자면.
전산 전공을 하고 3년 정도 개발 경력이 있으면 새로운 공부를 시작하기에 적당할 것 같습니다. 단 아주 이론적인 분야에 관심이 있다면 회사 경력이 큰 도움이 되지는 않을 겁니다. 무엇보다도 중요하게 보는 것은 열정입니다. 자신이 짠 코드 한 줄, 잡은 버그 하나가 사람들을 얼마나 행복하게 하는지 알고 있어서 이 일을 꼭 하고 싶은 사람들과 함께 하고 싶습니다.
|
 |
 |
|
dW: 홍콩과기대는 지역 특성상 학생들이 흔히 기대하는 ‘간판’을 주는 학교 같지는 않습니다. 무엇을 얻을 수 있을까요.
말씀하신 것처럼 중국이나 일본, 홍콩의 대학들은 한국에서 그다지 알아주지 않습니다. 다만 세계적인 인재가 된다는 측면에서 보면 홍콩과기대는 굉장히 좋은 학교입니다. 2008년 한 해에 SIGGRAPH에 논문 열 편이 실릴 정도로 명성이 있습니다. 또 연구 논문을 쓰기에 좋은 환경입니다. 교수진은 행정 업무를 하지 않고 연구와 강의에만 전념할 수 있게 되어 있고 그러다 보니 학생들이 좋은 논문을 쓸 수 있게 됩니다. 그 외에 중국에서 일하는 데 관심이 있다면 좋은 네트워크를 만들 수 있는 기회이기도 하고요.
|
 |
 |
|
dW: 인생의 주요 시기마다 새로운 도전을 찾으셨는데 홍콩에 가셔서 기대하시는 도전이 있다면.
우선 익숙하지 않은 환경에서 사는 게 도전일 것 같고요. 또 전에는 혼자서 연구했는데 이제는 학생들과 같이 하는 연구를 어떻게 잘 할 것인지가 도전이 되리라 예상합니다. 학생들의 어려운 점을 풀어주고 학생들이 참신한 아이디어를 내면 제가 배워야 하고요. 그렇게 같이 하면서 소프트웨어 엔지니어링 분야에서 좋은 논문들을 쓰는 것입니다.
|
 |
 |
|
dW: 마지막으로 한 말씀 부탁드립니다.
진정으로 세상을 변화시키는 창의적인 사고는 자유로운 생각, 꿈, 공상에서 나오는데 그러려면 여유가 있어야 합니다. 저는 여행을 떠나 그런 여유를 얻었는데요. 앞서 말씀 드린 독일 세미나 참가 후에도 여행을 했고 이번에도 홍콩에 들어가기 전에 여행을 갈 생각입니다. 다른 개발자들도 자기만의 여유를 얻고 즐기기를 바랍니다.
|
 |
 |
|
|
 |
|
[김성훈 소개] 1995년 한글 검색 엔진 ‘까치네’를 개발했고 나라비전에서 깨비웹메일 개발을 이끌다 2000년 유학을 떠나 2006년 프로젝트 히스토리 분석을 통한 버그 예측을 주제로 한 논문으로 박사 학위를 받았다. 올해 1월부터 홍콩과학기술대학교 조교수로 일한다.
|
| 이 문서 북마킹 하기
|
 |
 |
 |
 |
|
[지난 인터뷰 보기]
|
 |
 |