코딩은 부트캠프가 아니라 머리 좋은 애들이 혼자서 배우는거다

pabii research

코딩 따위는 너 혼자서 공부하고, 난 AI/Data Science라고 알려진 계산과학(고급 수학/통계학) 응용해서 현실 문제 풀어내는거만 가르친다는 태도로 SIAI를 운영 중인데,

중간에 나가 떨어지는 애들 중에 일부가 ‘말하기’ 수준에 불과한 코딩을 못 해서 남의 코드 못 베끼니까 포기하는걸 본다.

무슨 컴공과에서 제대로 OS 레벨까지 내려가서 컴퓨터의 연산 구조에 맞춰 코드 짜라는 것도 아니고,

스크립트형 언어에서 배운 수학/통계학 활용해서 문제 풀라는건데, 그게 왜 안 되지?

 

코딩 교육을 해야된다며 SIAI 학부 과정에 반드시 코딩 과목을 넣어야 된다고 하는 충고를 엄청나게 많이 들었는데,

그래서 결국엔 넣어야 될 것 같기는 한데, 그게 왜 필요한지 도무지 이해를 못 하는 와중에 이걸 봤다.

https://42.fr/en/homepage/

 

교육하는 방식을 보니까 내가 딱~ 이상적으로 생각하는 (취직용) CS 교육을 해 놨더라.

  1. 개념 이해를 위해 반드시 풀어야 되는 문제를 던져주고
  2. 구글링해서 알아서 답을 찾고
  3. 모르겠거든 동료들하고 같이 토론해라

 

이게 수학/통계학처럼 혼자서 공부하는게 넘사벽의 도전이 아니니까, 솔직히 선생이라는게 필요가 없다.

대신 개념을 잘못 잡으면 안 되니까 문제들을 맞춰 던져주면서 방향 조정만 해 주는 정도면 충분해 보인다.

개발자라는 사람들이 배우는 지식이 딱 그 수준이니까.

어차피 너네가 Change of measure 이해해서 Experience replay 증명하고 논문 내는거 아니잖아?

 

초등학교 때 멋 모르고 배운 GW-Basic에 For-Next, If-Then, Array 같은 개념 익히고 나니까

느닷없이 과제라고 던져줘서 프로그램을 짜는 훈련을 했던 기억이 있는데,

그걸 컴퓨터 구조 이해해라며 C 언어로 비슷한 방식의 but 좀 더 어려운 과제를 던져서 고생고생해 답 찾아내는 구조라고 보면 될 것 같다.

 

그 어린 시절에, 심지어 위의 반복문, 조건문, 행렬 개념 마저 배운 적이 없던 그 어린 시절에,

학원 선생님은 별로 나한테 신경 써 주지도 않고 나 혼자 책 보면서 문제들 다 풀다가 집에가곤 했던 기억이 있고,

그 때 저런 수학 개념을 못 따라오는 애들은 어느 날부터 학원을 안 나왔던 기억,

학교 공부를 못해서 인문계 고등학교를 ‘못’ 가지만 저걸 엄청나게 잘 하던 형들을 봤던 기억도 난다.

 

위의 이야기는 코딩이 왜 학부 교육 과정이 될 수 없는지에 대한 현실 사례 기반의 증명이기도 하고,

동시에 이게 왜 ‘교사’가 필요한게 아니라 적절한 교재와 도전할 과제, 그리고 같이 ‘놀 수 있는’ 동료가 필요한지를 알려줄 수 있는 사례이기도 하다.

 

자기가 천재가 아니라는데 사실은 천재인 사람들의 리그

저 교육 과정을 실제로 얼마나 많은 사람들이 목적을 다 달성하고 졸업하는지는 모르겠는데,

자기 혼자 힘으로 극복한 사람들은 십중팔구 본인도 모르는 ‘천재’들일 것이다.

수학 필즈상을 받으신 허준이 교수님 같은 ‘천재’가 아니라,

