진작에 쓸려고 했던 내용인데 이제서야 정리해서 올려본다. 사실 올릴까 말까 고민도 많이 했다.

http://www.82cook.com/entiz/read.php?num=1486099

한 1-2주 전에 화제가 된 글이다. 조회수는 3만에 가까우며 300개의 댓글이 달렸다. 많이들 보셨겠지만 요약하면 이러하다:

  • 외고를 졸업하는 아들이 고려대(인문학부)와 경찰대에 합격.
  • 하지만 NHN Next로 가겠다고 해서 아들과 의견 충돌.
  • 아버지와 아들은 계속 (학위 인증도 안 되는 이제 막 1기를 뽑은) Next로 가겠다고 함. 어떡하나요?

82cook의 댓글은 압도적으로 대학교에 가라는 조언이 많다. 게임코디에는 현직 게임 개발자 분들이 많이 오시는데 이 분들의 의견 역시 그러하다. 트위터에서도 정말 많은 이야기가 오고 갔다. 더러 개발자 중 사이에서도 대학교가 왜 필요하냐 라고 말 하는 사람도 있는 것 같다.

남의 집 자식에 훈수 둘 생각은 전혀 없고, 저 친구가 무얼 선택하던 존중은 해주고 싶지만, 내 동생이라면 아래를 추천한다. 아니, 반드시 그렇게 하도록 한다. 혹 말을 듣지 않으면 두들겨 패서라도 시킬 것이다.

  • 경찰대학교는 전혀 다른 적성이니 고려하지 않음.
  • 안암동 소재의 대학에 일단 등록함. (등록이라도 해야 나중에 재입학이라도 됨)
  • 인문학부라도 얼마든지 전공을 바꿀 수 있는 기회는 있음. 컴퓨터 관련 과목을 수강신청 하도록 함.

이 문제를 세속적인 명문대나 학벌의 문제로 얘기할 생각은 전혀 없다. 내가 얘기하고 싶은 이야기는 훌륭한 소프트웨어 엔지니어가 되는데 있어 대학교 혹은 그 이상의 학위가 가치가 있느냐 없느냐이다.

나는 비전공자로서 컴퓨터 프로그래머로 일을 해본 경험도 있고, 그 뒤 전공을 전산학으로 바꿔 지금은 대학원에서 배운 지식을 가지고 일을 하고 있다. 두 가지 경험 모두 해본 나의 시각에서 이 문제를 좀 얘기해볼까 한다. 그리고 뒤에는 유명하신 분들의 인터뷰 내용도 발췌해봤다.

 


사실 나도 저 친구의 맘을 충분히 이해한다. 컴퓨터가 좋아서 당장에 프로그래머가 되고 싶은 그 맘을 내가 누구보다 더 잘 안다. 나도 그랬으니까.

구구절절 이야기하긴 그렇고 간단히 요약하면 나도 많은 삽질을 하였다. 어려서부터 프로그래밍을 좋아했다. 아마 또래 중에서는 많이 한 축에 속할 것이다. PC 통신에도 연결되어있지 않은 구닥다리 286 컴퓨터이지만 나름 혼자서 습작을 꽤 했다. 하지만 진로선택에 있어 부족한 정보로 전혀 전산학과로 갈 생각을 하지 못했다. 나는 항공우주공학과를 가고 싶어했다(…)

그런데 대학교 오니 전공 공부는 뒷전이고 코딩만 했다. 때마침 닷컴 열풍 덕에 프로그래밍 아르바이트와 3년간의 산업기능요원으로 코딩을 많이 할 수 있었다. 나는 이 경험을 아주 소중하게 여긴다. 그리고 본격적으로 컴퓨터로 전공을 바꿔야겠다고 맘먹고 복수전공도 시작하였다. 그런데, 복학을 하니 너도나도 전부 다 의대 간다고 난리더라. 잠시 치과전문대학교 준비를 하는 삽질도 하였다. 그러나 결국 컴퓨터를 다시 해야겠다고 맘을 먹고 유학을 오게 되었고 이렇게까지 시간이 흘렀다. 유학 결과 기다릴 때 면접도 봐서 이 글에서 언급이 되는 N모 회사로 갈 기회도 있었다.

