본문 바로가기
IT-개발트렌드

[개발] 성공한 프로그래머란

by SB리치퍼슨 2010. 10. 19.


프로그래머, 훌륭한 프로그래머란….

과연 내가 성공한 프로그래머라고 말할 수 있는지 내 스스로 확신할 수는 없다. 나는 다만 어떻게 하면 완벽하게 알고리즘을 만들어 프로그래밍을 해야 할지 항상 생각하고 있고, 학교에서 강의를 통해 학생들이 좋은 프로그래머가 되기 위해 어떻게 해야 하는지 계속 훈련시키고 있을 뿐이다.

또 미국의 한 소프트웨어 회사의 연구소를 방학마다 방문해 데이터베이스와 데이터마이닝 등 여러 문제를 놓고 어떻게 하면 아무런 문제없이 쓸 수 있는 소프트웨어를 더 완벽하게 만들 수 있는지를 항상 고민하고 있다.

'그냥 컴퓨터랑 프로그램이 미칠 정도로 좋아서' 거기에 푹 빠져 평생 살아온 것이고, 그래서 전공도 전산학으로 바꿔 소프트웨어의 본고장이라 말할 수 있는 미국에서 공부하고, 미국의 HP, IBM, 루슨트, 마이크로소프트 등 여러 소프트웨어 회사에서 큰 프로젝트를 수행한 경험을 갖고 있을 따름이다.

하지만 가만히 생각해 보니 과연 진정한 프로그래머란 무엇일까라는 질문에 대해 내 나름대로 한번 골똘히 생각해보는 것이 가치있는 일인 것 같고, 또 IT의 강국이라 불리우는 미국에서의 경험이 프로그래머가 되려하는 국내의 많은 이들에게 조금이나마 도움될 것 같아서 내가 그동안 살아온 인생 역정을 간략하게 소개하기로 한다.

부족한 점이 있더라도, 혹은 나와 다른 생각을 가진 독자가 있더라도 너그러이 이해해주길 바란다.

컴퓨터에 푹 빠졌던 그 시절
내가 프로그래밍에 처음 관심을 갖게 된 것은 1983년 여름방학으로 거슬러 올라간다.

당시 국내에서는 퍼스널 컴퓨터에 대한 기술이나 노하우가 전혀 없었던 실정에서 삼성전자와 금성사(지금의 LG전자)는 일본의 NEC에 돈을 주고 PC의 설계를 의뢰해 그 설계대로 PC를 만들어 국내에 판매하고 있었다.

그때만 해도 뭄?컴퓨터는 단지 베이직이라는 언어만을 제공하고 있었다. 또한 청계천의 전자상가에서는 미국 애플 컴퓨터를 불법으로 복제해 팔고 있었고, 애플 컴퓨터의 여러 고급 언어뿐만 아니라 수많은 소프트웨어가 불법으로 국내에 유통되고 있었다.

당시에는 국내 기업들이 PC를 사거나 약간의 수강료를 낼 경우 자사의 컴퓨터를 쓸 수 있도록 1주일 정도 간단하게 베이직 언어 등을 가르쳐줬다. 나도 그때 컴퓨터가 무엇인지 알기 위해 수강료를 내고 1주일 동안 금성사의 퍼스널 컴퓨터를 배웠다.

나에게 있어서 PC는 너무나 신기한 것이었다. 음악을 연주할 수 있고, 그림을 그릴 수도 있고, 또 간단한 수학적인 것들을 계산해 볼 수도 있고, 주어진 숫자들을 정렬할 수도 있었다. 이러한 것들은 대학 2학년생이던 나를 너무나 매료시켰다. 일주일 동안 배운 내용으로는 부족한 것이 많아 동화서적에서 나에게 컴퓨터를 가르쳐준 강사를 계속 찾아가 궁금한 것을 물어 보며 배우기 시작했다.

하나씩 알아가는 기쁨이 있었던 PC
그때는 정말 밤새도록 프로그래밍을 하면서 내가 원하는 것이 PC로 수행되는 것을 볼 땐 정말 즐거웠다. 국내에 PC에 대한 서적이 거의 없는 현실에서 이것저것 베이직 인터프리터의 내용을 분석해 하나씩 알게 될 때마다 그 기쁨은 이루말할 수 없었다.

사실 베이직 인터프리터라는 것이 기계어로 돼 있어 C++와 같은 고급언어로 돼 있는 프로그램과 달리, 눈으로 보고 이해하기는 많은 어려움이 있었다. 그래서 인터프리터의 기계어를 역 어셈블해 하나하나 분석한 후에 이해할 수 있었을 때는 정말 뛸 듯이 기뻤다. 또 청계천의 서점에서 일본책들을 구해, 비록 국내 PC와 호환성은 없는 내용이지만 바꿔서 국내 퍼스널 컴퓨터에서 돌아가게 했을 때, 그 기쁨은 말할 수 없었다.

어렵게 알아낸 만큼, 알아낸 내용을 값지게 활용하고픈 욕심은 어쩌면 당연한 것이었다. 국내에서 주최하는 각종 PC 경진대회에 출전해 여러번의 입상 기회를 가질 수 있었다. 1985년 대우전자에서 주관하는 소프트웨어 공모전에서 금상을, 과기처주관 소프트웨어 경진대회의 경시부문과 공모부문에서 문교부 장관상과 상공부장관상을 각각 수상했다.

