철수네 소프트웨어 세상 [본점]

소프트웨어와 관련이 있다면 뭐든지 – I no longer work for Microsoft.

코딩 교육의 논의의 방향은…

with 4 comments

정말 아이들에게 프로그래밍을 가르치는게 맞을까“를 적은 이후에 봐도 여전히 비슷한 이야기를 하는게 재탕좀 해도 되겠다 싶었다, 자신의 생각을 구체화하는데 반복은 중요하니 생각을 더 적어본다.

어릴때부터 코딩을 접하는게 좋다는 이야기를 하는 글들에서 단골로 나오는 주인공들, 빌게이츠, 마크저커버그, …… 피식 웃음이 나올때가 있다. Code.org의 캠페인 동영상이라면 말이 된다. 캠페인이니까. 동영상을 보면, 중간에 생뚱맞게 모회사의 자유로운 분위기를 보여준다. 뭐지? 코딩을 하면 이렇게 좋은 회사에 들어간다는건가? 암튼 캠페인 동영상이니까. 뭐. 하지만 당연히 “왜”라는 질문에 대해서는 그다지 답이 되지 않는다. 좀 다르게 가보자.

구글이나 마이크로소프트나 페이스북 사무실에 뛰쳐들어 가서 아무나 붙잡고 코딩에 대해 물어본다면, 코딩 구리구요 안좋아요라고 이야기할 사람이 그 전체 중에서 몇명일까? 과감히 내맘대로 예상컨데, 많지 않을 것이라. 소프트웨어 회사에서 코딩을 하는 사람들에게 좋냐고 묻는것 자체가 사실 웃긴 것 같다. 그렇다면 그렇게 이야기를 시작하는 글을 보면 피식 하지 않을수가.

“정기자님. 이에 대한 전문가의 의견을 들어볼까요?”
“아, 네 정기자입니다, 저는 모 소프트웨어 회사에 CEO와 함께 나와 있습니다. (유명한) CEO님, 어릴 적에 코딩을 공부해서 소프트웨어 업계에 훌륭한 사람이 되었는데, 어릴 적부터 코딩을 배우는 것에 대한 견해가 어떠신지요?”
“아 네, 저는 어릴 적부터 코딩을 배우는 것을 권장하지 않습니다. 어릴 적에는 뛰어놀고 체험하는 것이 중요하거든요, 어릴 적에 배우지 않아도 저처럼 될 수 있습니다.”

안좋다 답한 내용과는 별개로 여기서 오류는? 정작 코딩을 어릴적부터 하는 것이 좋은가에 대한 전문가가 아니다. 이런 인터뷰를 반영하는것이 아니라 연구 데이타로 쓴다거나 그냥 즐겁게 참고하면 된다.

요즘 업계에서 자주 오르내리는 일론머스크. 위키피디아를 보면 12살때 컴퓨터 프로그래밍을 독학했다고 나와있다. 여기서 예를 들어, 우리가 위의 여러 예시들에서 암묵적으로 가정한 “성공”의 여건은 프로그래밍이었을까 아니면 독학이었을까. 알아낼 방법은 없다. 그렇다면, 조기 코딩 교육이 좋은가하는 질문에는 사실 여부를 떠나 도움이 되지 않는 일화다. 좋다는 찬성 의견을 팔때 사용하는 일화일지언정. 더 반대쪽으로 가서, 어릴적부터 코딩을 배우지 않은 석학과 성인과 유명인과 부자들을 찾아볼까? 이들이 어릴적 코딩을 배웠다면 더 나은 결과가 되었을까? 김정은이 어릴적 코딩을 배웠다면(배웠을지도?) 나라를 더 잘 운영할 수 있었을까(나 종북 아님)? 안다,억지스런 질문인거. 요컨데, 요점은 이 질문들은 다 답을 낼 수 없는 엉뚱한 방향이라는 사실이다.

좋지 않다는 주장을 하기 위해서 던진 화두가 아니다. 전에도 적었듯이 개인적으로는 중립적이다. 단순하게 왜 코딩 – 이 뭔지부터 – 을 일찍 배우면 좋은가에 대해서 이야기를 하자는 것이다. 저커버그가 페북 CEO가 되었기 때문에 코딩을 배우자는 분위기를 흘리는 이야기는 웃기다는 것이다. 무슨 코딩이 논리의 만능 도구라도 되는 마냥 이야기하거나(코딩을 잘하는데 논리는 코드에서만 볼 수 있는 분들 많지 않던가? 논리라면 필요 조건과 충분 조건부터 구별해보자.), 문제를 가장 효율적으로 해결하는 최상의 교육 아이템이라고 단정할 근거가 뭔지. “내가 어릴 적부터 배웠는데, 지금 도움이 많이 되었다”는 각자의 경험적인 흑백 근거?

