코딩교육, 숨겨진 진짜 의미 몇가지

0
1120

코딩교육이 가지고 있는 다양한 의미는 이미 교육부의 입장이나 처음부터 코딩교육의 공교육 도입을 주장했던 많은 분들에 의해 충분히 설명이 되었다. 그 내용을 요약하면 “코딩교육은 CT(Computational Thinking)을 기초로 문제해결능력을 키운다는 것이다” 또한 “4차산업혁명이라는 차세대 산업을 위한 인력을 양성하기 위한 목적”도 어느 정도 포함되어 있기도 하다.

코딩교육을 사회적 담론으로 이끌어내는데 CT나 문제해결능력, 4차산업혁명이라는 키워드는 그 역할을 충분히 하고 있지만 눈에 잘 띄지 않지만 중요한 코딩교육의 진짜 의의를 한번 이야기해보고자 한다.

구체적인 이야기를 하기전에 프로그래머들의 세계에서 벌어지고 있는 대표적 몇장면을 소개하고자 한다.

리처드 스톨만에 대한 이미지 검색결과

첫번째 장면은 리처드 스톨만의 다소 우스꽝스러운 사진으로 대변되는 소프트웨어 개발 업계에서만 볼 수 있는 특유의 공유 문화다. 70년대 대표적인 해커(그 당시에는 해커라는 말은 나쁜 의미 아니었다.)였던 그는 프린트 프로그램에 대한 불만을 해결하기 위해 프린트 업체에 소스코드 공개를 요구하지만 거절당한다. 이러한 이유로 리처드 스톨만은 자유소프트웨어 운동(Free software movement)을 벌이고 모든 프로그램의 소스코드는 공개되어야 한다고 주장하기 시작한다. 여기에 동참하는 사람들이 넘쳐나면서 이 운동은 소프트웨어 업계에 큰 반향을 일으키게 된다. 이들 사상은 소프트웨어 공산주의에 가까웠지만 정치적인 목적을 가지고 있기 보다는 상업용 소프트웨어의 소스 비밀주의에 대항하는 운동에 가까웠다.

linux server market share에 대한 이미지 검색결과

리눅스는 여기에 동참하는 많은 소프트웨어 개발자들이 참여하여 탄생한 O/S였다. 메인프레임 O/S와 Unix가 지배하고 있던 서버용 컴퓨터 시장은 이제 리눅스로 인해 완벽하게 오픈소스 시장으로 전환되었다. 여기에 혁혁한 공을 세운이가 바로 리누스 토발즈다. 리눅스의 이름도 그의 이름을 따서 만든 것으로 알려져 있는데 그만큼 그의 공로가 절대적이었다는 것을 증명하고 있다.

이때부터는 자유소프트웨어 운동이 단순 자유를 넘어 오픈소스 운동으로 전환된다. 얼핏 비슷하게 보이는 자유소프트웨어와 오픈소스가 다른 점은 오픈소스가 공유를 목적으로 한 별도의 법적 라이센스를 가지고 있다는 것이다. 자유소프트웨어 운동에서는 모든 소스코드가 제한없이 공유되는 것을 목표로 했지만 오픈소스 라이센스는 공유에 대한 다양한 제한 정책을 가지고 훨씬 정교하게 공유의 의미를 보장받게 하고 있다.

주목을 받고 있는 내용은 아니지만 지금 개발되고 배포되고 있는 대부분의 인공지능, 블록체인 등 신기술은 오픈소스 방식으로 개발된다. 심지어 상업 소프트웨어의 대표격인 MS조차 다양한 오픈소스 프로젝트에 동참을 하고 있다. 이유는 단순하다. 소프트웨어가 이미 개인 혹은 하나의 기관의 창의성에 의존하는 시대가 끝났기 때문이다. 지금 개발되고 있는 대부분의 소프트웨어는 크든 작든 오픈소스에 의존하고 있지 않은 것이 없을 정도로 오픈소스의 위력은 광범위하고 막강하다. 그래서 현재 진행되고 있는 대부분의 영향력 있는 소프트웨어 개발결과는 개인이나 기업의 소유물이 아니라 인류 전체의 자산으로 본질적인 성격이 변화되게 된다.

