아이들에게 코딩을 가르치면서 느낀 가장 중요한 것
코딩을 처음 배우는 아이들
30년 가까이 프로그램을 개발해 오면서 지금까지 정말 많은 코드를 작성했습니다.
C, C++, Java, JavaScript, Python...
처음에는 한 줄의 코드를 작성하는 것도 어렵게 느껴졌지만, 시간이 지나면서 프로그램을 만드는 것 자체에는 조금씩 익숙해졌습니다.
그런데 개발을 오래 하다 보니 한 가지 재미있는 사실을 발견하게 되었습니다.
프로그램 개발에서 중요한 것은 코드를 많이 아는 것이 아니라는 것입니다.
오히려 더 중요한 것은 문제가 생겼을 때 어떻게 생각하고, 어떻게 해결해 나가느냐였습니다.
그리고 아이들에게 코딩을 가르치면서 이 생각을 더욱 확실하게 느끼게 되었습니다.
아이들에게 코딩을 가르치다 보면 정말 다양한 아이들을 만나게 됩니다.
어떤 아이는 설명을 한 번만 해도 금방 이해합니다.
어떤 아이는 같은 내용을 몇 번 설명해 주어야 이해합니다.
또 어떤 아이는 코딩 자체에는 큰 관심이 없지만, 자신이 만든 프로그램이 움직이는 순간에는 누구보다 즐거워합니다.
처음에는 아이들의 코딩 실력을 보면서
라고 생각하게 됩니다.
그런데 여러 아이들을 가르치다 보니 조금 다른 모습이 보이기 시작했습니다.
코딩을 잘하는 아이와 문제를 잘 해결하는 아이가 항상 같은 것은 아니었습니다.
"선생님, 안 돼요!"
아이들에게 코딩을 가르치면서 가장 많이 듣는 말 중 하나가 있습니다.
프로그램을 실행했는데 화면이 나오지 않습니다.
버튼을 눌렀는데 아무 반응이 없습니다.
분명히 코드를 따라 작성했는데 오류가 발생합니다.
아이 입장에서는 당연히 당황스럽습니다.
그래서 바로 선생님을 부릅니다.
그런데 재미있는 것은 같은 상황에서도 아이들마다 반응이 조금씩 다르다는 것입니다.
어떤 아이는 바로 선생님을 부릅니다.
어떤 아이는 코드를 한참 바라봅니다.
또 어떤 아이는 이것저것 바꿔보고 다시 실행해 봅니다.
그리고 가끔은 혼자서 한참 고민하다가
라고 이야기하는 아이도 있습니다.
저는 이런 순간을 볼 때마다 생각하게 됩니다.
개발자는 오류가 없는 사람이 아니다
30년 가까이 프로그램을 개발하면서 저 역시 수없이 많은 오류를 만났습니다.
프로그램이 실행되지 않을 때도 있었고,
잘 동작하던 프로그램이 갑자기 오류를 발생시킬 때도 있었습니다.
데이터가 예상과 다르게 나오는 경우도 있었고,
원인을 찾기 위해 코드를 한 줄씩 확인해야 하는 경우도 있었습니다.
그런 경험을 하면서 알게 된 것이 있습니다.
개발자는 오류가 없는 프로그램을 만드는 사람이 아니라, 오류가 발생했을 때 그 원인을 찾아 해결하는 사람이라는 것입니다.
사실 프로그램 개발에서 오류는 피하기 어렵습니다.
중요한 것은 오류가 발생하지 않는 것이 아니라,
오류가 발생했을 때
라고 생각하고,
라고 찾아보고,
라고 다시 시도하는 것입니다.
아이들을 가르치면서 이런 모습이 얼마나 중요한지 다시 느끼게 되었습니다.
그래서 아이들에게 바로 답을 알려주지 않으려고 합니다
처음에는 아이가 질문하면 바로 답을 알려주는 것이 가장 친절한 방법이라고 생각했습니다.
그런데 그렇게 해주면 아이는 당장은 문제를 해결할 수 있지만, 다음에 비슷한 문제가 생기면 다시 선생님을 찾게 됩니다.
그래서 어느 순간부터 조금씩 방법을 바꾸기 시작했습니다.
아이들이
라고 하면 바로 답을 알려주는 대신 이렇게 물어봅니다.
그러면 아이가 다시 코드를 살펴봅니다.
처음에는 잘 모르겠다고 합니다.
하지만 하나씩 확인하다 보면 어느 순간 문제를 발견합니다.
그리고 그 순간 아이의 표정이 달라집니다.
자기가 직접 문제를 해결했기 때문입니다.
저는 이 경험이 단순히 코딩 문법 하나를 배우는 것보다 훨씬 중요하다고 생각합니다.
코딩은 문제 해결을 연습하는 좋은 도구입니다
코딩을 하다 보면 자연스럽게 여러 가지 생각을 하게 됩니다.
문제를 작은 부분으로 나누어야 하고,
무엇부터 해야 할지 순서를 정해야 하고,
결과가 예상과 다르면 원인을 찾아야 합니다.
그리고 한 번에 해결되지 않으면 다시 시도해야 합니다.
때로는 처음 작성한 방법보다 더 좋은 방법을 찾아야 하기도 합니다.
이 과정이 바로 문제 해결 과정입니다.
그래서 저는 코딩을 배우는 목적이 반드시
일 필요는 없다고 생각합니다.
물론 훌륭한 프로그래머가 되는 것도 좋은 목표입니다.
하지만 코딩을 배우면서
스스로 생각하는 습관, 문제를 해결하는 습관, 실패해도 다시 시도하는 습관
을 배울 수 있다면 그것만으로도 충분히 의미가 있다고 생각합니다.
코딩에는 정답만 있는 것이 아닙니다
아이들에게 코딩을 가르치다 보면 재미있는 일이 자주 생깁니다.
제가 생각하지 못했던 방법으로 문제를 해결하는 아이가 있습니다.
처음에는
라고 생각했는데, 결과를 보니 제대로 동작합니다.
그럴 때는 저도 웃으면서 이야기합니다.
프로그램을 만드는 방법은 하나만 있는 것이 아니기 때문입니다.
같은 결과를 만들어 내더라도 여러 가지 방법이 있을 수 있습니다.
그래서 아이들에게
라고 가르치기보다는
라고 생각해 보도록 하는 것이 더 중요하다고 생각합니다.
이런 경험이 쌓이면 아이들은 조금씩 자신만의 방법을 찾기 시작합니다.
AI 시대에는 더 중요한 이야기가 되었습니다
요즘은 상황이 조금 달라졌습니다.
제가 처음 개발을 시작했을 때와는 비교할 수 없을 정도로 많은 개발 도구가 생겼습니다.
특히 최근에는 ChatGPT와 같은 AI를 이용하면 프로그램 코드도 쉽게 만들 수 있습니다.
제가 원하는 기능을 설명하면 AI가 코드를 만들어 주기도 합니다.
저 역시 실제 프로그램을 개발하면서 AI의 도움을 많이 받고 있습니다.
그런데 AI와 함께 개발하다 보니 오히려 한 가지가 더 중요해졌다는 생각이 듭니다.
AI가 코드를 만들어 줄 수 있다고 해서 개발자의 생각까지 대신해 줄 수 있는 것은 아니기 때문입니다.
AI가 만들어 준 코드가 정말 맞는지 확인해야 하고,
내가 원하는 기능을 제대로 구현했는지도 살펴봐야 합니다.
문제가 생기면 어디에서 문제가 발생했는지도 찾아야 합니다.
결국 AI를 잘 활용하기 위해서도
스스로 생각하는 힘이 필요합니다.
아이들에게도 마찬가지라고 생각합니다
앞으로 아이들이 살아갈 세상에서는 지금보다 훨씬 더 많은 일을 AI가 도와줄 것입니다.
코드를 작성하는 일도 마찬가지일 것입니다.
그렇다면 앞으로는 코드를 얼마나 많이 외우고 있느냐보다
를 생각할 수 있는 능력이 더 중요해질지도 모릅니다.
그래서 저는 아이들에게 코딩을 가르칠 때 단순히 문법을 가르치는 것에서 끝내고 싶지 않습니다.
코드를 작성하는 과정에서
생각하고, 시도하고, 실패하고, 다시 시도하고, 결국 해결하는 경험
을 많이 해보았으면 합니다.
아이들을 가르치면서 오히려 제가 배웠습니다
아이들에게 코딩을 가르치기 시작했을 때는 제가 아이들에게 무언가를 알려준다고 생각했습니다.
그런데 시간이 지나면서 생각이 조금 달라졌습니다.
오히려 제가 아이들에게 배우는 것이 많았습니다.
잘 안 되는 프로그램을 붙잡고 계속 고민하는 모습,
제가 생각하지 못했던 방법으로 문제를 해결하는 모습,
실패하고도 다시 실행 버튼을 누르는 모습,
그리고 마침내 문제가 해결되었을 때 기뻐하는 모습.
그 모습을 보면서 저 역시 개발을 처음 시작했을 때를 떠올리게 됩니다.
프로그램 하나가 제대로 실행되는 것이 그렇게 기뻤고,
오류 하나를 해결하는 것이 그렇게 즐거웠습니다.
어쩌면 개발자에게 필요한 마음은 그때나 지금이나 크게 달라지지 않은 것 같습니다.
가장 중요한 것은 "스스로 해보는 경험"이라고 생각합니다
아이들에게 코딩을 가르치면서 제가 가장 중요하게 생각하게 된 것은
"얼마나 많은 것을 가르쳤느냐"가 아니라 "얼마나 스스로 해보게 했느냐"입니다.
정답을 알려주는 것은 빠릅니다.
하지만 스스로 답을 찾아가는 경험은 오래 남습니다.
실패하지 않게 해주는 것도 중요하지만,
때로는 작은 실패를 직접 경험하고 그것을 해결해 보는 것도 중요합니다.
그래야 다음에 비슷한 문제가 생겼을 때
라고 바로 도움을 요청하기보다
라고 생각할 수 있기 때문입니다.
저는 이것이 코딩을 배우는 아이들에게만 필요한 능력은 아니라고 생각합니다.
앞으로 어떤 일을 하더라도 문제를 만나게 될 것이고,
그때마다 스스로 생각하고 해결해야 하기 때문입니다.
코딩을 가르치면서 제가 얻은 결론
30년 가까이 프로그램을 개발하고,
아이들에게 코딩을 가르치고,
최근에는 AI와 함께 프로그램을 만들면서
저는 점점 같은 결론에 가까워지고 있습니다.
좋은 개발자가 되는 데도, 좋은 문제 해결자가 되는 데도 가장 중요한 것은 "스스로 생각하는 힘"이라는 것입니다.
코딩은 그 힘을 연습할 수 있는 아주 좋은 도구라고 생각합니다.
그리고 AI 시대가 될수록 그 중요성은 오히려 더 커질 것이라고 생각합니다.
AI가 많은 것을 대신해 주는 시대에는
무엇을 외우고 있느냐보다
무엇을 질문할 것인지, 무엇을 만들 것인지, 그리고 그 결과가 맞는지 스스로 판단할 수 있는 능력
이 더 중요해질 것이기 때문입니다.
아이들에게 코딩을 가르치면서 저는 아이들에게 프로그램 만드는 방법만 알려주고 싶은 것이 아닙니다.
스스로 생각하고, 직접 시도하고, 실패해도 다시 도전해서 결국 자신의 답을 찾아가는 경험을 선물해 주고 싶습니다.
그리고 어쩌면 그것이
제가 아이들에게 코딩을 가르치면서 느낀
가장 중요한 것이 아닐까 생각합니다. 😊
아이들에게 코딩을 가르치면서 다시 생각하게 된
"코딩 교육"에 대한 이야기.
다음 이야기에서는 AI와 함께 프로그램을 만들어 가면서
실제로 어떤 과정을 거쳤는지 이야기해 보겠습니다.