남들보다 사고력, 추상화 능력이 뛰어나고, 자기 동력으로 스스로를 이끌어 가는 능력을 갖춘 사람들을 지칭하는 표현으로

한국에서 일반적으로 ‘천재’라고 부르길래 표현을 갖고 와 봤다.

 

나머지 사람들, 우리 SIAI로 치면 ‘코딩 따위는 너네가 알아서 해’라는 걸 못 따라오는 수준의 학생들은

아마 저기서 공황상태에 빠질 것이다.

 

우리 SIAI 교육이나 저기 42 교육이나, 선생이 필요없다고 판단하는 부분들을 자기 힘으로 못 메워넣는 애들은 항상 동네방네 욕을 하고 돌아다닌다.

이런 애들은 국내 기업들이 원하는 인재가 아니네, 필요가 없네 같은 표현들을 쓰는데,

그들이 말하는 국내 기업들은 어디일까?

 

개발자 출신이 아니니까 함부로 할 이야기는 아니지만, 지난 몇 년간 IT업계를 바라보니

  • 정부 프로젝트 하는 곳: Java에서 Spring Framework만 죽어라 파는 곳
  • 일반 평범한 기업들: 자기네들 주력 코딩 플랫폼에 맞춰 개발하는 곳
  • 엄청나게 도전하는 곳: 유명 IT 기업 안에서도 핵심부서

정도로 구분하면 될 것 같은데, 비중이 70:29:1 정도인 것 같다. (비율에 자신은 없다.)

 

당연하겠지만 1에 해당하는 분들이 인생이 뜻대로 안 풀려서 29나 70에 취직하면 회사가 자기 몸에 안 맞을 것이다.

그래도 목구멍이 포도청이라 참고 일할 수 밖에 없다고 쳐도, 1의 기회가 있을 때 잡을 수 있느냐는 본인의 역량에 달려있다.

 

(그것도 혼자서) 못하면 프로그래밍 하지 말아야지

코딩 리그에서 1이 될 수 있는 후보들에게는 선생이라는 사람이 필요가 없는 것이

당연하겠지만 코딩 정도의 지식은 이미 인터넷에 다 널려있고, 지식의 특성 상 A급 수학 기반 논문 읽으려고 기초 지식을 더 배워야 할 필요가 없다.

 

예를 들어, 작년 이맘 때 KAIST 초청 강의 요청 주셨던 최호용 교수님의 논문 하나를 골라보자

저 논문을 고교 수준이 구글링한 지식만으로 혼자서 이해한다면 필즈상 허준이 교수님이 아니라 인류 역사에 2명 찾기 힘든 천재다.

저건 교수님 아래에서 ”저자 직강’을 들어가며 박사과정을 마쳐도 이해하기 쉽지 않은 논문이다.

내가 저 논문으로 시험문제 만들어 냈을 때 문제를 풀어내는 국내 대학 학부(만) 졸업생이 있으면 강남역 사거리에서 큰 절을 해 줄 수 있다.

국내 대학 박사 했어도 풀 수 있는 학생 1명 찾기가 힘들 것이라는데 많은 것을 걸 수 있다.

 

그런데 C로 프로그래밍하다가 memory leak 이 터져서 해결할려는 중에

위의 문제를 풀어내는건 C로 프로그래밍을 2-3달 해 보고, 구글링을 몇 번 해 보면, 누구나 다~ 는 아니어도 어지간하면 할 수 있어야 한다.

못하면 프로그래밍 하지 말아야지.

 

다시 내 교육 철학으로 돌아왔다.

‘(그것도 혼자서) 못하면 프로그래밍 하지 말아야지’

 

왜냐면, 직장에서는 아무도 당신 옆에 앉아서 친절하게 당신의 코드를 디버깅 해 주지 않는다.

어지간히 직원 뽑기 힘든 회사라면 또 모를까, A급 인력을 왜 Babysitting에 투입하지?