두번째 장면이다. 오픈소스 소프트웨어가 개발되는 과정을 눈여겨 보면 진화론에서 이야기되고 있는 자연선택과 같은 장면이 포착된다. 자연 생태계에서는 주어진 환경에서 번식하지 못하는 종은 자연스럽게 도태되고, 생존과 번식에 유리한 성질을 가진 종들이(마치 자연이 스스로 의지를 가지고 있어서 그 자연에게 선택되듯) 자신의 성질을 후대로 전달하며 생태계에 퍼진다. 오픈소스 생태계도 거의 비슷한 방식의 경쟁을 통해 생존과 도태의 갈림길에 서게 된다.

Github opensource에 대한 이미지 검색결과

오픈소스 프로젝트가 처음 시작될때 한명 이상의 개발자 혹은 기획자가 아이디어를 내고 그 내용을 백서 형식으로 발표한다. 이에 호응하는 개발자들이 한두명씩 모여 개발과 관련된 아이디어를 주고 받은 후 본인들의 특기를 살려 각 파트별 개발에 참여하게 된다. 누구는 백엔드, 누구는 프론트, 누구는 번역과 매뉴얼 등등 다양한 분야의 특기를 가진 참여자들이 동참하면서 개발속도는 빨라지고 효율성도 높아지게 된다.

그렇기 때문에 초기 오픈소스 프로젝트는 개발자와 사용자의 관심을 끄는 것이 주요 목표가 된다. 생태계 형성이 프로젝트의 성공 여부를 가늠하기 때문이다. 시작된 프로젝트의 일부만 살아남는 치열한 게임이 벌어지는 이유다. 흥미롭게도 이때 사람들의 관심을 끄는 주요 요인은 당장의 보상이 아니다. 대부분의 참여자들의 참여 동기는 사회적이거나 재미 혹은 나르시즘이다.

대표적인 예가 비트코인이다. 비트코인의 창시자 사토시 나카모토는 2008년 금융위기때 일어났던 금융기관과 정부의 일탈행위에 환멸을 느끼며 비트코인 프로젝트를 시작한 것으로 알려져 있다. 비트코인은 개인의 프라이버시가 집단이 추구하는 가치보다 우월하다고 주장하는 사이버펑크(Cyberpunk) 운동의 일환으로 시작된 프로젝트였던 것이다. 금융자본질서를 탈중앙집권적으로 재편할 수 있기를 바라는 사람들의 정치적 목적이 이들의 주요 참여명분이었다. 교육분야에 유달리 오픈소스 프로젝트가 많은 이유도 마찬가지다. 교육이 가지고 있는 사회적 가치와 그로 인한 참여자들의 자발적 기여 문화가 오픈소스 프로젝트를 이끌어가기 때문이다.

결론적으로 말하면 소프트웨어의 생태계는 생물계와 마찬가지로 자연선택과 같은 방식으로 환경에 적합한 소프트웨어만 살아남게 된다. 생물계와는 달리 소프트웨어 생태계는 적자생존이 아닌 대의명분 게임에 가깝다는 것이 다를 뿐이다.

길게 사설을 늘어놓는 이유는 우리 아이들의 교실에 새로운 교육방식이 생기고 있다는 것을 이야기하기 위함이다. 코딩교육은 개인의 CT 능력을 향상시키는 의미 이외에 공개(Open)를 통한 공유(Share) 문화, 공정한 경쟁을 통한 생태계 조성 등 다양한 사회적 테마를 본질적으로 가지고 있다. 오히려 개인의 CT능력만을 키우는 것이 코딩교육의 목적이 될 경우 성공을 하기도 어렵지만 성공을 하더라도 히키코모리 덕후코더를 양산하는 결과를 낳을 지도 모른다.

정부차원에서 이야기되고 있는 4차 산업혁명시대를 대비하기 위한 인재는 공유정신을 바탕으로 한 참여형 인재여야하는 이유다. 이제는 몇몇 재벌기업이나 천재적인 재능을 가진 소수 사람들에 의존하는 시대가 끝나고 있다는 것을 오픈소스 트렌드는 이미 증명하고 있다. 코딩교육이 놓지지 말아야할 부분이 바로 오픈소스에 대한 이해다.

코딩은 고전 문학작품을 읽고 감화를 받은 작가가 새로운 작품을 창작하는 것과 같은 행위다. 미술, 음악같은 예술 분야도 다를바가 없다. 이미 문학과 예술은 오랫동안 공유되어 왔고 태생적으로 오픈소스 문화의 범주에 있었던 것이다. 시대를 지나 코딩이라는 새로운 창작활동에서 오픈소스의 정신이 감춰지고 있었을 뿐이다.