<인용>”SW를 문제 해결 방식 가운데 하나로 들여 오자는 겁니다. 먼저 문제 해결 능력을 기르는 수업(이 가능한 여건)을 갖추고 SW를 그 수단으로 삼자는 거지, SW 자체를 익히도록 하는 게 중요한 건 아녜요.“</인용> 이런 이야기라면 모를까. 한문장으로 <인용>”코딩 수업의 목표는 제2의 저커버그, 빌 게이츠, 스티브 잡스가 돼서는 안 된다. 건실한 교육과정과 흥미에 초점을 맞춰야 한다.“</인용>라는 이야기.

코딩을 배우는게 구체적으로 뭘 배우라는건지(언어? CS커리큘럼? 툴활용? 이론?) 얼마나 걸려서 어떻게 배우라는건지 왜 언제부터 배우라는건지 이런질문도 없이 그냥 코딩을 일찍 배우는게 좋다는 말은 나도 할 수 있다. 코딩을 일찍 배우는게 좋다. 나도 했다.

나는 코딩이라는 매개를 통해서 얻는 문제 해결 능력과의 연결고리를 단순히 코딩을 가르치는 것으로는 배울 수 없다는 견해다. 그 연결고리로 가이드를 하고 교육해야지 코딩만을 가르친다고 연결고리를 알아서 깨닫게 수준으로는 입시에 넣어봐야 암기과목 하나 더 늘이는 것 밖에는 되지 않는다는 생각이다. 매개 자체가 문제 해결 능력을 준다니, 코딩으로 문제 해결 능력을 기를/깨달은 능력이 된 일부 이외의 사람들에게는 꿈같은 이야기 아닌가. 재능이 있는 사람을 위한 교육은 아니지 않나. 그렇다면 코딩이 아닌 다른 것으로도 풀 수 있는 요소일 수 있지않을까? 코딩을 교과목에 넣어야된다는 논의보다 커리큘럼이나 프레임웍을 어떻게 짜야할 것인가가 더 어려운 것이지 않을까. 혹여, 잘못된 도입으로 인해 컴퓨터가 없으면 문제를 못푸는 부작용(확장이 아니라 대체)이 생길지는 생각해봐야할 일이다.

(전에도 공유한) 이 동영상 거의 마지막에 Wes Dyer가 이렇게 이야기한다: <인용>”대부분의 프로그래머들은 오퍼레이셔널(operational; 번역할 단어가 딱히 없어서 영영사전의 뜻을 적는다: pertaining to a process or series of actions for achieving a result)하게 생각한다. 다음 단계로 뭘 해야하는가, State Machine이 어떻게 영향을 받는가 등.”</인용> 공감한다. 현재의 프로그래머들은 다수가 튜링의 시대에서 튜링의 이론하에 코딩을 하는데, 절대적이라고 생각했던 튜링의 시대가 우리가 생각하는 방식의 어떤 한계였을지도 모를일이다. 예를 들어, Actor Model을 만든 Carl Hewitt은 동시성(Concurrency) 더 나아가 컴퓨팅을 튜링의 이론만으로는 해결할 수 없다는 이야기를 한다. 이런 생각이라면, 우리가 생각하는 현재의 방식의 코딩을 어릴 적부터 가르치는 것이 맞는 방향인지 흔들리기 시작한다. 되려 우리 아이들이 생각하는 방식을 산업에 맞게 획일화하는 것은 아닐까. Carl Hewitt같은 생각을 낸 것은 코딩을 나중에 배웠기 때문에 나온 것인지 알 수 있나. 예를 들면, 이미 사고 방식이 선 이후에 배운 코딩으로 말이다.

어떤 언어를 배워야하나를 정한다면? 베이직같이 그냥 쉬운 걸로? 혹은 헷갈리는 JavaScript로? 함수형 언어도 요즘 새롭게 영향을 미치고 있다. 예를 들어, Douglas Crockford는 다음 ECMAScript 표준에 수학에 배경을 둔 (그리고 물리에서 영향을 받고, 함수형 언어에서 사용되던) Monad 구현을 위한 내용들이 들어간다고 한다. 절차형이나 객체형 언어를 배우는 것이 미래 지향적인 것이라는 생각에 또 금이 간다. 대학 1학년, 갑자기 카/크들거리면서 Lisp를 배워야했던 기억도 생각난다. 프로그래밍의 기본을 가르치는 교과서적인 SICP도 Scheme을 사용한다. 게다가 컴퓨터 이론의 증명은 수학을 사용한다(컴싸 석학들이 수학/물리학 배경이 많은 것은 너무나 당연하다). 어릴적 컴퓨터 학원에 다닐 수 있었는데, 그때 처음 배운 것은 Lotus 1-2-3였다. 교육을 위해 만들어진 스퀵도 있다. 예시가 너무 멀리까지 간 것 같지만, 단순히 어느 언어냐보다는 우리는 무엇을 코딩으로 가르치려는가를 명확히 짚고 가야할 필요성이 크다는 것이다. 고등학생이 Lisp을 배우지 말란법이 없고, 수학적 알고리즘 분석을 하지 말란법 없다. 배우고자하는 바를 효과적으로 전달하는 언어를 사용해야지 유행하는 언어나 꼭 현업에서 실용적인 언어를 쓸 필요도 없다. 왜 그래야하는가가 명확하다면. (단순히 사업을 만들기 위한 의도로 언어를 새로 만들겠다는 쓰잘데기없는 논의는 하지 말자.)

