IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
한국 developerWorks   >  dW Interview  > developerworks

“관계와 사회에 기여하는 오픈 소스 프로그래밍”



이번 인터뷰의 주인공은 텍스트큐브를 개발하는 니들웍스의 멤버인 김준기 님입니다. 학생으로서 오픈 소스 프로젝트에 참여하며 얻은 경험과 교훈에 대해 함께 들어보시죠.

김준기 | 카이스트에 입학해 전산학과, 니들웍스로 활동중



 
  김준기 프로그래밍은 어떻게 시작하셨나요.
친구 소개로 시작했습니다. 초등학교 5학년 때까지는 컴퓨터 게임만 했는데요. 프로그램을 어떻게 만들까 궁금해 하다 집에 GW-베이직 프로그래밍에 관한 책이 있더군요. 친구가 제가 프로그래밍에 대해 궁금해 하는 걸 알고 3.5인치 플로피 디스켓에 큐베이직을 복사해 주었습니다. 그 디스켓이 인생을 바꾸었죠. 큐베이직을 1년 정도 쓰다가 비주얼 베이직으로 넘어가면서 그렇게 프로그래밍을 시작했습니다.

독학을 하다 보면 흥미를 잃기도 쉬운데 꾸준히 공부하신 동기는 무엇인가요.
프로그래밍을 알기 전에도 게임을 하면 맵 에디터, 미션 에디터 등에 관심이 많았습니다. 그래서 스타크래프트가 처음 나왔을 때에도 한 달 반 동안 캠페인 에디터의 트리거와 액션을 다 터득하고 스타크래프트를 즐기기 시작했는데 그런 성격이 영향을 미치지 않았나 생각합니다. 모든 것이 어떻게 만들어지고 어떻게 만들 수 있는지 파헤치는 데서 즐거움을 느껴서 프로그래밍을 공부하게 된 것 같습니다.

자유롭게 독학을 하다 대학 전공이 되면서 달라진 점이 있다면...
과학고 경험이 있어서 공부하는 것 자체에 대한 부담은 거의 없었습니다. 물론 그래도 과제와 프로젝트는 힘들지만요. 전공 공부를 통해 막연하게 알던 걸 체계화할 수 있었습니다.

웹과 인연은 어떻게 시작됐나요.
초등학교 5학년 당시 유니텔 브라우저에 웹 브라우저가 포함되어 있어서 그것으로 처음 웹을 접했습니다. ‘어떻게 만들까’하는 질문을 하면서 살다 보니 어느 순간 자연스럽게 HTML을 익혔고 중학교 2학년 때 학교 방송부 홈페이지를 만들기도 했습니다. 대학교에 들어가서 여러 오픈 소스 개발 프로젝트에 참여하면서 본격적으로 웹 개발을 시작했습니다.

오픈 소스 세계에 입문한 사연(?)을 들려주세요.
고등학교 2학년 때 중학교 시절 친구가 자기 홈페이지를 만들었다고 주소를 보내줬는데 그 홈페이지를 만든 프로그램이 텍스트큐브의 전신 태터툴즈였습니다. 그 때부터 태터툴즈를 써서 홈페이지를 만들기 시작했습니다. 그 다음해 태터툴즈 1.0이 오픈 소스로 발표되면서 커뮤니티에 참여하면 제가 원하는 걸 고치거나 추가할 수 있겠다는 생각이 들어 그때부터 반쯤 호기심에 시작해 지금까지 왔습니다.

