개인적인 생각으로 코딩을 가르치는 것 자체는 나쁘지 않다고 본다. 그런데 왜 코딩을 가르치는지 그 목적이 애매하다.
코딩은 말 그대로 프로그래밍 언어를 이용하여 목적하고자 하는 결과물을 만들기 위해 프로그램을 만드는 과정 중 마지막 단계라는 생각을 한다. 사람마다 프로그램을 만드는 과정이라고 생각하는 것이 다를 수 있겠지만 내 개인적인 생각은 먼저 요구사항, 즉 어떤 결과물을 내야 하는지에 대한 요구사항 분석이 있고, 그 분석을 기반으로 순서도(플로우차트)를 만든 후에 그 순서도를 기반으로 프로그래밍 언어를 이용하여 코딩을 한다. 그리고 코딩한 것을 실행하여 문제점을 수정하는 과정을 마지막으로 거친다.
즉, 코딩의 단계는 프로그램을 만드는 단계 중 구현 단계에 속하는 것인데 코딩 교육이라는 것이 지금 얘기하는 코딩만 얘기하는 것인지, 아니면 프로그램을 만드는 전 과정을 다 말하고 있는지 확실치가 않다.
프로그램 개발 과정에서 코딩보다 더 중요한 것은
지금 주변에서 코딩교육이라고 해서 나오는 커리큘럼을 보면 프로그래밍 언어를 배우고 그 언어를 구현하는 툴을 배우는 것이 다수다. 물론 프로그램을 만들기 위해서는 언어를 알아야 하고, 그 언어를 실행시켜줄 수 있는 도구가 필요한 것은 맞는데 그건 단순히 말 그대로 프로그램을 만들 수 있는 도구를 배우는 것에 불과하다고 본다. 실제로 프로그램을 만드는 과정은 순서도를 만드는 것에서 거의 80% 가까이 끝난다. 코딩은 그 순서도를 프로그래밍 언어로 표현하는 것에 지나지 않는다.
순서도를 그리면서 프로그램의 흐름, 논리 등을 생각하고 만들게 된다. 즉, 내가 생각하는 코딩교육은 툴을 배우는 그런 교육이 아닌 순서도를 그려서 논리적으로 생각을 할 수 있게 만드는 능력을 길러주는 그런 교육이 필요하다는 생각이 든다.
지금은 개발을 주 업무로 하지 않고 있지만 그래도 10년 넘게 개발자 생활을 해오면서 중요하다고 생각하는 것이, 실제 코딩에 들어가기 전에 설계가 얼마나 잘 되어있는가가 중요하다는 것이다. 그 설계에는 요구사항을 분석하고 그 분석을 기반으로 시나리오를 만들고 흐름을 만들고 각 흐름의 논리를 만드는 작업이 다 들어가며 다양한 다이어그램들을 이용하여 프로그램의 뼈대를 완성한다. 시퀀스 다이어그램, 액티비디 다이어그램, 플로우차트(순서도) 등이 다 프로그램을 만드는 데 있어서 설계 과정에서 만들어낸 다이어그램들이며 이 다이어그램들을 보고 코딩을 한다.
특히 실제 코딩에 들어가기 전에 마지막으로 살펴보는 것이 순서도인데, 앞서 언급했던 것처럼 코딩은 이 순서도를 내가 사용하고자 하는 프로그래밍 언어로 표현해주는 것에 불과하다. 즉, 순서도가 잘 작성되어 있으면 어떤 프로그래밍 언어로도 다 코딩이 가능하다. 편하게 코딩하는가 아니면 좀 불편하게 코딩하는가의 차이만 있을 뿐이다.
즉, 난 코딩교육이 중요하다고 하는데 코딩교육을 할 것이 아니라 순서도를 그리고 그것을 코딩하는 것까지 교육에 다 포함해야 한다고 생각을 한다. 순서도 자체는 어떤 결과를 보여주지 않는다. 코딩을 하고 그것을 실행시켜야 결과를 눈으로 볼 수 있기 때문이다. 하지만 순서도를 만드는 과정에서 코딩 중에 생길 수 있는 논리적 오류 등을 다 잡아낼 수 있고 목적의 결과물에 대한 예측을 할 수 있다. 그리고 무엇보다도 순서도를 그림으로 인해 논리적 판단을 잘할 수 있는 능력을 배양할 수 있다고 본다.
순서도의 조건문 표현으로 논리력 향상 효과를 볼 수 있는데…
개인적인 생각이기는 하지만 프로그램을 만들면서 가장 중요한 구문은 조건문의 사용이라고 본다. 어떤 조건에서 맞으면 이쪽으로, 틀리면 저쪽으로 실행하게 만드는 조건문은 프로그램의 흐름을 변화시키며 프로그램의 성격을 결정지어주는 중요한 요소다.
설계자나 개발자는 조건문을 이용하여 다양한 조건에 따라 실행할 수 있는 액션을 달리 만들어 프로그램의 기능을 더 풍부하게 만들 수 있다. 그리고 조건문을 만들면서 조건에 따른 흐름을 구상하고 그 흐름에 따라 다른 결과물을 표현할 수 있게 함으로 설계자 및 개발자의 논리적인 사고를 향상시킬 수 있다.
물론 이미 수많은 프로그램을 만든 설계자나 개발자들에게 사고력 향상을 얘기하는 것은 우습지만 이제 막 프로그래밍 세계에 들어온 어린 학생들에게는 상당한 학습효과가 있을 것임은 자명한 사실이라 본다. 논리력 향상에 순서도로 조건문을 만들어 다양한 케이스에 대한 액션 및 흐름을 만들어보는 것은 무척이나 교육적인 효과로 만족할만한 결과를 만들 수 있지 않을까 하는 생각이 든다.
이런 얘기를 왜 하는가 하면, 코딩교육 이야기가 나오는데 정작 왜 코딩교육을 해야 하는지에 대한 목적이 불분명하고 나오는 얘기는 그저 어떤 툴을 이용해서 교육을 해야 하나 하는 얘기만 나와서 답답해서 이런 얘기를 하는 것이다. 단순히 툴을 이용해서 간단하게 뭔가를 만드는 것에만 집중을 한다면 진짜 코딩교육을 통해서 무엇을 얻게 만들려고 하는가라는 목적이 희미해지고 유명무실해지지 않을까 하는 생각이 들어서 말이다.
성취감 및 자신감 향상에 있어서 코딩만한 교육은 많지 않다
앞서 언급했든 코딩교육, 즉 툴을 이용한 교육이 나쁜 것은 아니다. 어떤 것을 만들고 그 결과물을 보여주는 그런 성취감을 키우는 교육에 있어서 프로그래밍 교육만한 것이 없다고 생각을 한다.
컴퓨터와 툴만 있으면 능력에 따라서 뭐든 만들 수 있는 것이 프로그래밍 교육이다. 적은 비용과 적당한 노력(?)으로 자기가 처음부터 뭔가를 만들어서 결과를 볼 수 있는, 결과물을 확인할 수 있는, 그래서 작게나마 성취감을 맛볼 수 있고 그것이 자신감 향상으로 이어지게 만들 수 있는 교육은 그렇게 많지가 않다. 하지만 프로그래밍 교육은 그것이 가능하다. 그렇기 때문에 코딩교육은 그런 의미에서 필요하다.
하지만 툴 교육으로만 끝나는 것이 아니라 진짜로 교육적 목적으로 논리력 향상을 위한 순서도 작성 교육이 포함된다면 성취감 및 자신감 향상에 논리력 향상이라는 더 큰 효과를 볼 수 있지 않을까 하는 생각이 들어서 이렇게 장황하게 이야기를 풀어봤다.
원문: 학주니닷컴