여기서 내가 얻은 교훈은 어려서는 - 특히 고교시절에 - 내 적성이라고 생각했던 것이 아닐 수 있다는 것이다.

어려서 바로 세부적인 목표를 정해놓고 배우는 것도 좋을 수 있다. 하지만 이건 다른 진로 탐색의 가능성을 줄일 수도 있다. 그래서 대학교에서 잠시 여유를 두고 자신의 적성을 탐색할 수 있는 기회를 가지는 것은 의미가 있다. 시행착오를 해도 큰 좌절을 겪지 않을 수 있다.

 


나는 절대 훌륭한 소프트웨어 개발자가 되는데 대학교 혹은 대학교 이상의 학위가 필요하다고 말하고 싶지 않다. 분명 학위 같은 거 없이도 뛰어난 소프트웨어 만드는 사람도 많다.

하지만 대학교(대학원이 아니라)에서 전산학을 배운다고 해서 유능한 프로그래머가 되는데 손해가 될 것 역시, 거의 혹은 전혀 없다.

오히려 세부 전공 지식을 요구하는 소프트웨어 직업 군으로 갈 수 있는 가능성을 더 얻을 수 있다. 특히 연구 성격이 가미된 개발 일을 할 때는 현실적으로 대학원 이상의 학위를 요구한다 (대학교 교수는 말할 필요도 없고). 그리고 나의 경험에 비춰보면 정말 대학원에서 배운 연구 경험이 회사에서도 그대로 적용된다.

여기서 고학력/고학위를 요구하는 소프트웨어 직군이 더 낫다라고 말하는 것은 결코 아니다. 당장 나부터 밤 세어가며 개발하는 것을 좋아했던 사람이다. 대학원 연구가 질린 적이 아주 많다. 실제 세상에는 적용도 힘든 공상 소설 같은 연구 주제로 구현 보다 글 쓰기에 집중할 때가 많았다. 비록 박사 과정은 기회 비용 손실이 엄청나 별도로 생각해야 하지만, 적어도 석사는 약간의 연구도 할 수 있는 경험을 얻게 되니 여러 진로 가능성을 탐색할 수 있는 기회를 얻을 수 있다.

사실 소프트웨어 관련 일을 두부 자르듯이 학위에 따라 나누는 것이 별 의미가 없다. 개발 구현 중심이라 하더라도 얼마든지 어려운 문제가 많이 나오고 그걸 해결하려면 고도의 노력과 아이디어가 필요하다. 대용량 게임서버를 만드는데 필요한 알고리즘과 개발능력이 대학원에서 하는 것과, 적어도 수준이라는 측면에서는, 별 차이가 없다고 본다. 마찬가지로 대학원에서도 허무맹랑한 논문만 쓰는 것도 아니고 매우 구체적인 수준의 구현과 실험에 목숨을 걸어야 할 때도 많다.

결국 개발/구현 중심의 일과 연구 중심의 일에서 수준을 논의하는 것은 적절치 않다. 다만 성격이 다른 일이다. 그리고 둘 다 모두 중요하다. 구글의 검색 엔진은 두 박사 과정 학생이 만들었지만 그걸 실제 서비스로 구현하려면 다른 성격의 난관을 뚫어야 한다. 매우 뛰어난 프로그래머가 있었기에 가능했을 것이다.

이렇게 소프트웨어 개발자에는 여러 가지 길이 있고 대학교와 석사까지는 기회와 가능성을 높일 확률이 높다. (박사는 도로 까먹으니까 주의가 필요.)

 


NHN의 훌륭한 분들이 자신들의 철학으로 만든 NHN Next을 비판하는 글이 되어 두렵다. 특히 NHN Next에 입학한 학생들에게도 괜히 기분 나쁜 이야기를 하는 꼴이 되어 죄송할 따름이다. 그러니 그런 이런 의견도 있다 정도로 받아들였으면 좋겠다.

 

