북미에서는 컴퓨터과학과 컴퓨터공학이 분리가 되어있다. 컴퓨터과학은 좀 더 이론적이고 수학이나 소프트웨어 쪽에 치중이 돼있다면 컴퓨터공학은 전기전자공학에서 연구하는 기기들 중에서 전자계산기인 컴퓨터를 연구하고 가르친다. 즉, 컴퓨터과학는 수학과에 더 가깝고, 컴퓨터공학는 전자공학에 더가깝다. 한국에서의 컴퓨터공학의 교과과정은 실제로는 컴퓨터과학과에 해당한다. 다만 대부분의 학교에서 컴퓨터공학으로 이름짓는 것은 공학대학에 소속해서 등록금을 더 받기 위해서이다.

- 나무위키 컴퓨터공학 페이지 中 -


요컨데 '돈' 때문에 컴퓨터【공학】 이라는 이름을 쓰니까, 발생하는 문제입니다만... 위에선 단순히 등록금 때문이라고 퉁쳤지만 실상은 더 복잡합니다. 공학 교육 인증문제도 있고, 순수 과학과를 표방하는 것 보단 공학과를 표방하는 쪽이 왠지 취업율이 더 높을 것 같은 기대심리도 들고, 실제로도 취직이 더 편하기도 하거든요. 그래야 학생이 더 많이 들어오기도 하고, 그리고 한국의 대학들이 컴퓨터 과학과 컴퓨터 공학의 학부를 나눠놓고 관리 할 정도로 순수 학문에 그렇게 적극적이지도 않고 말이죠.


... 뭐 거기까진 좋습니다. 근데 문제는 인식과 현실의 괴리죠.


동네 아줌마가 생각하는 컴공과 졸업생이 배우는 것 -> 홈페이지 만들기

친구가 생각하는 컴공과 졸업생 친구가 배우는 것 -> 20만원으로 컴퓨터 조립하는 법

컴공 신입생이 생각하는 컴공에서 배우는 것 -> 스바라시한 코딩 하는 법.

컴공 교수님이 생각하는 가르칠 내용 -> 컴퓨터 싸이언스 (순수 학문)

대학교 경영자들이 생각하는 컴공이 가르쳐 마땅한 내용 -> (IT든 아니든) 취직 100% 하기 위해 필요한 지식

높으신 잘난 양반들이 생각하는 컴공에서 배울 것 같은 내용 -> 한국형 스티브 잡스가 되는 법


겹치는 부분도 있지만, 실로 훌륭하게 모두들 동상이몽중입니다.

(차라리 겹치는 부분이 아예 없으면 진작에 파탄나서 재구축을 한다는 원찬스가 미레존이라도 있었을텐데...)

(서류상으로만 보면 잘 돌아가는 것 처럼 보이니까 똥을 치워달라는 개선 요구가 똥대신 변기에 흘려보내지므로 더 질이 나쁘다.)

이런 상황이다보니...


나랏님들은 컴퓨터 공학 인증이니 뭐니 하는 뻘짓하면서 컴공과 벽에 똥칠하고 앉았고, 

학교는 학교대로 취직율 높이려니 똥 치울 틈이 없고,

교수는 치워야 할 똥은 냅두고 (대학원에 넣어서 조교라는 공짜 인력으로 부려먹기에 ) 쓸만한 1%나 건져 보려고 궁리중이고, 

학생은 똥구린내 물씬 풍기는 랩실에서 왜 해야하는지 이해가 안되는 공학인증 필수과목 따라가려니 막상 해야할 프로그래밍 연습시간이 줄어들고.

(설령 프로그래밍을 연습할 시간이 난다 하더라도 그 전에 롤 한판은 땡겨야 한다.)


사실 제가 생각할때 프로그래밍을 배우는 단계에서의 최고의 재능은 누가 뭐래도 '뻘짓하기' 입니다.

누가 뭐라고 하든, 그게 유용하든 의미없든 간에 뭐든 만들어 봐야 하고 그게 또 그걸 만드는게 (최소한 자기 자신에게는) 재밌어야 합니다.

그리고 막 자랑하고 싶어 안달나야 합니다. 막 어디 가서 친구들한테 "야 이거 내가 만든거야!" 라고 자랑질 하고 싶어져야 하고. (물론 그 친구는 그걸 이해 못하겠지만) 

만든 작품이 아니라 기술적 성취라면 그걸 어디다 퍼주지 못해서 근질근질 해야 합니다. (이 밑에 렌파이 가르쳐 주겠다고 나서신 분 처럼 말이죠.)

'얼핏 생각했는데 이런 프로그램 있으면 재밌을 것 같지 않아?' 라고 생각했다면 되든 안되든 거기에 헤딩하는 잉여력이야 말로 프로그래밍을 갓 배우는 학생에게 있어선 최고의 자산이라고 생각합니다. (그 대신 머머리가 됩니다만)

그런데 윗대가리들이 정한 '이걸 배워야 취직이 잘되' 라든가 '이걸 배워야 한국형 잡스가 될 수 있어' 같은걸 강요하니 학생들은 그 과목을 강제로 배우느라 뻘짓 할 시간이 없습니다.


결국 제 개인적인 생각일 뿐입니다만, 한국 프로그래머의 질을 높이려면, 그리고 현장에서 '신입들 어차피 다 첨부터 다시 가르쳐야 한다.'는 소리 안나오게 하려면.

교육자들이나 교육 정책을 정하는 사람들이 해야 할 일은 자기들이 생각하는 스바라시한 루트를 강요하는게 아니라,

학생들이 '공학적인 발상에서의' 뻘짓하고 잉여짓 할 토대를 만들어 주고 그 뒤는 스스로 성장하게 해야 하는 게 아닌가 싶습니다.


※참고로 저는 현재 일본에 있는 IT 기업에 다니는 개발자이고, 매년 신입직원이 들어오면 그 중 한국인 신입직원의 교육담당을 맡고 있습니다.

(혹시 궁금해 할까봐 미리 답해둡니다만 한국인이나 일본인이나 신입들 수준은 거기서 거기입니다. 매년 객체지향 기초부터 다시 가르치고 있습니다;;)

(요컨데 무슨 말이 하고 싶냐면, 올해 하반기 입사한 신입 애들 3개월간 교육 끝내고 보내놨더니 현탐 오고 있습니다)