또한 1985년부터 1987년에 걸쳐 마소에 'MSX의 모든 것'을 시작으로 여러 편의 글을 기고하기도 했다. 당시에 MSX는 여러 회사의 PC 소프트웨어들의 호환성을 보장하기 위해 제안된 표준사양이었다. 그때엔 이처럼 하나하나 분석해 알아낸 것들을 국내에 알려주는 일 역시 큰 기쁨 중에 하나였다.

프로그래머 인생의 새로운 출발, 미국으로의 유학길
이렇게 퍼스널 컴퓨터와 씨름하면 할수록 궁금증은 더해만 갔다. 예를 들어 정렬 알고리즘들이 왜 여러 가지가 존재하는지 나는 사실 이해할 수 없었다. 단지 책에 나와 있는 내용을 그대로 베껴 수행시켜보면 알고리즘에 따라 수행속도가 무척 다르다는 점만 알고 있었다.

하지만 내가 사서 봤던 일본 서적들은 단지 라이브러리처럼 소스 코드를 보여주기만 할 뿐, 왜 같은 데이터로 다른 수행속도를 보이는지에 대해서는 전혀 설명하지 않았다.

나의 이러한 호기심은 전산학 과목을 들으면서 조금씩 해소되기 시작했다. 자료구조론, OS, 컴파일러, 시스템 프로그래밍 등의 강의는 나의 궁금증을 조금씩 해소시켜줬다. 하지만 국내에 전산학을 제대로 전공한 사람들이 당시에는 별로 없었으며, 시대적 여건 또한 힘든 상황이었기 때문에, 나는 미국에 유학가기로 마음을 먹었다. 유학을 가기로 마음을 정한 후에는 정말 열심히 공부했다.

하지만 웬만한 부자가 아니라면 유학은 꿈도 못꿀 일이었다. 가난했던 내가 유학을 가기 위해서는 미국의 학교에서 재정적인 보조를 받아야만 했기 때문에, 좋은 학점을 받아야만 했고, 그래서 열심히 공부했다.

본격적으로 전산학 교육을 받으면서
마침내 졸업할 땐 내가 공부했던 전기공학과에서 수석으로 졸업할 수 있었고, 미국에서 전산학 분야로 이름난 학교 중 하나인 University of Maryland at College Park의 전산학과 대학원에서 학비 전액 면제와 생활비 보조를 받으며 공부할 수 있는 기회를 얻었다. 전산학과를 졸업하지 않았어도, 다른 학부 전공에서 우수한 성적을 얻은 만큼, 전산학을 하더라도 잘할 거라고 믿어주는 교육 시스템은 기꺼이 나를 받아준 것이다.

나는 사람들에게 기회를 주는 미국의 시스템을 존경한다. 내가 전산학을 할 수 있었던 것도 사실은 유학을 갔기 때문에 가능했던 것 같다. 당신 국내 대학원에 진학하려면 전산학 관련 과목의 시험을 봐야했고, 또 해당 학과를 나오지 않으면 대학원 진학이 무척 힘들던 시절이었다. 하지만 미국 대학들은 그런 점에 상관하지 않고 나에게 기회를 줬고, 프로그래머로서의 내 인생은 달라졌다.

대학 1학년 때 지하철을 타고 가다 리더스 다이제스트 잡지에서 읽었던 한 구절의 글이 인상깊은 기억으로 남아있다. "항구에 정박해 있는 배는 안전하다. 그러나 배는 항구에 묶어두기 위해 만든 것이 아니다". 그 글을 본 순간 나는 너무나 벅찬 감동을 받았다.

돌이켜 생각해 보면 그 글은 내가 인생을 살면서 여러 갈래의 길에 서게 될 때마다 어려운 길일지라도 항상 도전할 수 있는 힘과 용기를 갖게 해줬다. 아마 내가 어려운 가정 형편이지만 미국으로 유학을 가려고 시도했던 것도 바로 그 글 때문이 아니었을지….

창의력 기르기 위한 끊임없는 훈련 돌입
미국의 대학원에서 전산학을 공부하며 제일 먼저 놀란 점은 아무도 프로그래밍이나 숙제를 남의 것을 베끼지 않고, 누구나 스스로 한다는 것이었다.

또한 우리 나라의 주입식 교육 방식과 달리 창의력을 길러주기 위한 방향으로 교수가 가르친다는 점이었다. 예를 들어 전산과에 1학년으로 들어오면 그 당시에는 파스칼이라는 언어를 가르치는데, 프로그래밍을 할 때 쓸 수 있는 타입은 캐릭터만을 주고 정수(integer)나 실수(float) 타입은 전혀 쓸 수 없게 해서 프로젝트를 코딩하게 한다.

이렇게 하면 "I := I+1"과 같은 문장 하나를 수행시키려 해도, "0" 이면 "1"로 바꾸고 "1"이면 "2"로 바꾸는 한 자리 숫자에 1을 더하는 프로시쥬어를 먼저 만들어야 한다. 그 다음에 그, 프로시쥬어를 이용해 여러 자리의 수에 1을 더하는 프로시쥬어를 만들고 사용해야만 한다.