아마도 NHN은 현 대학교의 전산학 교육에 심각한 문제가 있음을 느끼고 직접 교육에 나선 것 같다. 맞다. 대학교 교육에 문제가 많다. 비단 한국뿐만 아니라 미국도 그러하다. 대학원 조교를 하면서 printf를 이용하는 디버깅도 못 하는 “전산학과 대학원생”을 한 두 번 본 것이 아니다. 지도교수님은 C++ 코딩만 잘해도 돈 줘가며 연구조교 시키겠다고 하실 정도였다.

하지만 이 문제에 대한 최선의 해결책이 NHN Next 같은 자신만의 교육 기관이라는 점은 적극 동의하기 어렵다. 정말 교육 개선에 관심이 있으면 특성화 고교, 대학교, 대학원에 투자를 해야 하지 않을까.

잠시 미국 이야기를 해보자. 일러두자면 SW 최대 강국인 미국의 예를 한국 상황과 비교하는 것은 적절치 않다는 것을 나는 너무 잘 안다. 인구/산업 규모가 크게 차이 나니 미국의 예가 한국에 바로 적용되는 것은 아니다. 그래도 잠깐 이야기를 해보자.

미국의 유명 IT 기업들은 대학교와 대학원 교육에 투자를 한다. 물질적으로는 대학교에 건물을 기증한다. 스탠포드 대학교의 Gates 빌딩, 워싱턴 주립대학의 Paul Allen Center가 아마 대표적일 것이다. 대학원에는 교수와 대학원생이 연구할 수 있도록 장비와 연구비를 지원한다. 기업체에서 주는 연구 펀딩도 컴퓨터 분야에는 많다. 기업체가 고민하는 문제를 대학교와 공유하면서 해결책을 찾는다.

그리고 무엇보다 미국 기업들은 인턴 기회를 대학(원)생에게 많이 준다. 인턴을 하면서 직접 개발/연구 과정을 경험하고 문화도 배운다. 기업들은 인턴에게 당장의 큰 결과물을 기대하는 것이 아니다. 결국 투자인 셈이다. 대학교에서 얻기 어려운 실제 개발 경험을 보완하는 것이다.

그런데 아직까지 마이크로소프트, 구글, IBM 등이 자신만의 교육 기관을 만들겠다는 이야기를 들어본 적은 없다.

 

NHN Next의 교육과정을 보니 이러하다. (NHN Next 소개 링크)



교육과정을 보니 분명 기존의 학원과는 달라 보인다. 분명 전문대학교 수준은 충분히 되고 꽤 높은 대학교 수준도 될 것이다. 자료구조/알고리즘도 있고 (2학기에 걸쳐 배워도 신통치 않을 과목을 한 과목으로 했다는 것을 차치하더라도), 기초 수학과 물리도 있고, 무엇보다 인문사회학(!)도 있다.

그런데 눈에 띄는 건 결국 게임/모바일/UI 프로그래밍이다. 직설적으로 말하면 NHN이 “지금” 필요한 인력을 양성하는 학원 학교 같다라는 인상이다. 왜 꼭 굳이 게임 프로그래밍이나 게임서버 프로그래밍이 저렇게 명확한 목표가 되어야 할까. (물론, 우리나라 SW에서 게임이 차지하는 비중이 큰 것을 잘 압니다.) 이 점에서 나는 NHN Next이 대학교와 아주 큰 차이를 보인다고 생각한다. 대학교에서는 명확한 목표는 잠시 미뤄두고 기초 과목 자체에 집중할 수 있다. 운영체제면 운영체제 자체에, 알고리즘이면 알고리즘 자체에 목표를 둔다. 그걸 가지고 어떤 큰 그림을 그릴 것인가는 학생들의 몫이다. 그런데 NHN Next의 교육 과정은 마치 밑그림이 그려져 있고 색깔만 칠하도록 하는 것 같다.

