더코알라
코딩 수업을 들으면서 슬슬 난관에 부딪히기 시작했다.
'더코알라'에서 제공하는 코딩수업을 들으면서 나름 순조롭다고 생각하긴했다. 아이디어를 적는 것부터 설계도를 만들고 코드를 직접 짜는 것까지 크게 막히는 부분이 없었다. 그간 그랬건만, 이젠 벽에 부딛히고 만 것이다. 흔히 이야기하는 인간의 두뇌랑 컴퓨터식 두뇌에서 오는 분명한 차이가 느껴지기 시작한 것이다.
다들 들어본 적 있을 것이다. 컴퓨터 전공의 남편을 둔 아내의 이야기. 어느 날, 장을 볼 수 없었던 아내가 남편에게 대신 심부름을 시키게 되었다. 아내는 남편에게..
"마트에서 우유 2개만 사와, 그리고 아보카도 있으면 3개 사와"
남편은 흔쾌히 사오겠다는 사인을 보내고 그대로 나갔다. 그리고 얼마 지나지 않아 남편은 우유 3개를 들고 집에 들어왔다. 아내는 당황스러워하며 남편에게 물었다. "엥 우유를 왜 3개나 사왔어? 아보카도는? 없었어..?" 그러자 남편이 당당하게 우유 3개를 번쩍 들면서 말했다. "아보카도 있었지!"
이 이야기는 코딩을 하는 사람들에게는 조금은 유명한 이야기일 것이라 생각한다. 이야기의 전말은 그렇다. 코딩식 사고를 하는 남편은 마트에서 우유를 2개를 사오라는 명령을 받았고 아보카도가 있다면 우유를 2개가 아닌 3개를 사오는 것으로 받아들인 것이다. 이것이 인간식 사고와 컴퓨터식 사고의 차이를 잘 보여주는 예라고 생각이 든다. 그래서 코딩이 어려운 것이다. 우리가 예상치도 못했던 곳에서 오류가 나는 이유도 보면 이런 메커니즘으로 인해서 오류가 나는 것이 허다하다.
보통 아래 사진처럼 문제를 풀면서 수업을 듣는 데 왼쪽은 주어진 문제, 가운데는 아이디어 생성, 오른쪽은 설계도 구상이다. 아래 내용은 대략적으로 설명을 하면 반복문을 만들어서 문제를 푸는 내용이다. 1에서부터 10까지의 숫자를 누적해서 더한 결과값을 생성하는 것인데 여기서 i 라는 변수에 1을 넣어주고 이 변수에 1을 더한 값을 sum 이라는 변수값으로 저장을 해주는 것이다. 그리고 매번 sum과 i를 더해서 그 값을 갱신 즉, 누적하면서 i가 10이 될 때까지 반복해주는 코드를 짜야한다.
사실 듣기만해도 어렵다. 이게 더 어렵다고 느껴지는 것은 저 문제만 보고서 이러한 변수들과 설계를 생각해내야 한다는 게 가장 어려운 것이다. 1부터 10까지 누적해서 더한 결과값을 내야한다라는 문제상황이 주어졌을 때, 변수 i와 내가 임의로 만든 sum이라는 변수를 사용해서 sum에 i를 더한 값을 다시 sum으로 제정의 해주어서 반복문을 만들어 풀어야겠다라는 결론이 다다르는 게 여간 쉬운 게 아니다. 보기만 해도 무슨 말인지 모를 수 있을 것이다. 어쩌면 당연한 것이다. 물론 나도 그랬다. 이건 본인이 직접해보면서 틀리고 계속 구상을 해보다보면 어느 순간 이해를 하기 때문에 이해를 못하는 것이 어쩌면 당연할 것이다. 만약 한 번에 이해를 했다면, 어쩌면.. 당신은 코딩에 천부적인 잠재력이 있을 지도 모른다. 결국 위에서 말한 이야기처럼, 평소에 사고하는 방식대로 아이디어를 구상했다가는 오류가 쉽사리 나기 때문에 코딩식 사고로 아이디어를 생각하고 변수를 생성해서 구상을 할 줄 아는 것이 코딩의 키포인트가 될 것이다.
이런 사고적 차이 때문에 사람들이 코딩이 어렵다고 말한다. 하지만 그렇다고 너무 어렵게 생각할 필요는 없다고 생각한다. 영어를 배울 때도 영어적 사고를 하듯이 코딩도 마찬가지로 또 하나의 언어로서 접근하면 그렇게 거부감은 들지 않을 것이다. 보통 이 프로그램의 의도와 마찬가지로 이러한 문제들을 계속 풀면서 어떤 문제 상황에서도 코드적 사고로 아이디어를 생각해낼 수 있는 능력, 그 능력을 집중적으로 키우는 것이 코딩에 관심이 있는 사람들 또는 시작한지 얼마되지 않은 사람들의 과제가 되야할 것이라 생각한다.