현재 코딩교육이 살짝 안타까운 것은 주요 수업 내용이 논리적 사고를 키우는 것만을 목표로 하고 있다는 것이다. 그러다보니 주로 기능적인 것을 이해시키고 실습하도록 되어 있어 코딩문화의 전반을 가르고 있는 공유와 집단지성의 작동을 경험하는데는 한계가 있다는 것이다. 게다가 실제 코딩활동에서 중요시되고 있는 GitHub 활동과 같은 오픈소스 프로젝트에 동참하는 것의 의미나 구체적인 방법을 알려주는 것도 배제되어 있다. 이제 막 걸음마를 시작한 아이에게 뛰라고 주문하는 것이라는 비판은 유효하지만 코딩이라는 창작과정을 통해 사회의 다른 구성원과 교류하는 방법을 익히는 것은 그 비판을 넘어서야할 만큼 큰 가치다.

이외에도 코딩교육은 그 자체로 문제해결능력을 키우는 데 적합한 과목이라는 것이다. 별도의 교수법을 적용하는 것이 아니라 기존과는 다른 방식의 교육방식을 적용할 수 밖에 없는, 태생적으로 기존 교실의 수업방식을 파괴적으로 개선할 수 있는 수업도구라는 것이다. 일방적으로 선생님의 지식을 전달받는 것이 아니라 학생이 스스로 학습을 할 수 있게 도와주는 것(Facilitator)이 선생님의 역할이 될 수 밖에 없는 과목이라는 것이다. 어쩌면 앞선 이야기들이 잘 실현이 된다면 선생님은 수업지도만하는 것이 아니라 참여자로 학생들과 교류하면서 배우는 입장으로 바뀔 수도 있다.

그런 의미에서 코딩교육을 지도하는 선생님들의 자질은 코딩교육에 있어서 큰 문제가 아닐 수 있다. 오히려 능력이 되는 선생님들이 코딩교육을 기존 방식 그대로 적용하는 것이 더 큰 문제가 될 수 있다. 선생님에게 요구되는 최소 자질은 코딩에 대한 노하우라기보다는 열린사고다. 수업을 통해 같이 배운다는 자세만 있다면 코딩교육은 오히려 더 효과적으로 진행될 수 있기 때문이다.

그리고 여기에 팁이 하나 더 있다.

just for fun linus tovalz에 대한 이미지 검색결과

앞서 언급된 리누스 토발즈가 쓴 책 “Just for Fun(그냥 재미로)”은 그가 코딩에 임하는 자세를 그대로 대변하고 있다. 이 천재적인 오타쿠는 재미삼아 리눅스를 개발하는 오픈소스 프로젝트에 참여했고 그동안 해결되지 못했던 문제를 가볍게(?) 해결하고 일약 스타텀에 오른다. 여기서 “재미”라는 단어로 그의 천재적인 공로 전체를 표현할 수는 없겠지만 그의 책을 읽어보면 “게임이나 데이트에는 관심이 없었고 오로지 코딩의 재미에만 푹빠진 그의 기질”이 의미있는 중요한 역할을 한 것은 분명해보인다.

재미라는 요소는 코딩에 있어서 빼놓을 수 없는 가치라는 뜻이다. 코딩능력도 외국어나 다른 예능을 익히는 것과 마찬가지로 꽤 오랜 기간의 집중으로 만들어진다. 이 오랜 기간동안의 집중은 결국 재미를 통해서만 유지될 수 있다. 이 재미라는 요소도 코딩교육에 있어 빠뜨려서 안되는 중요한 역할을 한다.

정리해보자면 코딩교육은 그 대상이 몇몇 개발자 성향을 가진 사람에 맞춰야 하는 것이 아니라 전인교육 차원으로 진행되고 있는 꽤 광범위한 목적을 가진 교육 프로젝트이므로 훨씬 더 크게 코딩교육의 목표를 재정의할 필요가 있다는 것이다. CT를 기반한 문제해결능력은 기능적 재능에 가깝지만 코딩교육으로 어쩌면 얻게될 수도 있는 공유, 공감능력, 정치적 올바름 등은 시민 사회에서 개인이 갖춰야할 사회적 소양에 가깝기 때문이다.

모처럼 시작된 공교육 코딩교육이 입시와 같은 현실적인 문제에서 벗어나서 교육현장의 분위기를 바꿀 수 있는 훈풍이 될 수 있기를 바라는 마음으로 정리했다.