NHN은 우리나라 최대 SW 회사이다. “Next”를 생각하려면 페이스북의 그래프 서치나 구글의 검색 엔진처럼 새로운 기술을 발굴해야 하지 않을까. (아, 배부른 소리인 거 잘 압니다) 그런데 NHN Next의 교육과정을 보면 그런 기대를 하기에는 조금 무리가 있어 보인다

물론, 될 놈은 어딜 가도 되므로 대학교 가지 않고 NHN Next에 가서도 얼마든지 창업으로 대박을 터뜨릴 수도 있고, NHN에 입사하여 초특급 개발자가 될 수도 있다.

하지만 NHN Next만 경험한다면 앞서 얘기한 다른 성격의 소프트웨어 직군으로 가기는 현실적으로 난관이 많다. 대학교에 전산학을 공부하면 여전히 게임 프로그래밍도 할 수 있고, 전산학 전공 지식이 필요한 직군으로도 갈 수 있다.

 


자세히 다 읽지는 않았지만 “프로그래머로 사는 법”이라는 책을 최근에 군데군데 읽었다.



여기에 여러 유명인사의 인터뷰가 있는데 특히 대학원 교육에 대한 답변이 여럿 있었다. 한번 읽어 볼만한 것 같아 옮겨본다. (직접 타이핑을 했는데 이게 저작권에 위반이나 안 되었으면 한다.) 사실, 아래 인터뷰 내용은 학부 학위는 당연히 가정하고 대학원 석/박사의 가치를 얘기하고 있기는 하다.

 

1. 마크 루시노비치, 윈도우 프로그래밍을 하시는 분 중에 이 분 이름을 모르는 건 말이 안될 정도로 유명한 분. 현재 마이크로소프트의 펠로우이며 환상적인 윈도우 내부 관련 툴을 만들어 많은 프로그래머들에게 지대한 영향을 주신 분. 이분의 블로그 글을 보면서 늘 감탄을 하곤 했는데 공교롭게도 아래 두 질문의 답변은 정말 내 생각과 100% 일치한다. 그래서 길어도 다 옮겨본다.

컴퓨터 공학으로 석박사 학위를 받으셨는데요, 석사나 박사 학위가 전문가로 살아가는 데 있어서 중요하다고 생각하시나요? 직원을 채용할 때 학위가 있는 쪽을 선호하시는 편인가요?좋은 질문입니다. 실은 그런 질문을 정말 많이 받았어요. 저는 개인적으로 별로 선택의 여지가 없었어요. 아버지가 의사셨는데요, 제가 어렸을 적부터 교육을 최대한 많이 받아야 한다는 것을 엄청나게 강조하셨어요. 어떤 분야를 원하든 – 특별히 어떤 분야를 강요하거나 하진 않으셨어요 – 어떤 분야를 선택하든 최고 높은 학위까지 받아야 한다고 말씀하셨죠. 그래야 더 많은 기회를 찾을 수 있다고 생각하셨어요. 중간에 멈추면 다시 돌아갈 기회가 없어요. 일단 직장생활을 시작하고 나면 다시 학교로 돌아가기가 정말 어렵고, 실제로 그렇게 하는 사람이 아주 드물죠. 그래서 저는 처음부터 박사 학위를 받을 생각을 하고 시작했어요. 다른 사람들이 박사 학위를 받는 것에 대해서는, 고등교육 기관에서 학생들을 가르친다거나 연구소에서 일한다거나 하는 것처럼 박사 학위가 필요한 직업을 원하는 게 아니라면 박사까지 받을 필요는 없다고 생각합니다. 하지만 석사 학위는 꼭 따는 게 좋다고 생각해요. 어떻게 보면 박사 학위를 받으면 오히려 기회가 줄어들 수도 있어요. 뭔가를 정말 하고 싶은데 박사 학위가 있으면 분에 넘치는 사람이라고 생각하고, 기분 좋게 일하지 않을 거로 생각해서 그 일을 주지 않을 수도 있으니까요. 하지만 석사 학위 정도면 그런 일은 걱정하지 않아도 되고, 다른 사람들과 차별화될 수 있죠. 꼭 학위가 있다는 게 중요한 게 아니고 자기가 관심 있는 분야, 자신이 추구하고자 하는 방향에 대해 조금 더 깊이 있는 지식을 가지고 있다는 증거가 되니까요.

