본문 바로가기

Papyrus/Dizzy Report

논리성과 창의성을 위해 코딩 교육이 필요한가?

논리적이고 창의적인 사고를 키워준다는 명목 아래, 코딩 과정이 정규 과목에 포함하는 것은 대세다. 그러나, 정규 과목으로서의 코딩 교육은 대단히 회의적이다. 그 이유는 다음과 같다.

첫째, 코딩이라는 구체적인 행위는 올바른 문제 해결 능력을 키우는데 방해가 될 수 있다. 목적보다 수단에 경도될 가능성이 높다는 뜻이다. 프로그래밍 언어들은 현실적인 목적을 가지고 디자인 된 것이며, 현실과 타협을 한 부분은 컴퓨터 구조에 대한 설명 없이 이해하기 힘들다. 초중등 학교에서는 수준에 맞춘 적당한 언어를 사용할 예정이라는 반론을 제기할지도 모르겠다. 그러나 단언컨데, 이런 언어들을 가지고 할 수 있는 것은 거의 없다. 더구나, 과도하게 추상화된 언어에 익숙해진다는 것은 그 기반에 깔린 원리를 이해할 필요가 없어진다는 뜻이다. 컴퓨터 공학을 전공한 학생들조차 이런 함정에 빠지는 경우가 허다하며, 이들은 정말 현장에서 필요한 고급 인력과 거리가 멀다. 그렇다고 초중등 학생들에게 현업 수준의 프로그래밍 언어를 가르칠 수도 없다. 대한민국 교육 현실에서, 입시 공부를 버려두고 레고도 아닌 유아용 듀플로에 빠져 있는 것을 그냥 두고 볼 부모는 없다.

둘째, 적정 수준의 교수자가 부족하다. 위에서도 말했듯이, 코딩이라는 것은 프로그래밍 언어에 구속되는 행위이며, 논리를 위해 비논리를 동원해야 하는 역설이 공존한다. 비논리성과 타협한 현실의 프로그래밍 언어로 구현된 코드를 보고 학생들이 의문을 품을 때, 그 이유를 설명할 수 있는 중등 교수자가 과연 얼마나 되겠는가? 현업 개발자라면 설명할 수 있을까? 그렇지도 않을 것이다. '원래 그런거니까', '대학 가서 배워라' 등의 궁색한 대답이 학생들을 만족시킬 수 있겠는가? 이것은 입시 위주 암기식 교육에 찌든 학생들이 매일 듣는 이야기이며, 또 하나의 학업 고통일 뿐이다.

셋째, 우리는 이미 논리성과 창의성을 길러주는, 우아하고 세련된 과목을 이미 가르치고 있다. 바로 수학이다. 사실, 프로그래밍 언어는 제한된 문법을 가지는 수학적 정의다. 현장에서 요구하는 고급 인력은 시스템을 모순 없이 설계할 수 있는 수학적 사고가 탄탄한 사람이지, 아무 생각없이 양판소식 코드를 찍어내는 사람이 아니다. 대한민국 소프트웨어 산업의 문제는 이런 저급 개발자가 부족해서 발생한 것이 아니다. 코딩 교육을 정규 과목화 하기 전에, 대학 입시 문제 풀이에만 치우친 수학 교육을 바로 잡는 것이 우선이다. 순수한 수학 교육은 현실적으로 필요한 프로그래밍 능력과는 무관할 수 있다. 코딩 교육을 정규 과목으로 편성하고자 하는 것은 이런 이유 때문일 것이다. 그러나, 대학 과정을 생각해보자. 컴퓨터 공학은 저렴한 밥벌이 프로그래밍 기술이나 다루는 것이 아니지만, 많은 강의 교수자들은 학생들이 필요로 하는, 현 시점에서 많이 쓰이는 프로그래밍 언어나 디자인 기법과 멀어진지 이미 오래다. 10년 전과 기술 환경이 너무 달라졌기 때문에, 도태되는 기술이 발생 할 수 밖에 없다. 마찬가지로, 어린 학생들에게 현 시점에서도 활용하기 힘들고, 사라질 수도 있는 구체적인 행위로 기본 교육을 갈음하는 것은 대체 어떤 교육 성과를 기대할 수 있는가? 또, 학생들이 본격적으로 프로그래밍을 탐구하려고 할 때, 이미 익숙해진 세 발 자전거 개념에서 벗어나지 못하는 참사를 초래할 수도 있다. 고도로 추상화된 언어나 RAD 툴에만 익숙해진 현장 개발자들은 한계가 뚜렷하며, 이 기간이 길수록 원천 기술을 구현하거나 새로운 언어에 적응하는데 큰 어려움을 겪는다. 훌륭한 수학 교육보다 이런 요식 행위가 얼마나 더 효과를 가질지 의문이다.

컴퓨터 공학에 열정 있는 학생들에게 필요한 것은, 자신들이 흥미를 가지고 있는 분야를 탐구할 수 있는 자유 시간이다. 코딩이라는 과정을 정규 과목화 한다면 과연 어떻게 이를 평가할 것인가? 듀플로 수준의 프로그래밍 코드를 시험지에 작성하고 채점한다면, 이것은 컴퓨터가 없어서 그렇게 할 수 밖에 없었던 80년대보다도 못한 것이다. 그게 아니라면, 제한 시간에 특정 문제를 해결하는 프로그램을 만드는 것으로? 농담이 지나치다. 소프트웨어 개발은 타임 어택이 아니며, 혼자서 문제를 모든 문제를 해결하는 것이 아니다. 경쟁 위주의 대한민국 교육 현실에서, 잘못된 평가 방식은 장기적으로 독이 될 가능성도 있다. 혹시 팀별 평가 방식을 생각하는가? 어떤 촌극이 벌어질지는 상상에 맡기겠다.

진정으로 어린 학생들을 위한 논리적이고 창의적인 사고를 위한 과목을 찾고 있다면, 왜 수학을 두고 막연한 코딩 교육이라는 것을 도입하려고 하는가? 수학이 이미 소프트웨어이며, 그 기초가 탄탄한 사람만이, 역설적으로 소프트웨어가 수학이 아니기에 가지는 예술적인 아름다움을 이해할 수 있을 것이다.