돈이 넘쳐나면 또 몰라도, Babysitting 시키면 그 A급 인력이 열 받지 않을까? 그거 할라고 취직한게 아닌데?

 

어차피 코딩 정도의 업무는 회사 가서도 자기가 알아서 찾아서 뚝딱뚝딱 해내야 한다.

그래서 학부 교육 과정에서 ‘실전’이 아니라 ‘이론’에 해당하는 기본기만 빡빡하게 가르치는 것이다.

 

그럼 코딩 부트캠프는 쓸모 없나?

그런 측면에서 코딩 부트캠프라는건 사기다. 헛 돈을 쓰도록 만드니까.

진짜로 그런가?

 

여기서 다시 위의 70:29:1로 돌아가보자.

세상의 모든 회사가 1의 인재만 뽑아서 1의 업무만 하지 않는다.

국내 절반이 넘는 IT기업들은 70의 업무를 하고 있다. 기껏해야 29의 업무만해도 ‘핵심부서’라며 목에 힘주더라.

 

코딩 부트캠프라는 곳들이 그런 70과 29로라도 취직해야 하는 애들을 키우는 곳들이다.

아마 70 수준인 사람들은 저기 42라는 곳에 지원하면 운이 좋아서 시험을 합격했더라도 결국엔 나가떨어질 것이다.

29 수준인 사람들 중 일부는 교육을 살아남을 수 있을지는 모르겠지만, 1 수준에 해당하는 고급 인력이 될 수는 없다.

42는 1인데 1인줄 모르는 사람들이 자아를 발견하는 곳이다.

그리고, 코딩 리그에서는 그게 불가능한 일이 아니다.

도전 과제가 고급 수학/통계학이 아니라 논리적 구조 짜기이기 때문이다.

 

그 ‘천재’라고 불리는 애들은 머리 돌아가는 구조와 속도가 이 글을 읽는 당신과 완전히 다르다.

냉수 한 잔 하고, 주제 파악 좀 하자.

 

너무 재수없나?

우리 모두 경험적으로 알지 않나? 똘똘한 애들은 어지간한 지식 정도엔 선생이 필요없다는 걸.

그리고 그런 똘똘한 애들 중에서 더 똘똘한 애들이 세상을 이끌고, 나머지는 그저 배움의 발자취를 따라가기 바쁘다는 걸.

 

다시 SIAI 학부 교육으로 돌아와서, 난 1도 아니고 29를 찾아서 키우겠다는 관점으로

학부 고학년 편입 과정이나 MBA AI/BigData 과정을 만들어 놨는데, (PhD 이런 과정 안 만들어놨는데)

홈페이지를 와서 보는 사람들은 자기가 1도 아니고 0.1인줄 알고 최상위 과정만 보고 영어로 적혀 있으니까 (이해가 안 되는지) 휙 보고는 0.1초만에 나가버린다.

 

한국와서 교육해보니 그 분들 중에 29도 몇 명 없더라고.

근데 워낙 국내 교육 수준이 낮으니까 마치 자기들이 1인 줄, 아니 0.1인 줄 알고 있더라.

 

학부 1학년 교육에 코딩 부트캠프를 넣어야 된다는 주변의 진심 어린(?) 충고는

70은 포기하더라도 29라도 살려보라는 뜻일 것이다.

 

연구직, 기술직, 기능직

속칭 ‘문과’로 불리는 직군 업무들 말고, ‘이과’로 불리는 업무 영역으로 오면, 업무의 지적 난이도에 따라

  • 연구직
  • 기술직
  • 기능직

으로 구분이 되어야 하지 않나 싶다.

 

연구직이라는게 저 위의 논문 예시 같은, 인류의 지식 지평을 넓히는 분들이고,

기술직이라는게 위의 1에 해당하는 분들이 하는 업무를 말한다.

29나 70은 솔직히 말해서 기능직이다.

 

욕 먹을 각오를 하고 말하면, 기능직을 지칭하는 표현으로 속칭 ‘노가다’라는게 있다.

 

