이전에 쓴 글에서는 타고난 재능을 가진 학생과 평범한 재능을 가진 학생이 자연스럽게 공존하는 관계를 만들어 주어야 한다... 라는 취지로 글을 적었다. 사실 재능이 뛰어난 애들과는 학교때는 경쟁해 봤자 결론은 뻔하다. 나중에 많은 연습과 시행착오를 겪으면서 기초를 다진 다음이라면 모르겠지만, 적어도 학생시절에 있어서는 재능을 타고난 애들은 달라도 확실히 다른게 느껴진다. 음악도 체육도 그렇지만 공부도 그렇다. 왜 그런지에 대해 개인적인 생각을 이번 글에서 적어보려고 한다.
사실 우리네가 새로운 것을 배우려고 하면 사람은 일단 주춤하게 되어있다. 새로운 지식과 경험이 나를 괴롭게 하는 건 아닐지... 내가 이걸 제대로 잘 해낼 수 있을른지... 하는 생각을 본능적으로 가지게 된다. 그리고 이런 새로운 것에 대한 거부반응은 나이가 들수록 급격하게 더 강해지는 것 같다. ( 다들 나이먹은 사람들이 맨날 옛날타령하고 새로운 것에 대해 은근히 거부반응 보이는 거 느껴 봤으리라고 생각한다 )
그런 이유로 하여... 필자의 생각에는 공부는 어릴때 하는게 정말 맞다. 나이들어서 하는 공부와 어려서 하는 공부는 확실히 틀리다. 공부도 때가 있다. 새로운 것을 받아들이는데 거부감이 적은 시기에 제대로 된 체계를 잡아 놓고 대체로 35살 넘게 되면 그때까지 구축된 자신의 기존 지식체계에 의지해서 새로운 것을 받아들이는 것이지 완전히 새로운... 자신이 경험하지 못한 세계를 받아들이는 건 한계가 있다는 생각을 개인적으로 한다.
예를 들어서 지금 당신이 페이스북에 새로이 가입하려고 한다고 해 보자. 어린 애들은 일단 새로운것에 대해 호기심이 많다. 가입해서 활동하는데 거부감도 적다. 하지만 어른들은 그게 쉽지 않다. 왜 그럴까? 필자는 "새로운 것을 받아들일 수 있는 힘이 없기 때문이라고 생각하고, 그 힘은 다분히 겁없음과 직관에서 온다"고 생각한다. 오늘은 겁없음과 직관... 중에서 직관을 중심으로 이야기를 풀어볼까 한다.
한번 주위를 두리번 거리면서 최근 SNS를 이용하는 사람들에 대해서 생각해 보자. 나이어린 아이들과 청소년들은 어른들에 비해서 페이스북을 접하게 되면 새로운 기능을 금방 익힌다. 페이스북을 이용하는데 있어서 어떤 어떤 기능이 있어야 할른지를 본능적으로 찾아낸다. 필자는 이건 뭔가 "딱 하니 이건 뭐하는 건지 알겠는데 뭐..." 라는 느낌. 즉 직관을 그네들은 가지고 있기에 가능하다고 본다.
직관을 가지고 있는 사람은 쉽게 그리고 빨리 익힌다. 하지만 어르신네들은 그게 쉽지 않을거다. 이게 뭐하는 건지. 어떤 기능을 써야 하는 건지. 어떤 기능이 어디에 붙어야 하는 건지 잘 모르니 당황하고 헤멘다. 그리고 그런 헤멤이 반복될 수록 자신감은 급격하게 떨어진다. 이건 '페이스북이란 것이 어떤 식으로 쓰여지고 따라서 어떤 기능이 있어야 하고 그 기능으로 어떤 일을 할 수 있겠다...' 라는 느낌을 주는 감각 즉 직관이 없기 때문이라고 본다. 직관적으로 파악이 어려운 분야에는 당연하게 자신을 던져넣기 어려운 부분이 있을 수 밖에 없다. 직관이 존재하는 분야는 상대적으로 수월하게 접근이 가능하고 말이다.
공부도 마찬가지고 코딩도 마찬가지다. 진짜 코딩에 대해 소질을 타고난 사람들은 직관이 다른 사람들과 틀리다. 직관이 뛰어난 사람들이 코드를 만들어 보면 "이게 이렇게 되어져야 할 것 같아서 그렇게 하면 그대로 된다" 를 보여주지만 보통의 사람들은 "이게 이렇게 될 줄 알고 이렇게 했더니 그게 아니었어서 다시 어떻게 해야 할지 궁리해야 한다" 정도의 모습을 보여준다.
"에이 그 정도야 선생이 잘 가르치면 되는 일 아닙니까... 잘 가르치면 딱 알아들을 수 있잖아요?" 라고 이야기 할 수도 있겠지만 천만의 말씀이다. 한번 가르친다고 생소한 분야의 지식이 딱 한번에 머리속에 박힐 리가 없지 않은가... 사실 코딩이란 것은 그 동작하는 상황이 눈에 보이지도 않고 냄새도 안나고 소리도 안들린다. 다만 머리속으로 지금 어떻게 돌아가고 있다는 이미지를 그려야 한다. 그러니 '이건 이거고 저건 저거다' 라는 얘기가 팍 팍 와 닿는다는게 말처럼 쉽지 않다. ( 훤히 보여도 실제로 보는 것과 만져보는 것과 경험해 보는게 틀리는데 하물며 만질수도 없고 보여지지도 않는 개념이 팍팍 와 닿을 리가 없다 ) 그리고 아무리 설명을 잘 해도 선생이 가지고 있는 이미지가 100% 아이들에게 전달되지 못한다. 결국 어느정도는 알려 줄 수 있지만 "스스로 연습을 통해서 깨우치지 않는다면" 실전에 사용할 수 있는 수준에 오르기는 어렵다.
쉽게 얘기하면 코딩에 대해 과제를 내 주면 "이거 이렇게 하면 될 것 같아서 이렇게 하니 되네요" 이게 직관을 가지고 있는 아이들이고 "이거 이렇게 하면 될 줄 알았는데 막혔어요 고민중이예요" 이게 평범한 재능을 가진 아이들인거다. 당연히 이 둘은 경쟁이 안된다. ( 그러니 구지 경쟁을 시킬 필요도 없다. 보면 아는 아이들과 모르는 아이들은 그냥 쫙 ... 자연스럽게 갈라지게 되어있다. 이부분은 나중에 또 글을 써 볼거다 )
당연히 평범한 재능을 가지는 애들은 수시로 벽에 부딛치게 된다. 하루에도 수십번씩 말이다. 그게 깨달음이 오기까지의 과정이다. 만일 당신이 뭔가 하나를 배우기 위해 수 많은 시행착오를 겪게 될 때, '내가 실수하고 틀리게 되는'것을 견대어 낼 자신이 없다면, 당신은 코딩을 배우면 안되는 사람이다. ( 완벽주의자들이 그래서 코딩 배우기 힘들다 )
예전에 필자가 경험한건데... 필자가 가르치는 수업에 항공사 승무원 출신의 아주 아리따운 여성이 들어온 적이 있었다. 그 여성은 자신이 전산과를 나왔으나 프로그래밍에 별다른 뜻이 없어서 승무원의 길을 선택했고, 몇년동안 근무하다가 건강이 버티지를 못해서 다시 예전의 전공으로 돌아가고 싶어서 입과했다는 이야기를 자기 소개시간 동안에 같이 입과한 다른 사람들에게 해 주었다.
헌데 하루 수업이 끝나고는 그 승무원이 필자를 찾아왔다 ( 당시 필자는 미혼이었어서 조금 아주 잠시 설레었다 ㅎ ) 헌데 필자의 기대와는 달리 "선생님. 저 이 수업 듣지 못하겠습니다. 그만둘께요" 라는 이야기를 꺼냈다.
이유인즉... 자신은 학교 다니면서 과제물 같은 건 선배들이 많이 도와주었다고 한다. 시험때면 요약정리와 핵심정리도 선배 동기들의 도움을 듬뿍 받으면서 성적도 아주 좋게 졸업까지 했고. 학교 다니면서 다 "쟤는 이쁜데다가 공부도 잘해" 이런 얘기만 듣고 살았지, 자신이 뭘 잘 못한다... 는 건 한번도 경험해 보지 못했다고 한다. 헌데 하루 수업을 들어보는데... 정말 무슨 얘기인지 와 닿지도 않는데다가 계속해서 틀리는 걸 본인이 스스로 견디기 어렵다고 하는 얘기를 했다. 그러면서 "저는 제가 이렇게 모자라다는 걸 받아들이기 어렵네요. 다른 길을 찾는 게 차라리 나을 것 같습니다" 라고 얘기를 했다. 그래서 그러시라고. 행운을 빌어 드리고는 빠이빠이 했다.
그런 유형 사람들을 정말 많이 만나봤다. 똑똑한 사람들 중에 의외로 그런 사람들이 많았는데... 그중에는 서울대 출신들 중에서도 그런 이야기를 하는 경우도 있었다. 서울대를 나왔는데 코딩이 안된다? 그런 경우 당연하게 있을 수 있다. 헌데 자신이 제대로 이해하지 못하는 상황에서 코딩을 하게 되면 당연히 좌충우돌... 에러는 난무하고 생각거리는 많아질 수 밖에 없는데, 그걸 견디어 내야 결국 프로그래밍의 세계에 들어서는 거지, 그걸 견디지 못하면 차라리 안하는 게 훨씬 낫다. 코딩 아니어도 먹고 살 수 있는 길은 얼마든지 있으니까 말이다.
그럼 평범한 재능을 가진 사람들을 제대로 가르치렴 어떻게 해야 하느냐고? 아주 간단하다. "가능한 한 조금씩, 하지만 확실하게 배워 나가는 방법 밖에는 딱히 비법이 없다" 라는 거다. 예를 들어서 5줄 정도의 코딩에 한 가지 개념만을 사용해서 만든 코드에서 에러가 발생하고 그것을 처리해야 하는 경우와 20줄 정도에 4가지 개념을 사용해서 만든 코드에서 발생한 에러를 처리해야 하는 경우를 생각하면 단순히 4배 복잡한게 아니다. 거의 제곱에 비례한다.
즉 전자에서 발생한 에러를 잡는데는 10분이 걸린다면 후자에서 발생한 에러를 잡는데는 40분이 아니라 160분이 걸리는 듯 한 느낌이 들게 된다. 즉 변수가 많으면 그만큼 생각할 게 많아지고, 더군다다 자신감이 확실히 자리를 잡지 못한 상황에서 그 에러를 처리하다 보면 그나마 약간 있는 자신감마져 탈탈 털리는 경험을 하게 된다. 이런 경험 한 두번 해보면 정말 진이 쫙쫙 빠져 버린다.
해서 코딩은 반드시 끊어서, 한번에 하나씩만 처리하는 식으로 배워야 한다. 그게 바른 길이다. 하지만 현재 시중에 있는 많은 프로그래밍 서적의 예제는 그렇게 한번에 하나씩만 배울 수 있게 구성되어 있지 않다. 대체로 예제 하나가 페이지 몇장을 잡아먹게 되는데, 그 예제가 만들어지기 까지의 과정을 언급한 경우는 거의 없다. 즉 그 과정은 "알아서" 본인이 터득해야 하는데... 여기서 타고난 직관을 가진 사람과 평범한 재능을 가진 사람은 넘을수 없는 사차원의 벽 ... 만큼의 차이를 보이게 된다.
해서 보통의 재능을 가진 사람은 목표를 달성하기 위한 과정을 하나 하나 밟아가면서 깨우침을 자꾸 축적해 나가야 하는건데... 이 단계에서는 시간이 걸린다. 직관을 가진 사람이 15분이면 해 낼 수 있는 일이지만, 평범한 재능을 가진 사람들은 "선생님 죄송합니다. 정말 어제 밤을 새워서 코딩을 했는데도 못 풀었습니다. 저도 왜 제가 못풀었는지 잘 모르겠습니다. 도와주시고 가르쳐 주세요" 라고 얘기를 하는 경우가 수두룩하다는 거지...
결국 선생은 그 시점을 잘 끌어 주어야 한다. 그래야 평범한 재능을 가진 아이들도 성장할 수 있는 기회를 얻게 된다. 요령은? 한번에 여러개를 한꺼번에 생각하지 말고 한번에 하나씩만 차근차근히! 그거 밖에 없다. 헌데 아마도 그런 걸 자유자재로 구사할 수 있는 능력을 가진 선생이 그렇게 많을 것 같지는 않다. 사실 제대로 된 개발경험이 최소한 몇년 이상 되지 않은 사람들이라면 결과를 보고 과정을 자유자재로 만들어 가는 능력... 즉 자기 나름의 문제해결능력... 을 가지고 있는 경우가 많지 않거든.
결국 직관을 가지지 못한 사람은 경험을 통한 깨달음으로 그 직관을 만들어 내야 한다. 그러기 위해서는 가장 좋은 방법이 수 많은 습작이다. 스스로 생각하고 코드를 작성하면서 벌어진 문제를 수습하고 해결하는 과정에서 자신이 애초에 생각했던 개념을 수정하는 작업을 수도 없이 반복하면서 자신 나름의 문제해결능력을 만들어 주는 과정이 코딩을 제대로 배우는 것인데... 문제는 이게 시간이 많이 걸린다는 거다.
해서 코딩을 가르쳐야 한다면 말이다. 그리고 정말 제대로 가르치고 싶다면, 많은 개념을 가르치려고 하지 않았으면 좋겠다. 개념이 많아지면 머리는 복잡해진다. 당연히 자신의 생각을 가지고 결과물을 만들어내는 과정은 복잡하고 해결하기 어려운 벽을 많이 만나게 될 수 밖에 없다.
적은 개념을 가르치되, 스스로 생각의 힘을 길러낼 수 있도록 최대한 차근차근히 단계적으로 ... 그렇게 가르치고 배우면서 "자기 나름의 문제해결 능력"을 만들어 내는 수준이라면 필자는 족하다고 본다. 그러니까... 괜히 코딩 가르쳐서 "학생때 창업을 하니... 구글에 취업을 하니..." 이런 생각하지 말고 그냥 코딩만 배웠으면 좋겠다. 그러다가 정말 자신이 재능이 있거나, 아니면 정말 이 쪽의 일을 하고 싶다는 마음이 들면 그 때가서 본격적인 트레이닝을 하는게 좋지 않을까?
필자는 어렸을때 "아마데우스" 라는 모짜르트를 그린 영화를 아주 재미있게 보았다. 거기서 보면 평범한 재능을 가진 살리에르... 라는 사람이 모짜르트의 재능을 시기하는 내용이 나오는데, 모짜르트의 부인이 남편 즉 모짜르트가 쓴 악보를 들고와서 살리에르에게 남편의 재능을 인정해 달라는 이야기를 건네면서 이런 대화가 나온다.
"이 악보는 제가 다시 가져가야 해요. 왜냐하면 자신이 쓴 악보의 사본을 남기지 않아서, 이 악보들은 다 원본이거든요"
"아니 그럼 한번도 악보를 고치지 않는다는 얘긴가요?"
"네 저희 남편은 한번도 악보를 고쳐서 쓴 적이 없습니다"
...
헌데 살리에르가 그 악보를 보면서 전율하게 된다. 이런 완벽한 음악을 단 한번의 수정도 없이 한번에 써 내려갈 수 있다면 이건 정말 자신은 죽었다 깨어나도 쫓아갈 수 없는 재능을 가졌다는 걸 인정할 수 밖에 없는 거 아닌가... 하고.
하지만 코딩은 음악과는 좀 다르다. ㅎㅎ 자신이 자신의 일만 제대로 해 낼수 있다면 먹고 살 수 있는 길은 나름 구할 수 있다고 생각한다. 천재는 천재 대로 그렇게 살라고 하면 된다. 범재는 열심히 고치고 또 고쳐가면서 자신의 코드를 적으면 된다. 시간은 좀 걸리겠지만 뭐 그건 코딩을 재미있어 하는 열정으로 커버하고 또 제대로 된 선생님을 만나서 서두르지 않고 차근 차근히 하지만 꾸준하게 노력할 수 있는 환경을 만들어 주면 된다.
습작
그것만이 살길이다.
처음에는 짧은 글에서 시작해서
조금씩 긴 글을 쓰면서 자신의 필력을 쌓아가면서
그 다음에 긴 소설에 도전하는 작가와 같은 느낌으로
하루 하루의 습작을 쌓아나가는 평범한 재능.
그 재능에는 희망이 있다.
그러니까
코딩을 시키고 싶으면 그렇게 접근하시면 된다.
처음부터 너무 많이 가르치지 말고
많이 습작하면서 자신의 코드에 어리버리함이 사라지고 힘이 붙어주면서
자신의 코드를 짤 수 있게 말이다.
어디서 남이 짠 코드 복사&붙이기 하면서 그게 마치 자신의 실력인양 착각이나 하지말고
그렇게 만든 코드는 내 코드가 아니다. 남의 코드지...