코딩 교육, 어떻게 하는 것이 좋은가? /정유표
현장에서 코딩 교육에 대한 우려가 상당하다. 두 가지 요소가 있어 보이는데 하나는 "변화에 대한 막연한 두려움", 두 번째는 "주먹구구식 교육행정에 대한 불신"이다. 나 또한 두 번째는 심각한 결함이라 생각되는 바, 제대로 하지 못한다면 아예 손대지 않는 것이 현명하다 생각하는 주의이고, 첫 번째에 대해서는 나름 기술 친화적 인간인 덕에 선생님들께 코딩 교육의 유용성을 설명해드렸다.
코딩 교육이 필수는 아니라고 생각한다. 하지만 하면 좋은 이유, 크게 5가지 관점이 있는데 (1) 코딩 교육은 논리력 훈련을 위한 최적의 수단이고 (2) 시행과 결과가 빠르게 도출되는 게이미피케이션이 작동되기에 학생들의 적극적 참여를 이끌어내기 용이하며 (3) 학생들의 적극 참여는 실생활에 접목된 실천지식의 역량을 향상시키고 (4) 코딩 교육을 하면서 일부 소질 있는 아이들이 일찍 적성을 찾고 고급 코딩 기술 역량을 향상시킬 수 있다는 것 (5) 산업의 관점에서 사업 기획 및 구현의 영역에서 프로그래밍 언어 속성을 아는 것이 상품 생산성에 큰 영향을 미친다는 점이다. (선생님들께선 디지털 리터러시로써 주체적 기술 활용자가 되어야 한다는 측면도 언급해주셨는데 그 부분도 동의한다. 하지만 주체적 기술 활용자는 꼭 코딩 교육으로만 훈련되는 건 아니라는 점에서 필수 요소는 아니라고 생각한다.)
좀 더 자세히 설명해보자. 코딩을 하다 보면 변수를 정의하고 기준을 정해서, 조건에 따른 분기 설정, 결과를 도출하는 작업까지 "추상 영역"의 논리력이 자연스럽게 훈련된다. 설계 후 재생, 설계 후 재생을 해보면서 예상외의 결과가 도출되었을 때, 어느 부분의 분기 착오가 있었는지, 변수 정의나 기준 설정에 불일치는 없었는지, 독립 변인과 종속 변인 간 집합 관계에 누락은 없었는지, 어떻게 재설계해야 초기 의도의 결과가 나오는지 자가 조율하며 추상 논리력이 훈련된다. 코딩 초반에는 A의 한 분기만 설계-실행하는 것도 익숙하지 않지만, 이 과정을 반복하다 보면 나중에 가서는 A, B, C, D, E의 다섯 개 분기를 머릿속에 시뮬레이션하고 어디에서 어떤 값이 나올지 추정하며 프로그램을 짤 수 있는 수준에 이른다.
코딩 교육이 필수가 아니라 생각한 이유는 이 지점인데, 사실 이 추상적 논리 훈련은 글쓰기 과정에서 얻어지는 그것과 흡사하다. 글을 처음 쓸 때에는 자신의 주장과 근거를 남기는 1단 구조를 쓰기도 버겁다. 그런데 이것을 반복 숙달하다 보면 글을 쓰기 전 머릿속에 글의 기/승/전/개가 설계되고, 글을 쓰다가도 제 스스로 앞선 문단과 어떤 논리 오류가 발생했는지 파악하며 자가 점검하는 역량에 이르게 된다. 이런 추상 논리력은 모든 형태의 분석, 예측에 있어 커다란 자원이 되며, 이 단계가 깊고 넓으며 오류가 적을수록 스마트한 인재로 평가받는다. 결국 논리 훈련의 관점에서는 글쓰기나 코딩이나 큰 차이는 없다. 그럼에도 코딩이 최적의 도구인 이유는 글쓰기보다 명확하고 접근이 용이하다는 점이다. 글쓰기는 맥락 정보를 이해하는 것에서도 주관의 개입이 일어나기에 어느 정도 수준이 아니면 자가점검이 안되지만, 코딩은 철저히 객관적으로 오류가 나타나고 검증이 가능하기에 독해력이 중상급 수준이 아니더라도 쉽게 논리 훈련에 접근할 수 있다.
다시 말하자면 글쓰기의 설계 후 실행까지의 과정, 꼭 글쓰기가 아니더라도 다른 여러 학습 과제는 시행 후 확인까지의 레이턴시(피드백이 오가는 시간)가 길다. 문제를 풀고 한참 기다렸다가 무엇이 틀렸고 어디가 오류인지 선생님의 첨삭이 필요하며, 이 과정에서 평가까지 들어간다면 그야말로 최악이다. 아이들의 자존감을 떨어뜨리는 주범이 되어버린다. 그런데 코딩은 이 과정이 즉시적이며, 어느 부분의 오류가 있는지 컴퓨터가 거의 자동적으로 알려준다. 어느 정도 교사의 개입이 필요하지만 누군가의 평가 없이 스스로 교정할 수 있는 범위가 늘어나 잘못된 결과로 자존감이 낮아지는 부작용도 최소화할 수 있다. 게다가 정해진 답을 맞히는 지식 암기형 학습이 아니라 스스로의 의도에 따라 인풋-아웃풋을 여러 방법으로 설계할 수 있다는 점에서 자기주도적 자율성의 함양에도 부합된다. 일선 기업 현장에서 각광받는 게이미피케이션의 요소를 교과 학습의 영역에 접목 가능한 도구인 것이다.
다만 학생들에게 얼마나 재미있게 흥미를 유발할 것인지? 코딩의 각 단계에서 어떤 피드백을 줄 수 있을지? 아울러 이를 통해 *PBL기반의 수업에 접목할 수 있을지? 는 철저히 교사의 영역이다. 이 부분이 제대로 갖추어지지 않으면 코딩 교육은 아니하느니만 못하다. 현행 수학교육처럼 아이들을 일찍 질리게 만들어 코딩이라면 학을 떼게 만드는 꼴이 우려된다. 이와 관련해서 가장 이상적인 코딩 교육이라 생각하는 영국의 사례를 잠깐 소개해보면, 영국은 앱 만들기 과정을 다음의 6단계로 나누어 진행한다. (가장 이상적이란 건 다른 의미로 당장 실행할 수 없다는 뜻이다.) 첫째, 앱 기획으로 어떤 앱을 만들고 왜 만드는가. 둘째, 프로젝트 관리로 우리 팀에선 누가 어떤 역할을 맡을 것인가. 셋째, 시장조사 단계로 비슷한 앱은 어떤 게 있고 우리는 어떻게 앱을 차별화할 것인가. 넷째, 앱의 메뉴는 어떻게 나누며 어떻게 디자인할 것인가. 다섯째, 어떻게 프로그래밍해 앱을 완성할 것인가. 끝으로 어떤 마케팅을 해 시장에 앱을 퍼뜨릴 것인가. ( 참고:<영국 초등생의 코딩 교육이 무서운 이유>) 이 단계는 일반 기업에서도 사업 기획 시 필히 거치는 과정이다. 오히려 이 정도를 하지 못해 사업을 망치는 경우가 허다하다. 문제의식 제기, 지역사회 연계, 시장분석 등 마케팅적 관점의 훈련, 앱 사용자(소비자)의 상대적 경험의 예측, 팀 리딩과 협업의 훈련, 앱 기획에 담긴 초점 분야의 지식 학습까지 망라된 PBL 그 자체다.
코딩 교육과 PBL 수업의 결합을 좀 더 하위 차원에서 접근해보면, 학생들의 지식을 암기에서 실천으로 끌어내는 가교 역할에 주목해봄직 하다. 우리 주변의 문제를 파악하고 개선점을 고민해보는 프로젝트형 수업에서, 기성 수업 장면에서 학생들은 가설 단계 이상의 실천에 상당한 현실 제약이 존재한다. 시간의 한계, 여타 지역 관계자와의 협조 등의 자원이 필요하기 때문이다. 코딩 교육과 PBL 수업의 결합은 그 제약을 상쇄시킨다. 교실의 자리 바꾸기 시스템을 만들어 본다든지, 화분에 물 주기 카운터를 제작해 본다든지, 나만의 가계부를 만들어보는 과제는 짧은 시간을 들여 주변의 큰 도움이 없이 해볼 수 있는 수업이며, 이는 여러 과제 지식(사회학, 생물학, 수학 등)을 실천 지식으로 전환하고 표출하는 주요한 기능을 수행한다.
그다음 (4) 번의 어셈블리 같은 기계어 코딩(고급 코딩)은 그야말로 국가 산업기술력의 근간이다. 매우 난이도가 높은 작업이고, 기술 인력이 충분히 확보된다면 21세기의 노다지라 할 수 있다. 꼭 그 수준이 아니더라도 최근 각광받는 인공지능 관련 프로그래밍이나, 통계 패키지 프로그래밍 등은 매우 유망하거니와 사회 필수의 기술 영역이고, 인공지능으로도 당분간은 대체할 수 없는 분야다. 다만 문제는 현행 학교 교육이나 부모의 관점이 돈 되는 분야에 매몰되어 있어서 무작정 프로그래밍을 시켜보자는 주의라는 점이다. 솔직히 돈 아깝다. 돈보다 필요 없는 수준의 코딩 교육까지 시켜버릴 우려와 그로 인해 소진될 아이들의 시간과 에너지가 더욱 아깝다. 모든 아이들이 고급 수준의 코딩을 할 필요 없다. 누가 소질이 있는지 빨리 발견하고 끌어주는 용도로 충분하고, 일반 학생들은 (1) 추상적 논리 훈련, (2) 게이미피케이션을 통한 학습 효과 향상, (3) 실생활에 접목된 실천 지식 역량 향상만 잘 되어도 최상이다.
그래서 학교에서의 코딩 교육은 세 단계로 접근해야 한다고 생각한다. (1) 누구나 쉽게 논리력을 훈련시킬 수 있는 쉽고 재미있는 초급 코딩 교육 (2) 실제 프로그래밍을 하여(하지만 쉬운 언어로) 실행과 결과를 경험해보는 교육 (3) 어셈블리 같은 기계어까지 다루는 고급 코딩 교육이다. 1단계는 초등, 2단계는 중등 및 일반 고등, 3단계는 특성화 고등학교에서 다룰 영역이다. 첨언하지면 1단계의 초등은 코딩 교육이라고 부르기에도 무색할 정도의 원리 중심 학습이어야 한다. 어디 학원에서처럼 C 언어 코딩을 시키는 건 최악이다. 네이버 자회사인 엔트리교육연구소에서 제작한 코딩 교육 플랫폼을 참조하면 좋겠다. 코딩이라기보다 게임에 가까운 교육이다.
내년이면 공교육에서 코딩 교육이 단계적으로 도입된다는 소식이다. 어떤 의도와 관점에서 교육과정을 설계하고 교사를 양성하는지는 알 수 없지만, 제발 초등학생에게 일반 프로그래머들의 코딩 기술을 훈련시키는 과오를 저지르지 않았으면 하는 바람이다. 아울러 교육 관계자들이 앞서 논의한 (1) 논리력 훈련으로서의 코딩 교육 (2) 게이미피케이션으로서의 접목 (3) 실천지식 구현으로서의 철학을 분명히 하고, 목적이 아닌 수단으로써의 코딩 교육을 현장에 녹여내는 데 주력해 주셨으면 좋겠다.
글/ 정유표
이것은 한 달에 한 번, 모여서 디지털 시대를 공부하는 징검다리 교육공동체 미래교육원 스터디 모임 토론 후, 코딩 교육이라는 쟁점에 대하여 정유표 선생님께서 작성해 주신 글입니다.
*PBL(Problem-Based Learnig) : 문제중심학습 혹은 문제기반학습이라 부른다. 국어, 영어, 수학처럼 교과 체계로 분류하여 수업을 진행하는 것에 대비하여, 특정 문제를 제안하고 그에 파생되는 교과 지식을 포함하여 수업이 이루어진다. 예를 들어, ‘학교 앞 햄버거가게를 경영해보자.’는 문제를 제기했을 때, 햄버거 제작의 과정(과학 및 기술가정), 학교 앞에 식품 판매 행위가 가능한지의 여부(법과 사회), 햄버거 재료의 수급과 관리(수학), 햄버거 가격의 책정(수학 및 회계), 햄버거 제품의 종류(사회 및 경영마케팅), 햄버거 상품의 홍보 방안(언어문학 및 예술 마케팅)을 분야별로 나누어 조사 및 발표를 진행한다. 이 과정에서 전체 기획 및 팀별 협업 역량이 훈련되고, 지식의 통합과 활용의 면에서도 긍정적 영향을 기대할 수 있다.