미국 학생들은 대학을 다니다가 벤처를 시작하는 경우가 허다하다. 마이크로소프트의 빌 게이트, 썬 마이크로시스템즈의 빌 조이는 오래 전 이야기이고 최근에도 페이스북, 구글 등 많은 벤처회사들이 재학 중인 학생들에 의해 창업되고 있다.
미국 학생들이 재학 중에 이렇게 활발히 창업하는 이유 중 하나는 미국 대학이 이론과 실험을 균형 있게 교육시키기 때문이다. 미국대학은 OS DB SE PL 등 과목에서 너무나 실습을 철저히 시키기 때문에 그것이 부담되어 컴퓨터 분야를 기피하는 학생이 있을 정도라고 한다. 미시간 대학의 신강근 교수에 의하면 미국 컴퓨터학과는 명문대학도 실습을 철저히 시키고 있다고 한다.
이에 반해 국내 S전자 C 부사장에 의하면 우리나라 졸업생들은 OS, DB, Network, Compiler 같은 시스템을 다루는 “skill set” 능력이 없어 기업들이 연구개발하는데 어려움이 많다고 호소하고 있다. 몇 년 전 필자가 차상균 교수에게 “SAP이 채택한 메모리 데이터베이스를 개발하면서 가장 큰 애로사항이 무엇이었느냐”고 질문하니 “학생들이 C 프로그램 하나도 제대로 못 짜더라”는 고민을 털어놓는 것을 들었다. 이것이 우리나라 컴퓨터학과 교육의 현주소이다.
사실 이웃나라 중국도 비슷한 상황이다. 북경대 LI Xiao-ming 교수가 2005년 국제사회에 투고한 글을 보면 “What they learned in university is not relevant to job. ... CS major students can only do simple programming. ... Everyone can program as well as CS graduates”라고 적고 있다. 대학에서 제공하는 교육과 산업체의 기대치 간에 큰 간격이 존재하고 있는 것이다.
중국 정부는 이러한 문제를 극복하기 위해 10년 전부터 대대적인 컴퓨터교육 개혁을 대학 상대로 추진하고 있다. 우리나라도 컴퓨터전공 학생들의 skill set 부족을 보충해주기 위해 몇 가지 노력들이 진행되고 있지만 이들은 주로 (중국과 달리) 대학 밖에서 이루어지고 있는 프로그램들이다.
예를들면 소프트웨어 마에스트로, N 기업의 소프트웨어 대학, S 대기업의 사내 교육 등과 같은 프로그램들이다. 그러나 이러한 노력들은 그 효과에 한계가 있을 수밖에 없다. 왜냐하면 절대 다수의 (그리고 우수한 자질) 학생들은 대학 밖이 아니라 대학 안에 있기 때문이다. 그리고 이상적인 교육은 학원 같은 곳에서 skill set만 별도로 교육시키기 보다는, 이론과 skill set을 함께 교육시킬 때에만 진정한 올바른 교육이 되기 때문이다.
대학이 실험 교육(즉 skill set)에 얼마만큼 치중해야 하는가는 사회의 요구가 어디에 있는지에 초점이 맞춰져야 한다. 필자는 Bell과 IBM 연구소에 수년간 재직한 경험이 있는데 그러한 초일류 연구소들도 업무를 분석해보면 90% 이상이 개발이고 연구는 10% 이내이다.
이 연구들도 대부분 개발 중인 시스템에서 제기되는 이슈들이고, 개발과 거리가 먼 순수 이론연구는 이보다도 훨씬 적다. 즉 대부분 연구는 개발 중인 시스템을 전제로 하는 것이다. 그러므로 대학에서 배출하는 학생의 절대 다수는 사회에 나가 개발을 제대로 할 수 있도록 교육시켜야 한다. 컴퓨터학과는 OS, DB, 컴파일러 등 시스템을 개발할 수 있게 교육시켜야 한다. (응용프로그램 개발은 비전공자들에 맡기면 되기 때문이다.)
그러면 우리나라 현실은 어떤가? 이와는 정 반대이다. 필자의 제자가 동경대 포스닥을 다녀온 적이 있다. 2년 동안 무슨 일을 했느냐고 물으니까 “도착 첫날 Linux CD와 비어있는 로봇을 주더니, Linux 상에서 이 로봇이 짐을 나르도록 하라”는 지시만 있었고, 논문에 대한 요구는 일체 없었다고 한다. 우리나라는 어떠한가? 외국 학생이 오면 일본과 같은 개발 요구는 일체 없고 SCI 논문만 요구하는 것이 우리나라의 현실이다.
왜 우리나라 컴퓨터 교육은 이처럼 미국이나 일본과 판연히 다른가? 그 원인은 몇 가지로 짚어볼 수 있다. 우리나라 대학들이 이론에 치중하고 실험은 상대적으로 소홀하게 된 첫 번째 원인은 대학의 실험 환경이다.
90년대까지는 하드웨어가 너무 비쌌다. (OS나 네트워크 같은 시스템소프트웨어 교육을 위해서 전자계산소 컴퓨터를 실험용으로 쓸 수는 없으므로 학과 전용, 또는 실험실마다 전용컴퓨터가 있어야 한다.) 소프트웨어도 컴퓨터학과 경우에는 소스코드가 있어야 시스템소프트웨어 실험을 할 수 있다.
그런데 UNIX 같은 운영체제 경우 소스코드 로열티가 300만 달러나 되어 정부가 난색을 표했었다. 이에 반해 미국이나 일본 컴퓨터 기업들은 자국 대학에는 하드웨어와 소프트웨어 소스코드까지를 모두 무상으로 제공하였으므로 그들은 일찍부터 이론과 실습이 균형 잡힌 교육을 할 수 있었다.
다행히 이렇게 열악했던 실험 여건은 반도체 기술의 발전, 공개소프트웨어의 출현으로 2000년을 전후해 많이 해결되기 시작하였다. 그러나 바로 이 시기에 실험실습을 어렵게 만드는 두 번째 장애요소가 출현하였다. 그것은 SCI 제도였다. SCI 제도가 왜 실험분야를 황폐화시키는가? 실험은 이론보다 논문 수가 훨씬 적은데도 불구하고 SCI 제도는 논문 수로만 교수/학생의 우열을 판가름 짖기 때문이다.
예를 들어 새로운 “CPU 스케줄링 알고리즘” 은 수개월이면 이론을 만들어낼 수 있지만, 이러한 이론적 아이디어를 실제 시스템에 구현하고 검증하려면 수년이 더 필요해지기 때문이다. (리눅스 경우 수천 명의 개발자가 십 년 이상 쓴 방대한 코드이기 때문에 그것을 이해하는 데에는 적어도 이, 삼년 이상이 소요된다.) 그러므로 Stanford 대 총장을 지냈고 RISC를 개척했던 Hennessy 교수도 “Experimentalist는 논문수가 이론 분야보다 훨씬 적을 수밖에 없고, 그나마도 대부분 저널이 아닌 컨퍼런스 논문이다.
그리고 논문이 아닌 소프트웨어와 같은 artifacts로 평가 받아야 하는 경우도 자주 있다. 실험 분야가 이론 분야와 이처럼 다르다는 점을 교수 인사평가시 반드시 감안해야 한다”고 주장하였다(출처: “Academic Careers for Experimental Computer Scientists and Engineers”). 실험분야가 논문 수에서 이처럼 불리한데도 불구하고 우리나라는 이를 인정하지 않고 SCI 논문 편수로만 일원화함으로써 대학에서 실험분야를 고사시켰다.
그래서 실험 분야 교수와 학생들은 마치 논문을 못쓰는 2류와 같은 취급을 오랫동안 받아왔다. 학위, 연구비, 임용, 승진 등에서 절대적으로 불리한 조건을 감수해야 했었음은 물론이다. 결과적으로 대학들은 이론논문, 이론졸업생 배출에만 치중하게 되었고, 전국 대학에서 이론 편중을 더욱 가속화시키게 되었다.
우리나라 대학들이 이론에 치중하고 실험은 상대적으로 소홀하게 만든 세 번째 원인은 실험에 대한 지원-평가-보상이 없는 제도 때문이었다. 여러 분야가 실험 교육을 하지만 그 중에서도 컴퓨터 분야야말로 가장 실험 교육이 어려운 분야이다. 왜냐하면 물리나 화학 같은 분야는 실험 환경을 한번 구축해놓으면 10-20년을 써도 되지만, 컴퓨터 분야는 이삼 년이면 어김없이 새로운 실험 환경으로 바꿔 주어야 하기 때문이다. 또 컴퓨터 분야는 변화가 너무 빠르다 보니 출판사의 책들이 미처 따라오지 못하는 경우가 허다하다.
예를 들어 Linux 2.4 책은 Linux 2.4이 출현한 후 3년 이상 지나야 출판되는데 그 책이 나올 때쯤이면 세상은 다시 Linux 2.6으로 옮아가 있다. 그러므로 정작 Linux 2.4 책이 나왔을 때에는 아무도 2.4 책에는 흥미를 안 가지고 2.6에 대해서만 관심을 가지게 된다.
그러니 사실상 항상 책이 없는 상황에서 교안을 만들어야 하고, 책이 없는 상황에서 슬라이드를 만들어야 하고, 실험 장비를 구축하고, 조교를 훈련시켜야 한다. (이에 비해 이론 분야는 출판사가 책뿐만 아니라 슬라이드 파일도 보내주므로 교수가 교안을 구상하거나 슬라이드를 만들 부담이 없게 된다.) 그만큼 실험교육은 교수에게 큰 부담을 주는 것이다.
조교의 일도 이론 과목보다 실험 과목이 훨씬 막중하다. 실험 과목 조교는 시스템 운용법을 익혀야 하고, 학생들의 상담에 응해야 하며, 중간고사나 기말고사 채점 외에도 수많은 프로그램 숙제와 프로젝트를 지도하고 채점해야 한다. 이 모든 노력을 들여 교과목을 개발해놓아도 실험과목의 교안과 실습장비는 이삼 년이면 상당부분 다 다시 만들어야 한다.
소프트웨어는 이론보다 훨씬 짧은 생명주기를 갖고 있기 때문이다. 이렇게 실험교육이 이론교육보다 더 힘들다고 해서 실험교육에 특별히 더 지원을 해주는 것도 아니다(장비, 조교, 교안개발, 공간 등). 연구의 경우에는 연구비라는 재정적 지원, 승진이라는 신분적 보상이 따라 온다. 그런데 실험교육에 대해서는 아무런 지원도 평가도 보상도 없다. 그러면서 실험교육을 전력을 다해, 철저히 준비하라는 요구는 너무 현실과 동떨어진 요구 아니겠는가? “대학이 이 모든 문제를 알아서 스스로 해결해야지” 라고 할 수도 있겠지만 그건 대학 사정을 잘 모르고 하는 이야기이다.
SCI 같은 제도를 대학이 만든 것도 아니거니와, 우리나라 학과장들은 미국과 달라서 교수에 대한 인사권이나 재정권 같은 권한이 전혀 없다. 교수들의 교육 평가에 따라 연봉이나 임금액을 조정하는 연봉제도 아니다.
우리나라 대학들이 이론에 치중하고 실험은 상대적으로 소홀하게 만든 네 번째 원인은 교육시켜야 할 분량의 폭발적 증가와 이 부하를 감당하기에는 턱없이 부족한 교수 수 때문이다. 컴퓨터 분야처럼 교육시켜야 할 내용이 폭발적으로 증가하는 분야는 드물다. 보안, 무선통신, HCI, Web, Object Oriented 등과 같은 수많은 교과목들이 최근에도 계속 추가되기만 하고 있다. 실습시켜야 할 skill set도 과거엔 C 언어와 윈도우만 가르치면 되었으나, 최근에는 C++, Java, Python, UNIX, Linux, Android, Virtual Machine 등으로 한없이 증가만 있고 있는 현실이다.
취업 분야도 임베디드 시스템, 실시간 시스템, 엔터프라이즈 시스템 등으로 끊임없이 다양해지고 있다. 반면에 스탠포드 대학에서 작성한 “Software Entrepreneurism in Korea” 보고서를 보면 미국 대학은 컴퓨터학과 교수 수가 통상 50명에서 150명인데 비해 한국 대학 컴퓨터학과 교수 수는 그보다 훨씬 적다.
그보다 더 심각한 점은 컴퓨터학과 교수 중에서도 “소프트웨어”를 전공하는 교수 수는 더욱 작은 소수라는 사실이다. 이 보고서는 바로 이점이 향후 한국 소프트웨어 발전의 발목을 잡는 중요한 요인이 될 것이라고 이미 10여 년 전에 예측하고 있다. (“In Korea, the CS faculty is very small compared to the EE faculty, and software faculty is only a small fraction of the total CS faculty – this may be very problematic for the software education – unless something is done, the quality of software education is likely to deteriorate”) CS 분야의 비대화, 교수 수의 부족, 소프트웨어 실험교수의 부족 등을 종합해보면 국내 어느 한 대학도, 어느 한 학과도 우리 사회가 필요로 하는 모든 컴퓨터 과목을 다 제대로 가르치는 것은 구조적으로 어렵다는 결론이 나온다.
마지막으로 우리나라 대학들이 이론에 치중하고 실험은 상대적으로 소홀하게 만든 다섯 번째 이유는 일부 잘못된 인식 – 즉 “skill set은 대학교수가 가르칠만한 내용이 아니다. 그것은 학원이나 기업이 가르치면 된다”는 인식 때문이다. 그것은 틀린 생각이다. 운영체제의 예를 들면 BSD, MACH, MINIX, X Windows과 같은 시스템들은 모두 명문대학 교수와 학생들이 직접 코딩하여 만든 시스템들이다.
고도의 이론과 skill을 집대성해하지 않으면 이러한 시스템은 결코 만들어질 수가 없다. 컴퓨터학과 과목 중에는 이론이 강조되는 과목들도 있겠으나, 운영체제처럼 실험이 이론과 병행되어야 하는 과목들도 많은 것이 사실이다.
근본적으로 “컴퓨터과학”이라는 분야 명칭에서 “science”는 가설을 실제 컴퓨터시스템에서 구현하고 demonstrate 해보임으로써 그 가설이 성능, 경제성, 편의성, 구현가능성, 안정성 등 여러 측면에서 문제가 없는지를 실제적으로 확인해 보이는 과정이 컴퓨터 분야에서의 science가 뜻하는 의미이다. 왜 이러한 demonstrate 과정이 필요한가? 컴퓨터 시스템은 워낙 복잡하고 천문학적으로 많은 상호작용하는 요소들로 구성되어 있기 때문이다. 그러므로 아무리 그럴듯하게 들리는 가설도 실제 시스템에서 구현해보고 확인해보기 전까지는 그 가설이 전 세계적으로 보급되는 것이 좋은지 판단하기 어렵기 때문이다.
바로 이러한 demo.의 필요성 때문에 컴퓨터 분야에서는 저널보다 컨퍼런스를 더 중요하게 여기는 것이다. 저널은 특정한 장소에 사람들이 모일 필요가 없지만, 컨퍼런스는 여러 학자들이 한 장소로 모이는 학술대회이다. 자연과학(Natural Science)의 경우는 저널논문만 보면 (한 장소에 모이지 않더라도) 동일한 실험을 전 세계 어디에서도 재현해볼 수 있지만(물리적, 화학적 여건이 전 세계적으로 동일하므로), 컴퓨터 경우에는 동일한 실험장비를 갖추지 않고서는 그 실험을 재현해볼 수 없기 때문에 컨퍼런스가 필요해진다. 많은 컨퍼런스들이 demo. 요구를 거절할 경우 논문 채택도 철회됨을 내부 규정으로 정하고 있다.
위에서 우리는 우리나라 대학들이 이론에 치중하고 실험은 상대적으로 소홀하게 된 원인들을 살펴보았다. 그러면 우리나라 대학교 컴퓨터 교육을 정상화시킬 방법은 없겠는가? 필자는 그 해답을 세 가지에서 찾을 수 있다고 본다. 첫째는 공개소프트웨어이고 둘째는 MOOC(Massive Open Online Course)이고 셋째는 제도 개선이다. 앞에서 우리는 우리나라 대학들이 오랫동안 실험실습 여건을 갖추지 못했었고, 특히 대학에 소스코드가 없어서 대학 교육은 뒤처질 수밖에 없었다는 사실을 지적한 바 있다.
이것은 마치 자동차과가 자동차 내부설계는 안 가르치고 운전교육만 시킨 것에 비견시킬 수 있다. 그러다 보니 우리나라 소프트웨어는 SI 분야만 발전한 기형적 나라가 되어 버리고 말았다. 그러다가 2004년부터 Linux가 전 세계적으로 받아들여지기 시작하고, 그 후 DB, Web 등 거의 모든 분야에서 공개소프트웨어가 출현하기 시작했다.
공개소프트웨어가 대학교육에 중요한 이유는 일차적으로 소스코드가 공개 되어 있기 때문이다. 그러나 그것 못지않게 중요한 점은 공개소프트웨어만이 학생들에게 마음대로 바꾸어 보고, 공유해보고, 실험해보고, 다른 기계로 옮겨볼 수 있는 법적 권리를 부여해주고 있기 때문이다. 그리고 공개소프트웨어에는 수많은 논문, 책, 커뮤니티들이 있어 학습이 용이하기 때문이다.
따라서 대부분 나라들은 공개소프트웨어를 대학교육 정상화의 필수적인 방편으로 보고 있다. 문제는 공개소프트웨어는 극히 최근에 출현됐기 때문에 이를 이해하는 전문가가 매우 적다는 점이다. 그러면 어떻게 해야 전국 대학들이 공개소프트웨어를 활용해 조속히 실험 교육을 정상화 시키도록 만들 것인가?
필자는 그 해답이 Coursera나 edX와 같은 MOOC(Massive Open Online Course)에 있다고 본다. 스탠포드, 하버드, MIT 등 명문대학들은 이미 MOOC를 활발히 활용하고 있고, 2016년부터는 43%의 미국 대학들이 MOOCs를 제공할 계획이라고 한다. 프린스턴 대학에서는 백만 명 이상 학생들이 동영상으로 강의를 수강하고 있다.
우리나라도 OLC(www.oss.kr)와 같은 한국형 MOOC 사이트에 공개소프트웨어 기반 시스템소프트웨어 강의들을 올리면 많은 문제들이 해결될 것 같다. 학과마다 교수 수가 부족하고, 반면에 가르쳐야 할 교과목 수는 급속히 늘어만 가는 구조적인 문제를 “education of scale”로 해결할 수 있다.
연구는 논문을 통해서 전 세계로 Best Practice를 신속히 공유해온데 반해 교육은 그러한 신속한 공유가 불가능했었는데, MOOC를 활용하면 교육도 Best Practice를 신속히 확산시키고 공유할 수 있게 된다. 전국 모든 학과가 동일한 교안을 중복해서 개발할 필요는 없어 보인다.
예로부터 “why re-invent the wheel?”라는 속담도 있지 않은가? MOOC를 통해 전국이 공유하면 된다. 이렇게 하면 교육도 연구처럼 Best Practice를 신속히 공유하는 게 가능해진다. 또 외국 대학에 좋은 강의가 있다면 그 동영상을 한글화해서 쓰면 된다. 여러 대학의 강의들을 학생들이 접할 수 있게 되면 다양한 customized curriculum이 가능해진다. 무엇보다 강의를 촬영하여 파일로 영구 보관하면 강의의 질이 올라가게 된다.
왜냐하면 교수 본인이 자신의 강의를 되돌아볼 수 있게 되면 강의는 발전할 수 있기 때문이다. 그리고 일단 이렇게 촬영된 강의는 그것을 Peer들이 평가할 수 있게 된다. Peer들의 강의평가는 학생들의 평가보다 훨씬 더 정확하다. 평가가 합리적이고 정확하게 되면 교육에 대한 보상도 가능해진다.
전국적으로 호응이 좋고 기여를 많이 한 교안이라면 그것을 개발한 교수에게 신분적 재정적으로 보상해줄 수 있게 될 것이다. 즉 MOOC와 병행해서 교육과 관련된 제도를 함께 개선하면 된다. 또 MOOCs를 활용하면 산학간의 gap이 줄어들게 된다. 즉 기업들은 “대학 교육이 불만이다”라고 추상적으로만 말하지 말고 “구체적으로 어느 강의 어느 부분이 어떻게 변화되어야 한다”라고 보다 구체적인 피드백을 줄 수 있게 된다.
또 기업의 엔지니어도 자신의 전문분야를 동영상에 올려 학생들로 하여금 활용하게 할 수도 있다. 마지막으로 학생들이 동영상으로 예습 복습을 할 수 있게 되면 학습능률이 올라가는 것은 물론이다.
결론으로, 공개소프트웨어를 활용해 시스템소프트웨어 실습교육을 강화하고, 한국형 MOOCs를 활용하여 우수한 강의를 전국적으로 신속히 공유하자.
교육도 제대로 지원해주고 제대로 평가해주고 제대로 보상해주자. 기존 SCI 체제를 하루빨리 합리적 체제로 바꾸자.
이러한 점들이 신속히 개혁된다면 우리나라도 명실 공히 IT 강국 반열에 낄 수 있을 것이다. 이에 대해 활발한 공론화가 이루어지길 기대한다. 우리에게 주어진 시간은 많지 않다.
산업혁명은 몇 백 년에 걸쳐 진행되었지만, 정보혁명은 일이십 년만에 국가 간 승패가 결정된다고 보기 때문이다. 또 산업혁명은 원료, 자본, 항만 등 여러 요인에 달려있었지만, 정보혁명은 오직 인재에 성패가 달려있기 때문이다.
그리고 인재양성은 유실수 심기와 같아서 당장 내년부터 이러한 개혁이 실시된다고 하더라도 그 열매는 15년 후에나 맺는 시간이 오래 걸리는 과업이기 때문이다.