이 분야에 들어오고자 하는 사람들에게 마지막으로 조언 한마디 해 주실 수 있을까요?

자신을 차별화시켜 보세요. 예를 들어 1990년대 중반에 자바가 폭발적으로 성장할 때는 다들 자바 프로그래머가 되었고, 구직 시장에 틀에서 찍어낸 듯한 자바 프로그래머가 넘쳐났죠. 그런 상황에서는 다른 사람이 쉽게 대신할 수 없는 인재로 자라나기가 정말 어려워요. 운영체제 내부를 훤히 안다는 게 딱히 매력적이라거나 주류에 속한다고는 할 수 없었지만, 덕분에 그쪽에서 일하는 사람이 별로 없었고 “그거 어려운 거잖아”라는 인식이 널리 퍼져서 저는 다른 사람들과 분명하게 차별화될 수 있었어요. 주류와 군중과 거리를 두고, 휘황찬란하고 멋져 보이는 게 아니라 더 안정적일 수 있는 걸 찾아보세요. 그런 분야를 잘 잡으면 재미있게 일하고 훌륭한 경력도 쌓고 돈도 잘 벌 수 있어요. (후략)

정말 내 생각과 너무나 일치해 놀라울 정도. (아, 제 아버지는 의사는 아닙니다 ㅎㅎ) 특히 박사 학위의 단점에 대해서도 내가 느낀바와 정확히 일치하는 단점을 언급해주었다. 대학원 진학 여부나 분야 선택에 대해 나에게 질문한다고 하면 그냥 이걸 복사해서 붙여넣기해도 될 정도. 위 인터뷰 내용처럼 (1) 대학원 석사는 적극 추천, (2) 유행을 너무 따르지 말고 남들이 잘 하지 않으려는 어려운 기술을 파고 들라고 충고하고 싶다.

 

2. C++ 언어를 만드신 Bjarne Stroustrup (각자 발음은 알아서 할 것)의 의견과 Business Objects의 CEO인 존 슈왈츠의 이야기도 들어보자.

석사나 박사 학위가 전문가 커리어에서 가치가 있다고 생각하시나요?

Bjarne Stroustrup:

저는 그렇다고 생각해요. 탄탄한 기술적/과학적 기반이 없으면 유행에 파묻힐 수밖에 없어요. 그리고 대학원은 지금 당장은 별로 쓸모없어 보이는 것에 대해 생각하고 실험하고 배울 수 있는 몇 안 남은 장소 가운데 하나죠. 뭔가에 너무 초점을 맞추지 않고 그냥 재미있어 보이는 것을 자세히 살펴보면서 시간을 보내는 것이 중요하다고 생각합니다. 좋은 학위 과정에서는 철저한 기술적/과학적 기반을 갖추는 것에 덧붙여 그러한 시간을 가질 수 있죠.

Johne Schwarz:

정말 중요합니다. 첫째, 대학원을 졸업했다는 건 그만큼 그 분야에 오랜 시간을 투자할 수 있는 능력을 보여주는 일이라고 할 수 있어요. 둘째, 석박사 학위가 있다는 것은 그 사람이 어느 정도 진지하고 참을성 있고 조직생활을 할 수 있을 만한 사람이라는 걸 보여준다고 봐요. 물론 빌 게이츠같이 대학을 중퇴하고도 대단한 업적을 세운 사람도 있지만, 그쪽은 예외적인 경우라고 봐야 할 것 같습니다.

 