물론 이렇게 코딩하려면 기존의 언어에서 간단하게 할 수 있는 프로그램도 사이즈가 길어지고 아주 많은 잡일이 필요해진다. 하지만 쓸 수 있는 언어의 모든 기능을 허용하지 않음으로써, 학생들은 많은 생각을 해야만 하고 그렇게 해서 창의력이 길러지는 것이다.

또한 1부터 10까지 더하는 프로그램이 있을 경우, 그 프로그램이 정말로 그 합을 구한다는 것을 증명하는 방법을 학생들에게 가르쳤다. 당시 미국으로 공부하러 갈 때까지 프로그램을 증명 한다는 말은 들어보지도 못한 때였다.

또 자료구조라는 과목을 미국에서 들었는데 학기말 프로젝트가 LISP라는 언어의 인터프리터를 만드는 것이었다. 당시에 상용화 돼 팔리고 있던 소프트웨어를 학기말 프로젝트로 한다는 게 과연 가능할까 생각했지만, 그 과목을 공부하는 동안 그런 능력을 갖출 수 있도록 스케쥴대로 우리들은 훈련되고 있었다.

LISP라는 언어는 리스트, 스택, 해싱 등 자료구조 과목에서 배우는 모든 것을 실제로 사용해야만 완성할 수 있는 것이라서, 그 과목에서 배운 내용을 실제 사용할 수 있게끔 만드는 경험을 얻을 수 있도록 나를 훈련시켜줬다.

처음부터, 학부 과정부터, 다시 시작하는 마음으로
단지 생각나는 대로 주먹구구식으로 프로그래밍을 하던 나에겐 너무나 충격적이고 익숙하지 못한 시스템이었기에 처음에는 공부하기가 너무나 힘들었다. 시험 문제도 족보에서 나오지 않았으며, 암기해서 쓸 수 있는 문제 또한 시험에 전혀 나오지 않았다.

10년 된 강의 노트를 그대로 사용하지도 않았고, 숙제조차도 교수가 일일이 매번 새로 문제를 만들어 나눠주기 때문에, 항상 많은 시간 생각을 해야만 풀 수 있었던 문제들…. 그것들을 통해 나는 아주 느리지만 조금씩 창의력을 키워나갈 수 있었던 것 같다.

나는 그때까지 내가 배워왔던 모든 것을 떨쳐버리고 처음부터 시작한다는 마음을 먹기로 했다. 한국에서 '일류대'라 부르는 학부를 졸업했고, 과 수석을 했다는 사실은 모두 던져버리고 겸손해져야 제대로 배울 수 있다는 생각으로, 전산과 학부 과목부터 하나씩 들었다.

그로 인해 석사나 박사를 받는 시기가 늦어지긴 했지만, 어떻게 보면 오히려 학부 과목부터 하나씩 공부하고 기초부터 튼튼하게 키움으로써, 나중에 더 만족할만한 논문을 쓸 수 있지 않았나 싶다.

우리 나라에서 종종 20대 박사라는 둥, 박사과정을 몇 년만에 마쳤다는 둥 그런 이야기를 신문이나 잡지에 내세우고, 또 자부심을 갖는 걸 보면 참 한심하다는 생각이 든다. 미국에서는 그런 걸 별로 중요하지 않게 생각한다. 오히려 중요한 것은 얼마나 좋은 논문을 썼는가, 얼마나 세상에 영향을 끼칠 수 있는 것을 연구해 개발했는가를 더 중요하게 생각한다.

또 박사학위를 받은 후에 좋은 곳에 일자리를 얻기 위해 졸업을 할 수 있지만 일부러 졸업을 미루면서 더 좋은 논문을 많이 쓰려고 하는 경우도 많이 볼 수 있다. 사실 무조건 학위를 받는 것이 중요하다면 얼마든지 쉬운 논문 주제를 찾아 쉽게 졸업할 수도 있다. 하지만 단지 박사 학위만을 받는 것이 과연 무슨 의미가 있을까.

왜 데이터베이스인가, Because it is there!
나는 1988년에 컴퓨터 그래픽 분야로 석사논문을 썼고, 국내에 병역문제로 들어왔다가 다시 들어가서 1990년 여름부터 박사과정을 계속했다. 나는 여러 분야 중에서 데이터베이스 분야를 박사 논문주제로 연구하기로 했다. 관계형 데이터베이스 시스템(Relational Database System)에서는 SQL이라는 언어를 가지고 질의(Query)를 표현하는데, 이 언어에서는 데이터 중에서 무엇을 원하는지를 나타내면, 데이터베이스 시스템의 질의 수행에 있어 가장 최적의 수행 방법을 찾아 수행시켜준다.

이때 최적인 방법을 찾는 문제는 아주 복잡한 문제로(전산 용어로 NP-Hard의 클래스에 들어가는 문제임) 질의의 최적화(Query Optimization)라 불리운다. 이 최적화가 효율적으로 기능을 발휘할 때 비로소 데이터베이스 시스템이 초보자에게도 효과적으로 사용될 수 있다. 논문을 준비하던 당시에는 객체 지향형 모델(Object-Oriented Model)을 관계형 데이터베이스 시스템(Relational Database System)에 접목하려던 시점이었기 때문에 새로운 여러 질의 최적화 문제를 해결해야만 할 때였다.

질의 최적화의 문제들은 새로운 알고리즘을 만드는 것이었고, 프로그래밍을 즐겼던 나에게는 너무나 재미있는 문제들이었기 때문에 데이터베이스의 질의 최적화 는 나의 관심을 사로잡을 수 있었다.