현재 니들웍스(http://www.needlworks.org/)에서 활동 중이신데 어떤 역할을 맡으셨나요.
주로 서버 관리를 하면서 리더 신정규 님과 텍스트큐브 2.0 버전에 쓸 프레임워크를 개발하고 있고 단기적으로 했던 프로젝트로는 텍스트큐브가 IIS에서 돌아가게 하는 것과 구글 지도 플러그인을 만들었던 것이 있습니다.

2.0 프레임워크를 개발하면서 어려운 점은 무엇인가요.
PHP가 대규모 프로그램을 개발할 때 어려운 점이 있습니다. Hypertext Preprocessor라는 이름에서 알 수 있듯 템플릿 언어의 개념에서 출발했지만 워낙 많은 기능을 넣다 보니 일관성이 부족한 부분이 있습니다. 5.3이나 앞으로 나올 6 버전에는 웬만한 고급 언어의 기능이 모두 구현되어 있지만 원래 그 언어를 쓰던 관행 때문에 대형 응용 프로그램을 짜기에는 적합하지 않은 것 같습니다. MVC 등 객체 지향 방법론에 맞춰 개발하려 하는데 PHP 기본 구조가 그에 적합하지 않아 성능 문제가 생기기도 했습니다. 그 외에 PHP에는 네임스페이스나 패키지 개념이 없다는 것이 문제인데 그걸 보완하는 장치가 있긴 하지만 다른 언어만큼 깔끔하게 동작하지 않아 전체 코드를 구조화하기 어렵습니다. 그래도 잘만 쓰면 굉장한 능력을 낼 언어라고 생각합니다.

말씀하신 문제들에 대해 어떤 해법을 찾으셨나요.
기본적인 전체 구조는 가닥을 잡은 상태이고 PHP의 원래 특성을 인정하면서 그 안에서 최대한 구조화하는 방향으로 접근하는 중입니다.

개인적으로 웹 프레임워크인 장고(http://www.djangoproject.com/)도 활용하시는 것으로 알고 있습니다. 장고만의 매력이라면...
다른 프레임워크를 깊이 있게 써보질 않아서 정확히 말씀드리기는 어렵지만... RoR(Ruby on Rails)이나 CakePHP는 프레임워크가 제공하는 틀과 관례에 맞춰 빈칸을 채워 넣으면 자동으로 잘 만들어지는 방식이라는 느낌이 드는 반면에 장고 자체는 라이브러리처럼 존재하고 개발자가 필요한 곳에 불러 쓴다는 느낌이 강합니다. 또 장고는 프레임워크의 기본 기능을 바꿔 쓰거나 대체하기 쉬워 자유도가 높다고 말할 수 있습니다. CakePHP의 경우 관례를 따라야 하는 게 편하기도 하지만 가끔씩 답답할 때가 있었습니다.

학생으로서 활발하게 오픈 소스 활동을 하시는데 얻은 것은 무엇인가요?
학교에서 배울 수 없는 것을 많이 배웁니다. 인턴을 시작한 지 얼마 안 됐는데 회사 업무를 해보니 오픈 소스를 통해 얻은 경험, 기술, 도구 사용 능력이 회사에서 실제로 도움이 많이 됐고 적응을 빨리 할 수 있었습니다. 예를 들어 소스 코드 커밋 로그를 꼼꼼히 적는다거나 이슈 트래킹을 하는 습관 같은 것들이 큰 도움이 됐습니다. 그 외에도 다양한 사람을 만나고 이야기를 들어볼 수 있었던 것이 제가 진로를 결정하는 것과 자신감을 갖는 데 도움이 됐습니다.

프로그래밍은 보통 혼자 하는 것이란 인식 때문인지 사람으로부터 배우는 것은 상대적으로 중시되지 않는 것 같습니다.
프로그래밍이란 게 일정 수준에 도달하기까지는 어려운데 그 이후는 그만큼 어렵지 않습니다. 그 수준에 도달하기까지 보통 독학을 많이 하다 보니 기술을 익히고 난 후 어떤 유용한 일을 할 것인지에 대해 방황하는 모습을 주변에서 가끔씩 봅니다. 제 경우에는 카이스트 스팍스 동아리(http://sparcs.kaist.ac.kr/)에서 여러 선배들을 역할 모델로 제가 이 앞으로 길을 갈 때 어떤 모습으로 살아갈지에 대해 감을 쉽게 잡을 수 있었고 또 제가 오픈 소스 커뮤니티에서 활동하는 모습을 보는 후배들이 ‘저렇게 되고 싶다’, ‘저렇게 할 수 있겠구나’하는 생각을 할 수 있게 되는 것 같습니다. 이런 부분들이 중요하다고 생각하고 그런 환경에 있다는 점에 감사하고 있고요. 독학해서 배우는 경우가 많다보니 아직까지 전산학 또는 프로그래밍을 어떻게 가르치거나 배우는 것이 정답이라고 말할 수 있을 정도의 체계화된 교육 방법론은 없는 것 같습니다. 사실 저도 독학해서 배웠지만 처음 시작하는 다른 사람들에게 프로그래밍을 어떻게 가르쳐줘야 할지에 대해선 자신이 없고요. 다만 독학이든 누군가로부터 배운 것이든 기본적인 프로그래밍 기술을 익힌 다음에 무엇을 할 것인지는 동아리, 오픈 소스 커뮤니티 활동이 크게 영향을 주는 것 같습니다.

가장 많은 영향을 받은 역할 모델은 누구인가요.
신정규 님과 노정석 님입니다. 제가 꼭 그 두 분처럼 살지는 않겠지만 두 분의 삶에서 많은 성찰이나 영감을 얻었다고 할 수 있습니다. 서로 인생 이력이 다른 두 사람이 만나 오픈 소스 커뮤니티와 회사라는 형태로 여러 사람을 이끌고 한 가지 이상을 향해 가는 모습을 가까이에서 지켜보면서 여러 가지를 느꼈고, 그런 점들이 제 인생에 많은 영향을 주리라 생각합니다.

오픈 소스 개발에서는 의사소통 능력이 중요한데 어떻게 준비하셨나요.
스팍스 활동이 밑거름이 됐습니다. 동아리라는 것이 같은 것을 순수하게 좋아하는 사람끼리 모여 일을 한다는 것 외에도 동아리에 조직 체계가 생기고 사람이 많아지다 보면 일시적으로 분파나 갈등도 생기고 다시 화해도 하는 등 복잡다단한 인간관계가 생기는데 저는 동아리 활동을 통해 인간관계의 복잡함을 빨리 경험한 것이 다른 곳에서 상대적으로 의사소통을 하는 데 어려움을 겪지 않을 수 있었던 요소가 됐다고 생각합니다.

스스로 가장 많이 성장했다고 느낀 때는 언제인가요.
지난해 스웨덴 교환 학생으로 다녀온 기간입니다. 다른 나라에서 비슷한 분야를 공부하는 제 또래 젊은이들은 무슨 생각을 하고 사는지 보면서 한편으로는 스스로에 대해 자신감이 생긴 계기가 됐고 다른 사람들에게 적극적으로 다가가는 데 큰 힘이 됐습니다. 아무도 아는 사람이 없는 지구 반대편 동네에 혼자 뚝 떨어져 있으니 뭘 하려면 누군가한테 말이라도 걸어야 했는데, 그때부터 사람들에게 뭔가 물어보고 말 거는 걸 두려워하지 않게 되었죠. 교환 학생으로 가기 전 2년 정도의 오픈 소스 활동 기간과 함께 제 자신이 가장 크게 성장한 시기라는 생각이 듭니다.

스웨덴에서는 무엇을 공부하셨나요.
컴퓨터 과학 중 병렬 계산과 머신 러닝 등을 공부했습니다. 당시에는 카이스트 학부 과정에 없던 과목이어서 그에 대해 공부하고 싶은 욕구를 채우려고 공부했습니다. 또 스웨덴이 HCI나 디자인 분야에서 강점을 보이는 나라여서 그와 관련된 수업도 들었습니다.

웹이나 게임 같은 응용 분야부터 병렬 계산 같은 분야까지 다양하게 공부하셨는데 개인적으로 적성에 맞는다고 느끼는 분야는 무엇인가요.
답하기 어려운 문제인데요. 개인적으로 각 분야에 대해 느끼는 것을 말씀드리면... 웹 쪽은 수학적인 것을 요구한다거나 알고리듬을 잘 만들어야 한다는 도전은 덜 한 대신 다양한 환경과 표준을 고려해야 하는 특성 상 폭넓은 경험이 중요한 분야 같고, 병렬 계산이나 시스템 분야는 작은 아이디어에 기초를 두고 혁신이 이뤄지는 경우가 많아 그것을 수학적으로 분석하고 다른 사람에게 설득하는 것이 중요하다는 느낌을 받았습니다. 개인적으로는 순수 알고리듬을 연구하는 것은 적성에 맞지 않는 것 같고요, 프로젝트를 통해 상대적으로 긴 시간 동안 체계적으로 쌓아나가면서 뭔가 이뤄내는 쪽이 더 어울리는 것 같습니다.

교환 학생 시기에 공부한 것이 인턴 생활(NexR)로 이어졌는데 실제 업무를 해본 소감은...
교환 학생 때는 MPI를 이용한 프로그래밍을 공부했습니다. MPI는 하나의 알고리듬 프로그램이 여러 대의 컴퓨터에 나뉘어 있고 데이터를 분산해 각각 처리한 후 합치는 모델인데 기본적으로 각각의 프로그램이 독립된 노드에서 실행되어 동기화 문제는 별로 없었지만 메시지 패싱으로 인한 경계 조건을 조절하기가 까다로웠습니다. 그에 비해 지금 쓰는 맵/리듀스(Map/Reduce) 모델은 데이터 관리에 대한 복잡함을 없애 더 명료하고 간단한 프로그래밍 모델로 상당히 많은 영역을 커버할 수 있다는 점이 의미가 있다고 생각합니다. 앞으로 많은 알고리듬이 맵/리듀스로 재작성되지 않을까 예상하고 있고 그런 면에서 가능성을 보고 있습니다. 회사에서도 아이디어를 많이 내도록 장려해서 재미있게 일하고 있습니다.

가장 인상 깊었던 소스 코드는 무엇인가요.
푸티(Putty)라는 프로그램의 소스입니다. 푸티는 순수 C로 만든 크로스 플랫폼 ssh 클라이언트입니다. 제가 한글판 푸티의 관리자이다 보니 소스를 보면서 알게 된 것인데 자체적인 추상화 레이어를 중간에 하나 만들고 그 위에서 UI 등을 만들게 되어 있고 그 밑에는 운영체제별로 다른 부분을 둔 구조였습니다. C 자체는 객체 지향적으로 설계되지 않았지만 쓰기에 따라서는 이렇게 쓸 수도 있다는 걸 알게 되었습니다. 또 상당히 방대한 코드인데 구조화를 잘 해서 복잡한 코드지만 잘 따라가면서 볼 수 있게 해둔 것도 배운 점이 많았습니다.

스스로를 위해 만들었던 프로그램 중에 가장 기억에 남는 것은 무엇인가요.
개인적으로 가장 오래 사용했던 프로그램은 중학교 때 만들었던 ‘최신 정보 뷰어’라는 것입니다. 비주얼 베이직을 이용해 인터넷 익스플로러를 임베드한 간단한 웹 브라우저 형태였습니다. 당시에는 파이어폭스에 대해 몰랐고 인터넷 익스플로러를 쓰다 보면 새 창이 많이 열리는 데 그 때 생기는 불편함을 풀려고 MDI 방식의 웹 브라우저를 구현한 것입니다. 인터넷 익스플로러를 대신해 2년 정도 제 주(main) 웹 브라우저로 썼는데 그걸 만들면서 웹 브라우저 내부 동작 방식과 컨텍스트 개념을 이해할 수 있었습니다.

앞으로 도전해 보고 싶은 프로젝트가 있다면...
참여할 수 있을지는 잘 모르겠지만 한글 형태소 분석기를 오픈 소스로 개발했으면 좋겠다는 바람이 있습니다. 지난 학기에 자연 언어 처리 수업을 들으면서 텍스트큐브 API 서비스를 개발하고 있는데 거기에 탑재하려는 것이 블로그 본문을 분석해 지역 태그를 자동으로 달고 지도 서비스와 연동하는 기능입니다. 그 개발 프로젝트를 하면서 어려움을 느낀 것이 공개된 한글 형태소 분석기가 없다는 점이었습니다. 유럽권 언어는 공개된 형태소 분석기가 있는데 한국어는 이론적으로는 형태소 분석 체계가 완성되어 있지만 무료 또는 자유롭게 쓸 수 있도록 공개된 것이 없었습니다. 오픈 소스 한글 형태소 분석기가 실현된다면 전산학이 사회적으로 기여할 수 있는 부분이 꽤 많다고 보기 때문에 제가 개인적으로 그런 부분에 도움이 될 수 있다면 좋겠습니다.

악기 연주도 하고 합주도 하시는 것으로 알고 있습니다.
몇 년 간 피아노를 정식으로 배웠고 10여 년간 쳐왔습니다. 정교하게 연주하는 것은 아니지만 제 스스로 즐기는 수준입니다. 카이스트에는 실내악 앙상블이라는 수업이 있는데 곡을 정해 연습을 하고 마스터 클래스처럼 배우고 학기말에 공연을 하는 형식입니다. 그 수업을 통해 배운 것이 많았습니다. 피아노는 독주 악기라 혼자 감정에 따라 흘러가기 쉬운데, 다른 사람과 함께 연주를 하려면 기본적으로 박자가 맞는 상태에서 감정을 넣어야 하기 때문에 다른 사람과 협력을 할 때 어떻게 서로 맞추는지를 배웠고, 그렇게 협력하는 과정에서 마음을 맞추려면 친해질 수밖에 없기 때문에 사람들 사이의 인터랙션에 대해서도 경험해 볼 수 있었습니다. 간접적으로는 다른 사람들과 프로그래밍을 할 때도 도움이 됐습니다.

앞으로 계획은 무엇인가요.
단기적으로는 여름 방학 동안 인턴을 하고 그 다음에는 대학원 진학을 준비하려 합니다. 대학원 이후에 대해서는 아직 구체적으로 생각해보지 않았습니다. 좀 다른 차원의 비전이라면... 어렸을 때부터 예술, 과학에 관심이 많았고 그 중에서도 전산이 독특한 분야라고 생각하는데 전산을 잘 하려면 인문학을 잘 해야 한다는 생각을 요즘 하고 있습니다. 여기에서 말하는 인문학은 사람 사이의 관계를 다루는 것을 말하는데요. 예술, 인문, 전산이 접목될 수 있는 일을 하면 어떨까 하는 생각을 막연하게나마 하고 있습니다.

[김준기 소개] 2005년 카이스트에 입학해 전산학과 학사 과정에 있고, 태터툴즈/텍스트큐브 오픈 소스 프로젝트에 참여하여 니들웍스의 일원으로 활동하고 있다. 현재 넥스알(NexR)에서 인턴으로 일하며, 일반 사용자들을 위한 파이어폭스 가이드 책을 준비 중이다. 컴퓨터뿐만 아니라 음악 등 다양한 분야에 관심이 있다.



이 문서 북마킹 하기

mar.gar.in mar.gar.in naver naver eolin eolin del.icio.us del.icio.us

[지난 인터뷰 보기]



위로


뉴스레터
 
  
자바스크립트가 작동이 중지되었습니다. 이 기능을 수행하시려면 브라우저에서 자바스크립스트를 작동시켜 주시거나 이곳을 클릭해주세요.
사이트 여행

dW 커뮤니티
포럼 | 블로그 | Spaces
dW Student Community

로컬 컨텐츠

행사 및 세미나

기획 기사

개발자 입문

튜토리얼 및 교육

TOP 10 인기자료

SW 다운로드

RSS 피드


Special offers
Screencast
IBM SOA Sandbox 시험판
dW Student Community
로보코드
코드 트레이닝


    IBM 소개 개인정보 보호정책 문의