가끔 친구들이 그렇게 블로그에 수학, 통계학 못하는 애들이 인공지능 전문가라고 까부는 거에 꼴사나워하는 불평을 써놨다가

나중에 네 자식이 수학, 통계학 못하는데 똑같이 까불고 돌아다니면 더 부끄럽지 않겠냐고 그러던데,

떡잎보고 아니다 싶으면 일찌감치 기능직으로 돌려야지. 까불지 말라고 넘사벽 리그도 가끔 보여주고.

그게 독일, 프랑스 같은, 교육 서열화가 안착된 나라들이 초중고교와 대학을 운영하는 방식이잖아.

 

지적 역량이라는 측면에서 기능직이 열위에 있는건 사실이지만, 현실 세계는 기능직 없이 돌아가지 않는다.

당신이 쓰고 있는 기계는 연구직이 연구하고 기술직이 설계도를 짜기는 했지만, 만든 사람은 기능직이거든.

 

다시 돌아와서, 코딩 부트캠프라는 건 기능직을 만들어주는, 좀 더 고급 기능직을 만들어주는 교육기관이다.

그러니까 심지어 MBA도 학위 과정으로 인정해줘서 유럽인들한테 조롱을 받는 미국에서조차 부트캠프를 학위로 인정 안 해주잖아?

미국에 경영학과를 학부에 만드는 경우가 가뭄에 콩나듯이 있어도 부트캠프를 학부 교육과정으로 만드는 곳은 없다.

아니, 학위 인증 기관에서 학위로 인정해주지 않는다. 대학 학점으로 인정해주는 경우도 희귀하다.

 

내가 평소에 경영학과를 학부 취급 안 하고 멸시하는걸 알텐데, 더 대학 교육으로 취급 안 하는게 부트캠프 교육이다.

그러니까 42 같은 곳들이 아예 교수가 필요없다고 확신을 갖고 저렇게 운영하는거겠지.

 

근데, 어차피 한국 교육을 뜯어고쳐야겠다는 생각에 SIAI를 만들었으니까, 코딩 부트캠프 중에 그나마 좀 대학 교육스러운걸 찾아서 붙여보긴 할 생각이다.

F학점 몇 번 받아본 애들이 SIAI의 학부 2-3학년 교육을 1도 아니고 0.1급이어야 살아남는 교육이라고 욕하는걸 알지만,

이게 유럽에서 29 → 1을 도전하고 싶은 A- ~ B+ 정도의 열정파들에게 공급되는 교육인만큼,

그 정도 수준의 부트캠프를 찾아 붙여주면 SIAI 학위과정의 교양과목 정도로 생각해볼 수 있겠지.

 

그럼 70은 어떻게 하냐고? 세상에 길은 많다. 다른거 하자.

 

며칠 전, Reinforcement learning에 쓰이는 Dynamic optimization을 활용하는 어느 경제학과 학부 4학년 수업 이야기를 들었다.

학생들 대부분이 이해 못했고, 조교들이 그냥 기출문제만 풀어줬고, 시험 문제도 매년 (거의) 똑같이 나왔다고.

고작 그 정도를 가르치려고 국내 기준 1이 필요하다는게 한국의 현실이겠지.

위의 입학시험문제: [공지] MSc in Artificial Intelligence 입학시험 문제 공개 – 파비 데이터 사이언스 연구소 (pabii.com)

저 학교 기출 문제를 보니까 Linearize 하는 부분은 없는 것 같던데, 우리 SIAI는 경제학이 아니라 Data Science라서, Non-linear function들을 다뤄야 하는 전공이다보니 좀 더 추가한 내용이 있어 ‘쉬운’이라는 표현을 쓰기는 했다.

Bellman/Hamiltonian의 개념 이해에 대한 난이도는 어차피 어느 학문이나 Dynamic optimization을 쓰는 방식이 비슷할테니 큰 차이가 없었을 것이다.

Similar Posts