이쯤에서 George Mallory라는 영국 탐험가 이야기를 꺼내려 한다. 그는 에베레스트 산의 등정을 최초로 여러 번 시도하다가 사고로 죽었는데 아직도 그가 에베레스트 산의 정상에 올라간 후에 죽었는지 아니면 오르지 못하고 죽었는지는 미스테리로 남아있는 부분이다. 그러한 그가 죽기 전에 많은 사람들이 그에게 왜 위험한데도 에베레스트 산을 자꾸 오르려 하냐고 질문했다. 그때 그는 이렇게 대답했다고 한다. "Because it is there."

만일 나에게 누가 왜 데이터베이스를 연구하게 됐는지 물어본다면 나도 그렇게 말하고 싶다. "엄청난 양의 데이터가 언제나 바로 내 옆에 있었기 때문이다"라고. 이젠 인터넷 전체가 커다란 데이터베이스나 다름없다. 간단한 컴퓨터와 인터넷만 있으면 나에게 필요한 모든 데이터를 쉽게 접근할 수 있는 시대가 돼버린 것이다.

완벽한 소프트웨어를 만든다는 것
박사 과정 중에는 데이터베이스의 최첨단 연구소 중 하나인 HP 연구소에서 Surajit Chaudhuri 박사의 섬머 인턴 학생으로 1992년과 1993년 여름에 공동으로 연구했고, 여러 편의 논문을 데이터베이스 분야에서 권위있는 여러 데이터베이스 학술회의에서 발표했다.

미국 실리콘밸리의 벤처 1호 회사라고 알려진 이 회사는 스탠포드 대학을 졸업한 윌리엄 R. 휴렛과 데이빗 패커드가 1939년 공동으로 차고에서 시작했다. 그들이 처음 만들어 판매한 제품은 오디오 오실레이터로 월트 디즈니사에 처음으로 납품했고, 그때 사용된 차고는 지금 미국 캘리포니아 주의 역사적인 사적지로 지정돼 있다.

이 회사의 연구소에서 느꼈던 것은 프로그래머들이 그냥 무조건 코딩을 하는 것이 아니란 점이다.

오랫동안 수많은 연구와 생각을 거듭해 자신이 디자인한 알고리즘이 전혀, 조금이라도 문제가 없다고 생각될 때라야 코딩을 한다. 그냥 일단 별 생각없이 코딩부터 시작하는 나의 초창기 프로그래머로서의 모습과는 너무나 대조적인 스타일이었다. 하지만 그것이 얼마나 중요한 일인지는 그 뒤로 명성있는 미국 소프트웨어 회사들에서 일하며 몸소 깨닫게 됐다.

코딩을 위한 기초 공사 튼튼히 해야
사실 보통 사람들은 프로그래밍을 하는데 주먹구구식으로 그냥 코딩부터 하는 경우가 많다. 하지만 강조하고 싶은 것은 훌륭한 프로그래머가 되려면, 우선 깊이 생각해서 알고리즘을 디자인한 후에 정말로 우리에게 주어진 문제를 완벽하게 수행해준다는 것을 증명하고, 수행 속도라든가 필요한 메모리의 양을 분석해야 한다는 것이다.

그런 다음에 정말로 코딩을 해서 실제 데이터를 갖고 알고리즘을 수행시켰을 경우 완벽하게 해낼 수 있는 완전한 시스템을 만들 수 있으리라는 확신이 섰을 때에 비로소 코딩해야 한다.

프로그래머가 되려는 사람 중에는 이러한 분석이나 디자인을 위해 필요한 기초인 자료구조, 오토메타 이론, 알고리즘, 데이터베이스, OS 등의 내용을 배우려하는 것을 등한시하면서도 프로그래머가 될 수 있다고 생각하는 이가 있다.

다시 한번 강조하지만 건물이나 다리를 짓는 데에 있어서도 지진이나 그밖에 다른 이유로 무너지지 않게 하려면 아주 정확한 계산에 의한 설계와 기초 공사가 아주 중요하다. 마찬가지로 완벽한 소프트웨어를 만들려면 그러한 것을 코딩하기 위한 기초가 되는 내용들을 열심히 공부해 튼튼히 쌓아야만 가능하다는 것이다.

IBM Almaden 연구소에서 데이터마이닝 연구
박사학위를 받은 뒤에는 우리 나라의 경제기획원에 해당하는 미국의 Federal Reserve Board의 리서치 부문에서 약 1년간 연구했다. 그때 놀란 것은, 그들이 전세계 수많은 나라의 경제에 관련된 데이터를 계속 모으고 있으며 그것을 이용해 세계 경제의 흐름을 이해하려 하고 또 자국의 이익을 위해 사용한다는 것이었다. 그렇기 때문에 우리 나라에 몇 년전에 발생했던 IMF도 미국이 먼저 알았다는 말이 나온 게 아닐까 생각한다.

내 생각엔 미국의 힘은 그들이 계속 모아오고 있는 수많은 데이터인 것 같다. 지금도 계속 우주에서 보내오는 우주 사진들을 후세를 위해 미국은 계속 그냥 모아놓고 있다.

어떻게 보면 지금 바로 쓸 수도 없는 그 많은 양의 데이터를 계속 수집하고 있는 것이 무슨 소용이 있나라고 의아해하고 있는 사람들도 있을 것이다. 하지만 사실 나중에 그 데이터들을 사용할 수 있는 기술들이 개발될 때를 위해 지금의 데이터를 수집하고 있는 미국의 개척자적인 모습은 역사가 짧을지라도 세계적으로 앞서가는 나라를 만들 수 있었던 저력이라 생각한다.

내가 Federal Reserve Board에서 일하는 동안 소프트웨어분야의 최첨단 연구소 중 하나인 IBM Almaden 리서치 센터의 Rakesh Agrawal 박사가 막 시작하려던 퀘스트 데이터마이닝 프로젝트에 참여를 제안 받았다. 그 당시에는 미국의 여러 기업이 상업용 데이터베이스 소프트웨어를 이용해 자사의 소비자들에 대한 정보를 모두다 컴퓨터에 보관하고 있었다.

하지만 마케팅이나 CRM(Customer Relationship Management) 등에 그 데이터를 어떻게 이용해야 할지 전혀 모르고 있던 시절이었고, 그렇기 때문에 이 데이터에서 유용한 정보를 찾아내려는 데이터마이닝이라는 분야가 처음 태동되는 시기였다.

내가 대학원에서 전공한 분야와 다른 새로운 분야를 시작한다는 것이 조금은 주저가 되었지만 새로운 분야를 개척해보고 싶은 열망과 훌륭한 연구소 중 하나인 IBM Almaden 리서치 센터에서 일하고 싶어 흔쾌히 제안을 받아들였다. 그 후로 1994년부터 1996년까지 Rakesh Agrawal 박사와 열심히 데이터마이닝 분야에 대해 연구했다.

내가 그때 연구하고 코딩한 것들 중에는 IBM에서 상용화해 현재 팔고 있는 데이터마이닝 소프트웨어인 IBM Intelligent Miner의 주요 엔진의 일부로 현재 많은 사람들이 사용하고 있다.

그곳에서 본 프로그래머의 모습
나는 이 프로젝트의 초기에 참가해 최첨단의 새로운 분야의 연구를 주도하는 자세와 방법, 그리고 실제 상업용 시스템 소프트웨어를 개발하는 값진 경험을 습득할 수 있었다. 우선 이들은 계속 공부한다는 점이다.

가까운 대학에 나가 계속 새로운 지식을 배우고, 또 자기가 참여하고 있는 프로젝트에 관련된 유명한 사람들을 불러 계속 세미나를 듣고 또 회사에서 그러한 일에 투자하는 것을 아깝게 여기지 않았다. 왜냐하면 나중에 그들이 프로그래밍을 프로젝트를 위해 일할 때에 다 쓰일 것이기 때문이다. 또한 그들은 누구나 코딩을 잘한다.

한국에 돌아와 국내 연구소에서 일하는 사람들로부터 종종 듣는 얘기가 있다. "나는 코딩 같은 것은 안한다"고. 우리 나라 연구소에서는 코딩을 하면 마치 수준이 낮은 것처럼 평가받는 듯하다.

하지만 세계적으로 유명한 소프트웨어 회사의 명망 있는 연구원들은 누구나 코딩을 잘 한다. 코딩을 하지 않으면 실제 소프트웨어를 디자인할 때 병목현상이 어디서 발생하는지, 실제 소프트웨어가 돌아가는 데 있어 어떤 것을 해결해야 하는지를 잘 알 수 없다. 그렇기 때문에 좋은 논문을 쓸 수 없고 소프트웨어를 만든 후에 생각지도 못한 일들이 생겨 수년동안 애써 일한 것이 모두 수포로 돌아가는 경우가 많다.

IBM이나 마이크로소프트를 비롯한 소프트웨어 회사 연구소의 연구원들은 프로그래밍에 있어서도 세계 최고 수준이다. 또한 디버깅을 위해 사용할 수 있는 여러 가지 툴을 아주 적절히 사용할 수 있는 능력을 갖추고 있어, 빠른 시간 안에 프로그래밍을 할 수 있는 능력을 갖고 있다.

세상 사람들에게 널리 유용하리라고 생각하고 연구해 개발하고 디자인한 알고리즘들을 회사에서 상용화하도록 밀고 나가려면 우선, 프로토 타입도 스스로 만들어 데모도 하고 그 가능성을 또한 보여줘야하기 때문이다. 그렇기 때문에 나는 교수이지만 아직도 많은 경우에 스스로 코딩을 할 때가 많다. 그리고 코딩을 직접 할 때마다 대학생 시절 프로그래밍에 빠져들었던 때의 열정을 다시 조금이나마 경험하곤 한다.

벨 연구소에서 Serendip 데이터마이닝 프로젝트를 시작
나는 IBM Almaden 연구소에서 경력을 쌓고 있는 동안 전산 분야의 세계적인 연구소인 벨(Bell) 연구소로부터 데이터마이닝 프로젝트를 새로 시작해보지 않겠냐는 제안을 받았다. 벨 연구소는 수많은 노벨상 수상자를 배출한 곳으로서, 현재 모든 전자제품의 반도체에 사용되는 트랜지스터를 최초로 개발한 곳이다. 또한 지금 보편화돼 사용하고 있는 레이저를 개발한 아주 명성 높은 연구소다.

IBM에서 Rakesh Agrawal이라는 대가의 지도를 받으며 연구하는 것도 좋았지만, 언젠가는 내 스스로 큰 프로젝트를 주도해 수행하려면 경험을 쌓아야 하므로 그 제안을 흔쾌히 받아들였다. 그리하여 1996년 3월 Bell 연구소로 옮겨, 그곳에서 Serendip 데이터마이닝 프로젝트를 Rajeev Rastogi 박사와 함께 시작해 많은 공동연구를 했다.

옛날에 페르시아에 'Serendip'이라는 조그만 나라가 있었는데 그 나라의 왕자들은 어디를 가든지 생각지도 않았던 아주 소중하고 값진 것들을 발견하는 재주가 있었다고 한다. 여기서 유래된 Serendip이라는 단어는 Serendipity의 어원으로써 '생각하지도 않았던 값진 것을 우연히 찾는 것'을 뜻한다. 그렇기 때문에 내가 Bell 연구소에서 시작한 데이터마이닝 연구의 프로젝트 이름으로 이 단어를 사용했다.

약 4년 동안, 나는 KAIST에 조교수로 부임하기까지 다수의 논문을 명성있는 국제 학술회의에 발표했으며, 또한 국제 저널에 다수의 논문을 게재했다. 나는 이 프로젝트의 리더로서 연구를 성공적으로 수행함으로써 데이터마이닝 분야에서 나의 공헌을 인정받는 계기를 얻었다. 이 프로젝트에서 개발된 수많은 연구는 현재 미국 특허를 이미 받았거나 신청 중에 있다.

나는 또 벨 연구소에 있는 동안 매년 섬머 인턴으로 미국의 대학에서 여러 학생들을 받아 지도해 내 분야의 최고 국제 학술회의에 논문을 실을 수 있도록 했다. 돌이켜 보면 나는 벨 연구소의 경험을 통해 새로운 최첨단 분야의 프로젝트를 스스로 제안하고 개척해 리더로서 성공하도록 수행하는 방법을 터득했다.

우리 나라에 돌아와서
미국에서 성공적으로 해당 분야에서 명성을 쌓고 있는 동안에 항상 마음 한구석에는 내가 40대가 되기 전에 적어도 몇 년만이라도 나의 조국을 위해 일해야 한다는 생각에 종종 잠기곤 했다. 하지만 그 결정이 쉽지는 않았다. 왜냐하면 프로그래머에게 환경이 아주 잘 정착돼 있는 미국에서 일하는 것이 너무나 효율적이고 편하기 때문이다.

하지만 언젠가 '이집트의 왕자'라는 디즈니의 만화영화를 영화관에 가서 아이들과 함께 보다가 이집트에서 최고의 교육을 받고 이집트의 왕자가 됐지만, 자기 민족을 위해 이집트 왕자로서의 모든 부귀와 영화를 버리고 과감히 이집트를 떠난 그의 마음을 이해할 수 있었다. 그 이후로 국내에 돌아오기로 결정하고 KAIST에 부임했다.

KAIST에서 강의하는 일과 함께 전자상거래와 인터넷 검색 엔진, 그리고 인터넷 보안에 관련된 연구도 데이터마이닝과 함께 열심히 연구하고 있다. 특히 전자상거래와 인터넷에서 차세대에 주로 사용될 예정인 XML 형태의 효율적인 처리에 관해 미국 마이크로소프트 연구소와 공동으로 연구를 활발히 진행하고 있고, 또 벨 연구소와도 계속 데이터마이닝에 관해 연구하고 있다. 지난 겨울에도 미국의 시에틀에 위치한 마이크로소프트 연구소에 방문 과학자로 초대돼, 마이크로소프트의 XML 관련 인터넷 소프트웨어의 효율성을 위해 열심히 연구했다.

간단히 논문 한편 쓰는 것과 실제 사람들에게 사용될 수 있는 완벽한 소프트웨어를 만들기 위하여 연구하는 것은 큰 차이가 있다. 실제 소프트웨어를 코딩하기 전에 아무런 문제가 없다는 것을 완벽하게 증명해야 하고 이것저것 고려할 것도 많기 때문이다.

그렇기 때문에 더욱더 어렵고 힘든 일이지만 또 그렇기 때문에 가치 있는 일이라 생각한다.

세계 소프트웨어 시장으로 진출하기 위해
우리 나라에 돌아온 뒤에는 국내 산업에도 기여하고 싶어 와이즈엔진(www.wisengine,com), 엠브레인(www.embrain.co.kr), 그리고 에어마인(www.airminesoft,com) 등의 국내 벤처 회사들에 데이터마이닝과 인터넷 관련 소프트웨어 기술에 대한 자문을 해주고 있다. 우리 나라도 미국처럼 한 사람이 수천 명을 먹여살릴 수 있는 그런 소프트웨어 회사들이 나올 수 있기를 기대한다. 그러기 위해 강조하고 싶은 것이 있다면 우리도 우리 기술을 가져야 한다는 것이다.