프로그래밍을 요하는 직업이 엄청나게 늘어난다고해서 모두가 프로그래밍을 해야된다는 논리도 설득력이 없다. 집수리를 하기 위해서 배워야되는 것은 집수리를 할 때 배워도 되지만, 먼 미래에 집을 가지게 되면 집을 수리할지도 모르니 그때 쓰라고 집수리 방법을 학교에서 가르치라 식인 것도 마찬가지다. 집수리가 아니라 도구, 재료, 원리 이런 것을 가르쳐서 뭐든 수리를 할때 도움이 되는 것과 미래에 무슨 수리를 할 지 모르는데 집수리를 가르치는 것과는 다를 것이다. 선택이 아닌 정규교육이 선택을 하는 직업교육으로 바뀐다는건 슬플 것 같다. 이미 우리나라에서는 프로그래머들의 미래가 그렇게 투명하다는데에 부정적인데, 아이들에게 가르치라면 역시나 공감하기 쉽지 않다. 교과 과정으로 코딩을 가르치자는 취지가 프로그래머 대군 양성이라면 혹은 단순히 유행을 따르는 것이라면 혹은 단순히 특정 산업의 발전을 위해서라면 바른 방향이 아닐 것이다. 하드웨어가 다시 유행하면 다시 땜질을 가르치고 바이오테크가 유행하면 실험장비에 집착할 것인가. 하지만, 언젠가는 어떻게든 컴퓨팅 시대에 맞게 바뀌어야될 것이 교육이니 모/도로 이렇게 한다 안한다만을 이야기하지 말고, “왜” 논의를 지속적으로 하면서 고쳐나가는 것이 미래 지향적일 것이다. 이미 지구상의 교육 혁명은 일어나고 있는데 말이지.

이상, 교육 전문가가 아니라 소프트웨어 엔지니어의 입(손가락)에서 나왔기에 믿을 수 없는 글이었다.

Written by charlz

2014년 2월 2일 , 시간: 오후 4:00

Uncategorized에 게시됨

4개의 답글

Subscribe to comments with RSS.

  1. 전 코딩 교육에 매우 비판적입니다. 제가 보기에 그냥 다 말아먹어서 수능을 통한 줄세우기 용으로 전락한 수학/과학에서는 도대체가 돌파구가 안 보이니 면피한답시고 들고나온 카드일 뿐이라고 생각됩니다. (게다가 보기도 좋죠. 주커버그! 레리 페이지!)

    정말 학생들 창의력을 키우고 싶다면 줄세우기로 전락한 현재 기본 과목들이나 정상화하라고 해 주고 싶네요.

    SKPark (@1Step4Ward)

    2014년 2월 2일 at 오후 6:00

    • 정말 취지가 그런 것이라면, 정책적인 도입의 취지에 비판적 부분 공감합니다.^^ 그래도 취지가 어떻든, 결국 어떤 결과가 되든간에 미래를 위한 논의는 계속 했으면 하는 바램입니다. 그냥 그대로 가면 우리나라의 어린 세대들이 커서 미래를 대비한 교육을 받은 다른 학생들과의 경쟁에서 더 좁은 입지가 되면 어쩌나하는 걱정도 들거든요.

      charlz

      2014년 2월 2일 at 오후 8:38

  2. 코딩이 어떻게 보면 레고 블록 갖고 노는 것과 다를 것이 없어보이고, 놀이 한 수단이라면 찬성. 단순히 닌텐도로 게임을 하는 것이 아니라 그것이 어떻게 동작하는지 알아가는 과정도 중요하다고 생각함.

    joone

    2014년 6월 8일 at 오후 8:35

  3. 코딩교육의 혁신 리더 “코드스테이츠”를 소개합니다
    http://www.codestates.com

    김병춘

    2016년 4월 4일 at 오전 9:28


답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: