초등생 코딩 교육 어떻게 해야 할까?
코딩은 재밌게 배우는 게 최고!
요즘 국영수 사교육 열풍에 추가된 과목이 있다.
바로 코딩이다.
안 그래도 바쁜 요즘 아이들에게 그리 반갑지 않은 소식일 것이다.
과연 코딩이 뭘까?
여러 정의가 있겠지만 개인적으로 코딩은 기계와 인간이 하는 대화라고 생각한다.
아무말이나 마음대로 할 수 있는 것이 아니고 프로그래밍 언어의 문법에 맞게 말해야 한다.
이 대화는 컴파일이라는 일종의 번역과정을 거쳐 결국 0과 1의 조합으로 기계에 전달되고 비로소 기계는 인간의 뜻을 이해한다.(기계는 0과 1밖에 모름)
정리하자면 인간은 어떤 동작을 수행하기 위해서 프로그램을 만들고 그 프로그램은 코딩이라는 대화방법을 이용하여 기계에 전달이 된다. 어린이들이 이해하기에는 텍스트를 기반으로 한 코딩은 접근이 어렵다.
(예를 들면 C언어, 파이썬) 어린이가 쉽게 코딩을 접근할 수 있도록 만든 것이 레고와 같은 블록 형태의 코딩이고 초등생을 대상으로 하는 학원들이 주로 가르치는 것이 바로 *스크래치나 **엔트리 등의 블록 코딩이다.
나는 전직 프로그래머이다.
핸드폰이나 셋탑박스에 들어가는 소프트웨어를 개발했었다.게다가 전공이 전자공학이다 보니 하드웨어에 대한 지식도 가지고 있다.
공학을 전공하여 IT에 대한 지식이 다른 사람보다 많다는 점은 대학을 다니던 20년 전 보다
지금 와서 빛을 발하는 것 같다. 특히 1인 1 컴퓨팅 세상인 요즘 IT 분야의 급진적인 변화를
비전공자들보다는 좀 더 편하게 파악할 수 있기 때문인 것 같다.
주변의 엄마들이 나의 경력을 알고 얼마 전 아이들 코딩 교육에 대해 상담을 했다.
학원에서 어떤 것을 배우는지 교재를 봤더니 언플러그드 코딩부터 시작해서 스크래치 엔트리 등 블록 코딩 위주로 배우고 있었다. 난이도 자체는 어려운 것은 없었지만 좀 우려가 되는 점이 있었다.
그건 바로흥미 문제다.
아이가 코딩을 즐거워하는가? 아니면 공부해야 하는 한 과목으로 여겨 부담을 느끼는가?
만약 후자라면 타과목처럼 억지로 하는 수동적인 공부가 될 수밖에 없다. 기본적인 블록 코딩을 익히고 나면 몇 가지 프로그램을 만들어 보게 되는데 책에 쓰여 있는 대로만 하면 당연히 결괏값이 나오게 된다.
주로 캐릭터가 어떤 행동을 하게 되거나 배경이 바뀌거나 간단한 게임 형태가 되기도 한다.
그러나 과연 코딩을 수동적(비자발적)으로 배웠을 때 아이가 수업내용의 몇% 나 이해하며 기억에 남을지 의문이 든다.
저학년 때부터 많은 양의 코딩을 강요하며 국영수 가르치듯 푸시하는 것은 한계가 있다.
가장 중요한 흥미를 떨어뜨린다.
내가 경험했던 프로그래머의 세계는 흥미가 정말 중요했던 것 같다.
안타깝게도 나는 코딩에 흥미가 없는 편이었다.
하드웨어를 하다가 소프트웨어 엔지니어로 갑작스럽게 전향했던 탓에 업무를 위한 스킬만 배웠을 뿐 알고리즘 등 기본기에서 한계를 느꼈다. 원래도 관심이 없었는데 그런 한계까지 부딪히니 더욱 흥미를 잃어버렸다. 순전히 일로서만 프로그래밍을 대했던 것 같다.
내 주변에는 일명 키엔지니어로 불리는 사람들이 있었다. 키엔지니어란 한마디로 프로젝트에 있어서 핵심인재를 말한다.
그런 부류들은 하얀 백지를 주면 원하는 코딩을 써 내려갈 수준 정도 되는 것 같다.
나 같은 평범한(?)엔지니어들은 기존의 코딩을 수정하거나 UI 개발을 하는 수준의 코딩을 했던 것 같다. (물론 담당분야는 개인별로 특화되어 있다.)
특히 새로운 플랫폼을 들여와 시스템에 적용하는 경우 작업 규모와 리스크가 크기 때문에 더더욱 키엔지니어의 의존도가 커졌다. 키엔지니어들 몇몇이 모여 기본 골격을 만들면 나머지 엔지니어들이 이를 바탕으로 개발을 진행했다.(프로그램의 분야는 다양하기 때문에 100% 이와 같은 구조라고는 말할 수 없고 키엔지니어의 의미에 포인트를 맞추어 주시길 ~)
그런 키엔지니어들을 보면 한마디로 프로그램에 미쳐있는 것 같았다.
그리고 힘들지만 엄청 신나게 코딩을 했다.
(매일 캐러멜이나 사탕을 입에 물고 신나게 일하던 분들이 떠오른다. 일종의 오타쿠 같은 분들....)
처음 맞는 상황을 마주치거나 어려움에 부딪히면 어떻게 해서는 해결해 내려고 했다.
그런데 그 과정이 즐거워 보였다.
일주일씩 회사에서 먹고자며 일해도 흥미를 잃지 않았다. 일종의 장인이라고 해야 할까...
흥미가 없이 억지로 해서는 도달할 수 없는 경지이다.
이런 부류의 사람들의 이야기를 들어보면 어릴 때부터 코딩에 매료되어 그 분야를 파고들면서 코딩 경력을 쌓아왔거나 우연히 대학교 때 전공을 선택하게 되면서 뒤늦게 흥미를 갖게 되어 몰입하여 공부를 한 경우가 많았다. 내가 아는 한 키엔지니어는 정말 코딩 초고수였는데 잘 알려지지 않은 대학 출신이었다. 아마 고등학교 때까지는 공부 자체에 흥미가 없다가 컴퓨터 공학과에 들어가면서 자신의 적성에 맞는 공부를 찾게 되어 몰입하게 된 것 같다. 그분과 같이 일을 한 적이 있었는데 머릿속에 프로그램이 완전히 구조화되어 들어 있는 것 같았다. 코딩으로 말하는 느낌이랄까....
그분은 여러 굵직한 글로벌 기업을 다니시다 현재 구글에서 일하는 것으로 알고 있다.
(이 업계에서는 명문대보다 지방대 출신이라도 코딩 잘하는 엔지니어를 인정해 준다. 오직 실력으로 진검 승부하는 곳이다.)
내가 과거 경험을 이야기하는 이유는 딱 하나이다.
프로그래밍을 잘하기 위해서는 반드시 흥미가 있어야 한다는 점을 강조하고 싶기 때문이다.
나는 누구보다 이 부분을 잘 알기 때문에 코딩을 억지로 교육하거나 코딩 학원에 아이들을 보내지 않았다. 대신 Code.org라는 사이트를 이용하여 게임요소가 들어있는 블록 코딩을 처음 소개해주었다.Code.org는 미국의 소프트웨어 교육사이트로 무료이다. MS의 빌 게이츠, Facebook의 마크 주커버그 등이 후원을 해주고 있으며 미국 학교에서 정규수업에 채택하여 활용하고 있는 신뢰성 있는 사이트이다.
고맙게도 한국어 번역도 제공하고 있다.
언플러그드 코딩부터 코딩의 기초 요소들을 순서대로 익히고 좀 더 높은 레벨로 자연스럽게 올라가는 구조이다. 연령대별로 커리큘럼을 선택할 수 있다.
우리 아이들은 이 중에서 한 코스를 끝마쳤고 기본적인 코딩 구조를 익히게 되었다.
마지막 단계에서 난이도가 좀 어려워지자 힘들어하기도 했지만 기본 바탕이 게임이기 때문에
(예를 들면 앵그리버드나 마인크래프트 캐릭터를 이용한 문제 해결) 다른 과목처럼 지겨워하지는 않았고 끝까지 해낼 수 있었다. 시간도 여유롭게 주었고 하고 싶을 때 시켰다.
아이들 입장에서는 평소 게임 시간이 많이 부족했기 때문에 이거라도 하자는 심산이었던 것 같다. 어찌 됐건 초반에는 시키지 않아도 두세 시간씩 몰입했던 것 같다.
이렇게 가볍게 프로그래밍을 접하게 하고나서 스크래치나 엔트리 프로그램을 접하게 해 주었다.
처음부터 아무 설명 없이 직관적으로 사용해보게 하였다. 아이들은 블록 코딩을 이용하여 캐릭터의 모양을 바꾸거나 캐릭터가 움직이는 코딩을 바로 할 수 있었다. Code.org에서 기본적으로 접했던 지식이 있어서 그런지 쉽게 적응했다.
도서관에서 스스로 스크래치로 게임 만들기 책을 빌려와 따라 해보기도 했다.
프로그램의 종류가 달라도 기본 흐름은 비슷하기 때문에 한번 프로그램에 익숙해지면 다른 환경에서의 코딩도 조금 쉬워지는 것 같다.
이런 식으로 코딩에 대한 자신감과 흥미가 늘어나면 고학년이 되면서 text 코딩(파이썬, C언어)까지 확장할 수도 있다. 물론 그때도 강요해서는 절대 안 된다.
흥미 있는 사람은 알아서 찾아보고 몰입하게 된다.
코딩에 대해 궁금해하는 부모님들에게 전직 개발자로서 하고 싶은 말은 코딩에 대한 첫인상을 좋게 만들어주는 것이다. 첫인상이 좋지 못하면 그다음부터는 흥미를 갖게 하기 어려워진다.
코딩은 쉽고 재밌는 것이라는 생각을 갖게 하고 코딩을 통해 내 생각이 들어간 창작물이 생기는 재미를 알게 하는 것이 무엇보다 중요하다. 또한 논리적인 사고방식, 복잡한 문제를 여러 개로 나누어 분석하는 습관, 문제 해결 능력, 끈기 등이 코딩 스킬 자체보다 훨씬 더 중요하다고 말하고 싶다. 게다가 가까운 미래에는 대부분의 코딩이 AI영역이 될 가능성이 크다.
(이미 비 개발자를 위해 코딩해주는 프로그램들이 많이 있다. 예를 들어 UI 엔지니어가 포토샵으로 앱의 메뉴를 그리면 이를 프로그램으로 만들어주는 형태) 빅데이터나 AI를 활용하여 문제를 해결할 수 있는 능력이 코딩 자체보다 중요한 시대가 될 것이다.
요즘 코딩을 대학입시에 넣겠다는 흐름이 있다고 하는데 개인적으로는 이 부분은 반대하고 싶다.
입시과목으로 편입되는 순간 아이들은 코딩 스킬만 늘어날 뿐 컴퓨터공학에 대한 흥미 자체를 잃어버리게 될 것이다. 좋은 소프트웨어는 단순한 코딩 스킬이 아닌 흥미를 가지고 집요하게 파고드는 논리적 사고력에서 나오기 때문이다. 코딩 교육에서는 이부분을 절대 간과해서는 안된다.
*스크래치 : MIT에서 만든 블록코딩
**엔트리 : 국내에서 만든 블록코딩 , 몇가지 문법은 다르지만 스크래치와 유사함