또한 나는 교육의 중요성도 새로이 인식하고 학생들의 전산학과목도 열심히 성심을 다해 강의하려 한다. 특히 학생들을 세계적인 수준으로 만들기 위해서는 영어의 필요성을 너무나 깊이 인식하고 있고 또 국제화시키기 위한 일환으로 KAIST에서 내가 강의하고 있는 모든 과목을 영어로만 진행하며, 시험이나, 숙제, 그리고 프로젝트 모두 영어로 내주고 있다. 영어 역시 훌륭한 프로그래머가 되기 위해 갖춰야할 것 중 하나라고 강조하고 싶다.

전산학 분야에서 앞서가고 있는 선진국을 따라 잡으려면 영어를 잘해서 그들이 만들어 놓은 논문이나 책을 빨리 이해하고 우리 것으로 만들 수 있어야 하기 때문이다.

또한 우리가 어떤 소프트웨어를 만들든지 작은 국내 시장에서 안주하지 말고 세계 시장으로 나가야 할 것이다. 그러기 위해서는 영어가 아주 중요한 역할을 한다고 생각한다.

우리는 그들에게서 무엇을 배워야 하나
전산학 분야는 노벨상이 없지만 그 대신 튜링상(Turing Award)이라는 것이 있다. 내가 말하고 싶은 건 이 상을 받았던 역대 수상자들은 논문 개수로 받은 것이 아니라 별로 많지 않은 논문일지라도 그 연구 결과가 이 세상에 끼친 영향이 너무나 크기 때문에 받았다는 사실이다. 국내 최고니 아시아에서 최고니 그런 건 별 의미가 없다. 세계 최고의 기술력을 확보할 수 없다면 경쟁력을 갖출 수 없기 때문이다.

현재 내가 몸담고 있는 KAIST뿐만 아니라 국내의 다른 대학들도 세계적인 대학으로 발돋음할 수 있기를 진정 바라고 있다. 그러기 위해서는 교수와 학생에 대한 대우나 평가도 세계적인 명문대학 수준으로 해줘야 한다고 생각한다.

그러지 않고 어떻게 세계적인 수준으로 우리들이 갈 수 있겠는가. 또 그렇게 되지 않고 어떻게 선진국의 소프트웨어 회사들과 경쟁할 수 있겠는가. 같은 환경이라도 우리는 뒤늦게 출발해 더 어려운 상황이니 말이다.

지금 많은 학생이 유학을 떠나고 있고, 또 많은 학생들이 학부나 석사과정만 마치고 더 이상 박사학위에 지원하지 않고 있다. 그렇기 때문에 국내 대학에서 일하는 나와 같은 교수들은 같이 연구할 학생들이 없어 더욱 어려움에 처하고 있다.

하지만 어쩌면 국내 대학이 학생들에 대한 자세를 선진국의 명문 대학처럼 바꾸려고 노력할 수 있는 계기가 될 수 있을 것 같아 한편으로는 기쁘다. 왜냐하면 대학의 주인은 교수나 교직원이 아니라 바로 학생들이기 때문이다. 우리 나라의 대학들이 이것을 인식하지 못하고 구태의연하게 있는 동안 학생들이 점점 빠져나갔기 때문이다.

나는 또한 공부를 중단하고 벤처 회사로 나가는 학생들에게 한 가지 당부하고 싶은 게 있다. 선진국의 소프트웨어의 벤처 회사에서 일하는 많은 이들은 전산학 공부를 대학원 과정을 통해 열심히 훈련을 받은 후에 자기만의 기술을 독자적으로 개발했기 때문에 가능한 것이지, 탄탄한 기초와 자기만의 기술이 없이 그냥 아무렇게나 시작한 것이 아니라는 것이다.

또한 자신이 개발한 소프트웨어는 모두 특허를 신청해 자사의 지적 재산권을 보호하고 있다. 이러한 것들을 우리 나라의 프로그래머들도 배워야하지 않을까.


하나에만 몰두하는 바보가 되라
내가 미국에서 공부하면서, 그리고 미국의 많은 소프트웨어 회사의 연구소에서 일하면서 느낀 점은 미국의 학생들은 정말로 전공하는 학문을 좋아하기 때문에 대학에 오고 또 대학원에 진학한다는 사실이다. 그렇기 때문에 정말로 열심히 열정적으로 한 가지만 공부하고 연구한다. 영화 '포레스트 검프'에 나오는 주인공처럼 한 가지만 몰두해서 바보처럼 일할 때 우리는 그 분야의 전문가가 될 수 있다. 또 그렇게 할 때 정말 뭔가를 이뤄낼 수 있다는 생각이 든다.

만일 어떻게 하면 성공한 프로그래머가 될 수 있냐고 나에게 묻는다면 난 이렇게 말하고 싶다. 정말로 프로그래밍이 미칠 정도로 좋으냐고. 컴퓨터만 보면 미친 사람처럼 좋은지, 프로그래밍을 하면 정말로 즐거운지 묻고 싶다. 만일 여러분이 그렇다면 프로그래머로서 성공할 수 있는 가능성을 충분히 갖췄다고 생각한다. 그 다음은 앞서 말한 기본적인 기초 과목을 공부해 기반을 튼튼히 다져서 어떤 것을 코딩하든지 완벽하게 하려는 열정을 갖도록 하라. 그리고 나이에 상관하지 말고 계속 공부하라.

