이동권
컴퓨터공학부 석박사통합과정

최근 몇 년간 프로그래밍 교육 열풍이 계속되고 있다. 초등학생을 대상으로 하는 조기교육부터 창업에 뜻이 있는 성인들을 대상으로 하는 실전용 교육까지 다양한 종류의 프로그래밍 교육이 많은 곳에서 이뤄지고 있다. 공교육 과정에 프로그래밍이 추가되기까지 했으니 앞으로도 이런 프로그래밍 교육 열풍이 지속될 확률은 높을 것이다.

현재 대부분의 프로그래밍 교육은 실전형 프로그래밍에 초점이 맞춰져있다. 서점에 진열돼 있는 대부분의 프로그래밍 관련 서적들은 프로그래밍의 원리나 논리적 사고법을 전달하기보단 무작정 따라 해보라는 식의 구성을 갖고 있다. 프로그래밍 사교육 역시 본인이 직접 경험해본 적은 없지만 이런 흐름을 크게 벗어나진 않을 것으로 보인다.

이런 프로그래밍 교육의 치중된 방향성은 프로그래밍에 대해 깊이 있게 이해하지 못하는 문제를 발생시킬 수 있다. 처음엔 책이나 강의에서 시키는 그대로 따라하면서 간단한 프로그램을 구성할 수 있기 때문에, 프로그래밍을 금방 배워나가는 것처럼 느낄 수 있다. 하지만 프로그래밍 언어 자체의 이론적 토대에 대한 이해를 돕는 내용의 비중이 적거나 심하게는 아예 제외돼 있다는 점이 문제를 발생시킨다. 결과적으로 해당 프로그래밍 언어의 구성원리를 제대로 이해하고 책에 제시돼 있지 않은 유형의 프로그램을 스스로, 제대로 구성하는 데에는 더 오랜 시간이 걸리게 되는 것이다.

장기적으로 보면 이런 현상은 프로그래밍이 주로 사용되는 산업 전반에 걸쳐 생산성 저하 및 인력낭비와 같은 부정적인 효과들을 발생시킬 가능성이 높다. 프로그래밍에 대한 제대로 된 이해 없이 짜여진 프로그램은 가독성이 좋지 않고 수많은 버그를 내포하고 있을 확률이 높다. 개인의 연습용 프로그램이라면 아무래도 좋지만, 버그가 발생할 때마다 금전적인 피해로 이어지는 산업용 프로그램의 경우 엉성한 프로그래밍이 곧 막대한 피해로 다가올 수 있다. 특히나 사람의 안전까지 걸린 비행기 운항 시스템이나 자동차 자율주행 시스템 소프트웨어라면 더더욱 그렇다. 또한 가독성이 나쁜 프로그램의 경우 문제가 생겼을 때 이를 해결하기도 어렵다. 해당 프로그램을 직접 제작한 사람이더라도 오류 수정이 매우 힘든 경우가 많으며, 후임자가 전임자의 프로그램을 보수해야 하는 경우엔 때때로 처음부터 새로 만드는 것이 빠를 정도로 오류 수정이 어려워진다.

상술한 문제들을 예방하기 위해선 두 가지 방면으로 프로그래밍 교육이 확장돼야 할 것이다. 단순히 프로그래밍 언어의 문법 하나하나만을 가르치기보다, 자료구조와 알고리즘 등을 포함하는 프로그래밍 배경지식과 프로그래밍 언어의 원리 그 자체를 교육할 필요가 있다.

프로그래밍 또한 하나의 수학이기 때문이다. 각종 계산법과 공식들이 수학의 정수가 아니듯이, 프로그래밍의 정수는 각종 어려운 프로그램 문법들에 통달하는 것이 아니라, 자신의 생각을 체계적으로 정리하고 깔끔하게 코드로 나타내는 것이다. 다행히 이를 위해 필요한 배경지식과 논리적 사고력은 다른 분야의 전문지식들에 비해 쉽게 터득할 수 있으며, 한번 실력을 길러 두면 쉽게 녹슬지도 않는다. 앞으로 초·중·고등학교 학생들이 배울 소프트웨어 공교육과정이 이런 방향성을 가지고 올바르게 발전해 나갔으면 한다.

저작권자 © 대학신문 무단전재 및 재배포 금지