3. Sun에서 자바를 만드신 위대한 제임스 고슬링님의 답변. 사실 약간 너무 학위를 강조하는 글이라 썩 옮기기 내키지 않았다. 하지만 전산학에 큰 영향을 준 분이니 이 분의 의견도 옮겨 본다.

소프트웨어 업계에서 석박사 학위가 가치가 있다고 보시나요? 실제 직원을 뽑을 때도 학위를 보시나요?

물론입니다. 학사 학위만 있는 사람을 뽑을 때와 박사 학위를 가진 사람을 뽑을 때는 전혀 다른 방식으로 뽑습니다. 특히 어느 자리에서든 상당한 전문지식이 반드시 필요한 썬 같은 회사에서는 더욱 그렇죠. 하지만 자리마다 요건이 다를 겁니다. 심도 있는 전문지식이 필요하지 않는 자리도 많죠. 개인적으로 보자면 회사에서 일하면 훨씬 많은 돈을 받는데도 박사 과정 동안, 대학원 생활을 하던 시절이 제 평생 가장 재미있게 일하던 시절이었던 것 같습니다. 정말 대학원생 시절로 돌아가고 싶어요. 제 친구 중 몇은 정말 그렇게 하기도 했는데, 부럽습니다. 깊이와 폭의 문제인 것 같아요. 학사 학위만 마친 사람은 알고리즘 같은 것에 대해 피상적으로만 이해하는 편입니다. 알고리즘 분석 분야로 대학원에 다녔다면 훨씬 더 잘 알 것입니다. 특히 좋은 교수님 밑에서 배웠다면 더욱 그렇겠죠.

(나의 생각: Aㅏ.. 저렇게 대단하신 분은 대학원 박사 시절이 그립다고 하시는구나..)

 

4. 연구보다 개발에 집중된 자리에 있는 분이라면 당연히 학위가 그다지 중요하지 않다고 생각할 수 있다. 두 분의 의견을 마지막으로 옮겨본다. 나 역시 이 두 분의 의견에도 적극 이해하는 바이다. 전산학에는 학위가 필요한 곳도 있지만 꼭 필요 없는 곳도 많이 있다.

VMware 공동 창업자 및 전 CEO인 다이앤 그린:

물론 대학원에 다니는 게 해가 되는 일은 없습니다만 소프트웨어 분야에서는 대학원에 가지 않았다고 해서 그 사람이 재능이 부족하다고 생각하진 않습니다. 소프트웨어에서는 실력만 가지고도 충분히 능력을 발휘할 수 있어요. 대학원 과정이 상당히 훌륭한 훈련 과정이 될 수 있다고 생각하지만, 경력을 끌어올리는 데 필요한 것이라기보다는 관심이 있기 때문에 하는 것이라고 봐야 하는 것 같습니다. 물론 교수 같은 자리에 가고 싶다면 당연히 필요하긴 하겠지만요.

마이크로소프트 CTO인 데이비드 바스케비치(David Vaskevitch):

이쪽 분야에서 대학원 학위가 직접 유용한 것은 아니라고 생각합니다. 상당히 까다로운 질문인데요, 아시다시피 대학 교육의 장점 중 적지 않은 부분이 생각하는 방법을 배우고, 책을 읽고, 자신을 탐구하고, 친구들을 사귀고 인맥을 쌓는 데 있죠. 물론 석사 논문을 쓰면서 글을 잘 쓰는 방법에 대해서는 확실히 배운 게 있습니다. 석사 지도 교수님이 정말 훌륭한 편집인이셨거든요.

 


3줄 요약:

  • NHN이 SW 교육에 관심이 있으면 대학교 같은 곳에 투자하는 것이 어떨까.
  • 어린 시절 꿈이 전부가 아니다. 자신이 원하는 걸 뒤늦게 찾을 수 있다. 대학교에서 그런 탐색을 할 수 있다.
  • 그래도 프로그래머라면 NP-Hard가 무슨 뜻인지는 정확히 아는 것이 좋지 않을까. (정답은 여기서 확인)