미국의 대학에 있다보면 30대에서 60대까지 다양한 연령층이 대학에 와서 대학생들과 함께 전산학 강의를 듣는 것을 볼 수 있다. 그렇게 계속 공부하지 않으면 프로그래밍에 관해서 새로 개발된 좋은 언어나 알고리즘을 이용할 수 없어 코딩한 프로그램이 비효율적일 가능성이 높다. 전산학 자체가 물리나 화학과 같은 분야처럼 고전적인 학문이 아니고 지금도 계속 새로운 내용들이 아주 빠르게 개발되고 변화하는 분야이기 때문에 계속 공부를 해야 한다는 사실을 강조하고 싶다.

또한 팀웍의 중요성을 말하고 싶다. 하나의 프로젝트를 수행하려면 여러 사람이 한 팀을 이뤄서 서로 다른 부분을 프로그래밍해야 한다. 그러려면 그 프로젝트를 성공시키겠다는 목표를 향해 자신을 희생할 줄도 알아야 한다. 안되면 밤을 새워서라도 반드시 계획대로 만들어 내려는 그런 의지를 갖고 서로 협조해 일하는 자세가 필요하다.

미국의 훌륭한 소프트웨어 회사에서 일하는 사람들에게서 느낄 수 있었던 것 중의 하나가 바로 이점이었다. 또 소프트웨어 분야 선진국의 발전된 모습이 필요할 때면 언제든지 이해하고 우리에게 적용할 수 있도록 영어를 잘하도록 갖추라고 말하고 싶다.

그래야 세계 시장에서 팔릴 수 있는 소프트웨어를 만들어 우리 나라 산업의 발전에 기여할 수 있기 때문이다. 앞서 언급한 사실들을 명심하고 준비한다면 반드시 훌륭한 프로그래머로 성공할 수 있으리라 생각한다.

컴퓨터가 좋아서, 프로그래밍이 좋아서
이 글을 맺으면서 하고 싶은 말이 있다면, 'Life is full of Serendipity'라는 말이다. 우리글로 표현한다면 '인생이란, 아주 먼 옛날에 신이 나를 위해 미리 준비해놓은 소중하고 값진 것들을 하나씩 찾아가는 기쁨'이라는 의미로, 내가 만들어낸 말이다. 이 말은 짧은 인생이지만 그동안 살아오면서 인생에 대해 내가 느낀 것을 아주 함축적으로 잘 나타내 주는 말이다. Serendipity라는 단어를 나는 무척 좋아한다.

앞서 얘기했듯이, 벨 연구소에서 수행한 데이터마이닝 프로젝트의 이름으로 사용한 Serendip이라는 어원에서 나온 단어이기도 해서 그런지도 모르겠다.

마소에 처음 기사를 썼던 1985년에는, 그 후로부터 지금까지 내가 살아온 경험들을 전혀 상상하지 못했다. 단지 컴퓨터가 좋아서 프로그래밍을 배웠고, 또 프로그래밍이 좋아서 전산학을 공부했다.

또 좀더 모험을 하고 싶어 유학을 갔으며, 데이터베이스 한 분야에 머물러 있기 보다는 새로운 분야를 개척해보고 싶어서 데이터마이닝 분야에 프론티어로 달려들었다. 중요한 것은 내가 좋아서 한 것이기 때문에 좋은 연구 결과도 낼 수 있었고 또 그렇기 때문에 미국 대학에서 사용되는 데이터베이스나 데이터마이닝 교재에 내가 한 연구나 논문이 많이 인용될 수 있었던 것 같다.

새로운 분야가 끝없이 펼쳐진 길 위에 서서
가만히 생각해보면 나 자신이 축복을 참 많이 받았다고 생각한다. 내가 좋아하는 것을 그래도 평생 할 수 있으니까. 그게 가능했던 건 현재에 머무르지 않고 내가 좋아하는 것을 찾아 항상 도전하는 자세를 갖고 있었기 때문이라 생각한다. 그렇기 때문에 훌륭한 프로그래머가 되기 위해 준비하는 이들에게 이 말을 해주고 싶은 것이다. "도전하는 자세로 삶을 살아가라".

다시 말해 어려운 프로젝트를 해야 할 기회가 생겼을 때 겁먹고 주저하지 말고 달려들어 경험해 보라고. 훌륭한 프로그래머가 되려면 많은 훈련을 통해 담금질 돼야하기 때문이다. 그렇게 하지 않고는 될 수 없다. 또 그렇게 인생을 살지 않으면 아주 먼 옛 날에 이미 당신을 계획한 조물주가 당신을 위해 준비하고 감추어 놓은 소중하고 값진 것들을 경험할 수 없으니까….

돌이켜 보면 지나온 내 인생의 나날들 하나하나가 모두 나에겐 소중한 추억이고 어느 것 하나 버릴 것이 없다. 물론 힘든 일도 참 많았지만, 그 모든 일이 지금처럼 성숙하고 원숙한 30대의 나를 만든 게 아닌가 생각한다. 난 지금도 앞으로 나에게 다가올 것들에 대한 기대로 가슴이 너무 설레고 벅차다. 앞으로 10년 후에는 과연 어떤 모습의 나로 변해 있을까. 또 나에게는 어떤 새로운 만남이나 경험이 준비돼 있는 걸까. '캐스트 어웨이'라는 영화의 마지막 장면에서 끝이 보이지는 않는 여러 갈래의 길을 바라보았던 Chuck Noland의 맘이 이랬을까. @

출처 http://blog.naver.com/kdw1109mania/110013547809

반응형

댓글