"어린 마음을 가져주세요."
뉴미디어 워크숍을 진행할 때 초반에 참가자들에게 던지는 말이다. 대상이 어린 초등학생이든, 자신의 분야에서 어느정도 경험을 쌓은 성인이든 이 말을 던진다. 참가자들은 웃기도 하고, 무슨 의미인지 궁금해하는 표정을 짓기도 한다. '어리다'는 사전적으로는 나이가 적다라는 뜻 외에도 생각이 모자르거나 경험이 적어 수준이 낮음을 의미하기도 한다. 무언가를 배우기 위해 참여한 사람들에게 어려지라고 말하는게 실례가 되는 말일 수도 있겠지만, 필자가 참가자들에게 부탁하고 싶은 '어린 마음'이란 다음과 같은 태도를 말한다.
새로운 개념, 지식을 어린 아이처럼 순수하고 호기심 많은 태도로 배우거나 경험하려는 상태
여기서 필자는 '상태'라는 표현을 썼다. 의도적으로 어린 아이와 같은 흉내를 내라는게 아니라, 이제는 기억도 나지 않을테지만 한 번 쯤은 경험해 봤을, 주변의 새로운 자극에 대해 넘치는 호기심으로 자기 검열 없이 스폰지처럼 흡수하려는 상태로 몸과 마음이 되돌아 가보라(unlearn)는 말이다. 참가자들은 고개를 끄덕이며 공감하지만 어린 마음이 되어 새로운 경험과 배움을 시작하는 데는 시간이 필요하다.
어린 마음의 상태가 되었는지 확인해볼 수 있는 간단한 방법으로 '관찰하기'가 있다. 워크숍에서 사용하게 될 각종 장치와 재료들을 관찰하고, 발견되는 특징들을 자유롭게 이야기해보라 한다. 재료 중에는 평소에 주변에서 자주 보던 것부터, 용도를 알 수 없는 생소한 것까지 다양한데, 참가자 중에는 이미 알고 있는 (간혹 틀리기도 한) 지식을 머리 속에서 꺼내 이야기하거나, 생소한 재료에 대해서는 혹시나 잘못된 말을 할지도 모른다는 두려움 때문에, 혹은 모르는 상태를 드러내기 싫은 마음에 관찰하기를 몰입하지 못한다. 아쉽게도 아직 어린 마음이 아닌 것이다.
어린 마음이 된다는 것은 현재 주어진 상황이나 주어진 매체에 온전히 빠져보라는 의미다. 과거의 경험을 억지로 꺼내거나, 미래의 걱정을 앞서 하지 않고, 지금 느껴지는 욕구를 따라서 관찰하고, 실험하고, 경험을 하라는 의미다. 티모시 골웨이의 "이너게임"에서는 이를 아이가 놀이에 빠져있는 것에 비유한다. 욕구가 주의를 집중시키고, 그 욕구를 따르게 되면 자연적으로 몰입이 일어난다. 그 상태에서는 인위적인 노력 없이 저절로 행동이 일어나며, 자아의식 (self-consciousness) 이 사라지고, 자기평가나 과잉통제를 일으키는 불안감이나 의구심도 사라진다. 미하이 칙센트미하이는 이를 '플로우 상태 (flow state)'라고 부르기도 했다1.
자, 그럼 이 글의 나머지를 읽어나갈 독자분들에게 다시 한 번 더 부탁을 드리겠다.
"어린 마음을 가져주세요."
- [1] 이너게임, 티머시 골웨이 지음, 최명돈 옮김
필자는 주로 가르치는 일을 한다. 디지털 소프트웨어와 하드웨어를 구성하는 기술적 매체가 교육의 소재가 된다. 과거에는 컴퓨팅적 사고 (Computational Thinking) 를 체득할 수 있는 뉴미디어 리터러시 (Newmedia Literacy) 를 교육한다고 설명하기도 했지만 쉽게 전달되지 않았다. 간단하게 컴퓨터 교육이라고 말하면 쉽게 설명이 될 지도 모르겠지만 요즘에는 다음처럼 필자가 하는 일을 표현한다.
'컴퓨팅 (Computing)' 기술매체를 기반으로, '키트 (KIT)'를 만들고, '워크숍 (Workshop)'으로 이야기를 풀어내는 창작자입니다.
말 자체는 이해하는 데 어렵지 않지만 정확히 무슨 일을 하는 것인지 상상하기는 쉽지 않다. 구체적인 작업을 소개하기 앞서 컴퓨팅 기술매체와 관련하여 한 가지 더 생각해볼 내용이 있다. 단어 자체는 쉬운데 역시 무엇을 하라는 말인지 상상하기 쉽지 않은 표현이 있다.
Code ! (코딩합시다!)
코딩한다는 것은 부호화하거나 암호화한다는 뜻도 있지만 오늘날에는 컴퓨터 소프트웨어를 프로그래밍하는 행위를 나타내는 말로 자주 쓰이고, 주로 개발자와 같은 특정 분야의 전문가에게나 해당하는 동사이다. 그러나 몇 년 전 IT분야의 유명인들을 등장시키며 누구나 컴퓨터 과학을 배워야한다고 홍보하는 Code.org라는 사이트가 생겼고, Hour of Code 이벤트를 통해 수 많은 사람이 쉽게 코딩을 시작하는 경험을 하면서 점점 일반인을 위한 동사가 되었다. 우리 나라도 몇몇 대학에서 전체 신입생을 대상으로 코딩교육을 실시하려는 움직임이 있으며, 초중등의 공교육 과정에서도 SW교육을 의무화하려는 노력이 활발히 진행되고 있다.
급변하는 컴퓨터 환경 속에서 제대로 컴퓨터를 활용하고자 따라가는 것도 힘겨운데 컴퓨터 개발자들이 한다는 코딩까지 배워야하는 것은 일반인들에게 매우 두려운 일이다. 심지어는 IT분야에서 오랜 경험을 쌓은 전문 개발자 중에도 (본인도 힘들게 노력해서 배운) 코딩을 일반인이 배워야한다는 말에 동의하지 않는 사람도 있다. 반면 필자는 코딩이 모든 사람에게 문자와 같이 읽고 쓰기가 되는 리터러시가 되기를 희망하는 사람이다. '코딩'이라는 단어를 사람마다 다른 관점으로 바라보고 있어서 혼란이 발생하는 것인데, 필자의 관점을 이야기하기 전에 우선 코딩이라는 것이 어떻게 생긴 녀석인지 알아보자.
다음과 같은 의도를 컴퓨터에게 시킨다고 생각해보자.
'Hello'를 10번 화면에 나타내기
문서 편집기에서 'Hello'라고 적은 후에 복사해서 붙여넣기를 몇 번 하면 금방 될 것 같은 이 간단한 일을 개발자가 사용하는 프로그래밍 언어 중 하나로 코딩해보면 아래와 같이 장황해진다1.
#include<stdio.h>
int main(int argc, char * argv[]) {
for (int i=0; i<10; i=i+1) {
printf("Hello\n");
}
return 0;
}일반인이 이해하기에는 매우 난해하다. 코드(code)라는 단어에 '암호화를 하다'라는 뜻도 있다는 것이 충분히 공감이 된다. 하지만 코딩이 가능한 프로그래밍 언어는 한 가지가 아니다. 만약 다음과 같은 코드2라면 어떨까?
for i in range(10):
print("Hello")이 코드가 어떤 일을 할지 어느정도 짐작이 되지 않는가? 만약 다음과 같은 코드3라면?
10 timesRepeat: [ 'Hello' print ].코딩을 경험해보지 못한 사람에게도 약간의 영어 단어만 안다면 어떤 동작을 할지 충분히 읽히는 코드다. 요즘 어린 학생들이 경험하는 코딩4은 이보다 더 직관적이다. 고맙게도 한글이면서, 앞서의 문자로만 이뤄진 코드보다 색상이 다양해서 친숙하게 느껴지기도 한다.
마지막 예제는 누구나 손쉽게 코딩을 배울 수 있도록 고안된 것으로 레고블록처럼 각 명령어 블록을 드래그 앤 드롭으로 조립할 수 있는 비주얼 프로그래밍 언어 (Visual Programming Language) 중 하나다. 일부 전문 개발자들은 '이것은 코딩이 아니다! 아이들을 위한 교육용이지 현업의 진정한 코딩과는 거리가 멀다'5라고 말할지도 모른다. 바로 여기서 '무엇을 위해 코딩해야하나?'라는 관점의 차이가 발생한다.
- [1] 개발자라면 한 번은 거쳐가야하는 C라는 언어이다.
- [2] 파이썬(Python), http://python.org
- [3] 스몰토크(Smalltalk). 문법적으로는 정확한 코드이지만 실행하면 'Hello'라는 문자열이 print라는 명령어를 이해할 수 없다고 나온다. 그러나 스몰토크 환경에서는 바로 원하는 기능을 추가할 수 있다.
- [4] 스크래치(Scratch), http://scratch.mit.edu
- [5] 미안하지만 코딩이 맞다. 과거에도 바이너리 수준의 프로그래밍을 하던 개발자들이 인간이 이해할 수 있는 수준의 언어가 등장할 때 유사한 반응을 보였다 (http://worrydream.com/dbx/, Reactions to SOAP and Fortran). 스크래치와 같은 블록형 비주얼 프로그래밍 언어의 경우 초심자용으로 제한된 언어에서 시작되었지만 이제는 범용의 언어로 다양하게 진화하고 있다.
코딩은 컴퓨팅 하드웨어와 소프트웨어를 포함한 '기계를 움직이는 언어를 다루는 일'이다. 컴퓨팅은 정보사회의 핵심 개념으로 최근의 SW교육과 코딩에 대한 열풍은 IT 관련 산업과 경제적 효율성의 논리로 자주 언급된다. 그에 따라 관련 산업의 전문가 입장이나 관점의 비중이 높아지면서 우리는 일상에서 리터러시로서 작용할 코딩의 다른 면을 보지 못하고 있다.
이미 코딩은 우리 일상에 많이 들어와 있다. 앞서 몇몇 코드의 예제를 통해 코드가 여러 수준의 형식적 생김새를 가진 것을 알았다. 그리고 이 생김새는 생각보다 더 다양해서 우리가 코드라고 인지하지 못하고 일상에서 사용하는 경우도 많다. 가장 대표적인 예로 아래와 같은 스프레드시트를 우리는 무엇이라고 인지하고 있는가? 스프레드시트 (Spreadsheet Formula Language) 는 성공적으로 일상의 리터러시로 안착한 코딩 언어이다.
[그림1. 스프레드시트] 스프레드시트 (Spreadsheet Formula Language)
코딩 언어는 형식언어1의 일종으로 우리 인류는 말과 글로 표현하는 자연언어와 함께 컴퓨터가 존재하기 이전부터 형식언어를 일상의 언어로 사용해왔다. 어쩌면 인류에게 있어서 형식언어를 습득하고 활용하는 것은 일종의 본능으로 매우 자연스러운 행위일지도 모른다. 다음에 나오는 예들은 비록 컴퓨터를 이용하지는 않았지만 코딩의 행위와 매우 유사하다.
[그림2. 악보] 악보는 시간성을 가진 음악을 공간에 코딩한 것으로 인간과 기계가 동시에 이해할 수 있는 코드이다.
[그림3. 뜨개언어] 패턴을 만드는 뜨개의 언어는 컴퓨터 기계언어의 구조와 매우 흡사하다.
[그림4. 문장수정기호] 문장을 수정할 때 그 과정을 기록하는 기호로 이 코드를 사용하면 누구나 같은 결과물을 얻을 수 있다.
그렇다면 왜 사람들은 컴퓨터의 형식언어를 다루는 코딩에는 어려워하고 배우기를 꺼려할까? 아직 그들이 관심을 가지는 영역과의 교차점을 찾지 못했기 때문이다. 만약 사람들이 자신의 관심과 도메인 지식에 잘 부합하는 영역을 찾았을 때 그들은 더 쉽게 코딩을 배우고, 컴퓨팅을 적극적으로 활용하게 될 것이다2. 그리고 그런 현상은 오늘날 이미 시작되었다.
제 3의 산업혁명이라고 불리면서 3D 프린터 등을 통해 개인 제조의 큰 혁신을 불러올 것이라고 주목을 받고 있는 메이커 운동 (Maker Movement) 에서 코딩은 디지털 생산의 도구이면서 메이커들이 서로의 관심 분야에 대한 노하우를 공유하고, 자신의 아이디어를 표현하는, 읽고/쓰기의 기술적 매체가 되었다. 뉴미디어 아트 (Newmedia art) 분야에서도 예술가들에게 코딩은 이제 디지털 매체의 본질을 이해하기 위한 수단이 되었으며 붓 대신 프로세싱 (Processing) 3 같은 코딩도구를, 조각칼 대신 아두이노 (Arduino) 4 같은 전자기판을 손에 들기도 한다. 메이커나 뉴미디어 아티스트에게 코딩은 이제 일상이 된 것이다.
- [1] 형식언어 : 구조, 범위 따위가 명확하게 규정되고 정의된 인공 언어. 주로 어학, 논리, 프로그래밍 따위 를 위하여 어법을 형식화하여 기술한 것이다.
- [2] A Small Matter of Programming, Bonnie A. Nardi, MIT press, p37, Formal Languages for End Users
- [3] http://processing.org, 컴퓨팅 미학을 탐구하는 아티스트를 위해 만들어진 오픈소스 프로그래밍 언어이다. 간략화된 Java언어를 사용하여 상대적으로 적은 노력으로 상호작용하는 컴퓨터 그래픽을 코딩할 수 있다.
- [4] http://arduino.cc, 8비트 마이크로컨트롤러를 엔지니어가 아닌 일반인도 사용할 수 있도록 만들어진 오픈소스 하드웨어로 현재 메이커 운동을 대표하는 플랫폼이 되었다.
필자는 컴퓨팅 기술매체를 소재로 가르치는 일을 한다고 말했다. 코딩도 컴퓨팅 기술매체의 중요한 부분이다. 코딩이 일상의 리터러시로 자리잡기 위해서 코딩교육은 IT 산업계의 기술교육과 같은 어른의 배우기가 아니라, 모국어를 습득하고 주변의 문화 속에서 놀이처럼 사용하는 어린 아이의 배우기가 되어야한다고 생각한다. 그래서 필자는 키트 (KIT) 를 만들어 워크숍으로 이야기를 푼다고 작업을 소개하고, 시중에 나와 있는 수 많은 교구등의 키트 (Kit) 와 구별하기 위해서 '뚝딱뚝딱 만지작거리며 배움을 만들어나가는 기술매체 (Knowledge Integrated through Tinkering 1) 로서의 키트 (KIT)' 를 고민하고 있다.
위와 같은 관점을 갖고 진행했던 작업 중 하나인 화개보드 (Fa.Ke.Board) 를 소개한다. 화개보드는 아두이노와 같은 디지털 하드웨어와 코딩에 대한 경험이 없는 일반인이 짧은 시간 동안 디지털 하드웨어와 뉴미디어 언어의 원리를 경험하고 사유할 수 있도록 만든 키트다. 모두에게 동일하게 주어진 회로도를 보고 자신만의 입출력 기계장치를 전도성 테이프나 문구류를 이용해 공예적인 느낌으로 만들게 된다. 그리고 그 장치와 연결되는 코딩을 통해 외부의 자극에 상호작용하는 작품을 만드는 워크숍으로 5살의 어린 아이부터 IT분야의 성인 전문가까지 다양한 사람들을 대상으로 했다.
[그림5. 화개보드 키트]
[그림6. 화개보드 설계도]
[그림7. 다양한 사람들이 만든 화개보드]
[그림8. f3.io, 화개보드와 연결이 되어 상호작용하는 디지털 작품을 만드는 코딩환경]
그 외에도 필자가 워크숍을 위해 사용하는 기술매체들은 일반적인 관점에서 볼 때 컴퓨팅 개념을 담기에는 조금 의아해보일 수 있는 다양한 형태의 키트로 만들어지고 있다. 그리고 이 키트를 통해 단순히 기술적 지식이 전달되는 것이 아니라 손의 움직임과 몸의 감각으로 컴퓨팅을 느껴볼 수 있도록, 즉 어린마음으로 기술매체를 경험하고 배울 수 있도록 노력하고 있다.
[그림9. 컴퓨팅 기술매체를 담고 있는 다양한 워크숍 키트]
- [1] 필자가 고안한 표현으로 키트를 대문자 KIT로 쓰는 이유이기도 하다.
다양한 형태의 키트로 워크숍을 진행하면서 마지막에 빠트리지 않고 전달하는 내용이 하나 있다. 워크숍에서 사용되는 소프트웨어와 하드웨어는 아티스틱 라이선스 2.0 (Artistic License 2.0) 1 을, 워크숍의 과정은 CC BY-SA 2를 따르고 있다고 말한다. 바로 오픈소스라는 점을 강조하고 그 의미에 대해서 이야기를 나누는 시간을 가진다. 각종 미디어를 통해서 익히 들어봤을 내용이지만 리터러시로서의 코딩이 되기 위한 오픈소스 문화의 관점을 환기시키고자 다음과 같은 이미지를 동시에 보여준다.
[그림10. 플로피 디스켓에 담긴 오픈소스]
과거 워크숍을 진행하면서 실행했던 일종의 퍼포먼스로 워크숍에서 사용된 소스코드와 설계도를 2HD 플로피 디스켓에 담아 참가자들에게 선물을 했다. 이제는 찾아보기 힘든 오래된 저장매체를 추억하는 사람도 있고, 안에 들어있는 내용을 어떻게 확인하느냐고 반문하는 사람도 있다. 그러나 디스켓 속의 내용을 USB 메모리에 담거나 이메일로 보내줘도 대부분의 사람들은 읽을 수 없다. 이는 마치 인류의 참된 지혜와 교훈이 담긴 서적이 읽을 수 없는 문자로 작성된 것과 다를 바 없다. 오늘날의 오픈소스는 물리적인 제약으로 읽을 수 없는게 아니라 일반인이 읽기에는 어렵거나 소스코드는 개발자를 위한 도구이지 일반인이 읽고 쓸 수 있는 대상으로 아예 바라보지 않기 때문에 읽는 시도조차 하지 않는 것이다. 기계의 언어를 읽고 쓰는 코딩을 창작과 표현의 리터러시로서 바라보는 입장에서 이 문제에 대해 진지하게 생각해볼 필요가 있으며, 이를 풀어나갈 방법으로의 워크숍을 계속 고민하고 있다. 오픈소스 철학이 일상으로 들어온 코딩과 함께 우리 삶에 큰 영향을 끼칠 것이라 생각하기 때문이다.
필자가 사용하는 매체나 접근 방법이 현재 유행하는 코딩교육의 일반적인 모습은 아니다. 여러 기관이나 기업, 그리고 개인들이 코딩교육에 관심을 갖고 각자의 시도를 하고 있으며 필자의 워크숍을 그 중의 한 사례로 이해해주면 좋겠다. 코딩을 배우고자 하는 일반인의 입장에서는 가장 효과적인 교육방법을 찾고 싶기도 하겠지만, 특정 분야의 기술적 도구가 아닌 리터러시로서의 코딩과 컴퓨팅적 사고는 아직 그 의미와 경계가 불분명한 상태이다. 오히려 한 가지 도구와 단일한 교육과정으로 강요해서 그 잠재적 가능성을 미리부터 차단하는 일이 없어야하겠다. 더 다양한 시도와 경험이 이뤄지길 바라며 필자가 기대하는 모습은 모든 사람들이 개발자처럼 코딩을 하는 세상이 아닌 언어놀이를 하듯 코딩을 자기 표현과 소통의 매체로 사용하는 문화를 가진 세상이다. 그리고 그 문화를 기반으로 사람들이 더 재밌는 상상과 고차원적인 사고를 할 수 있기를 꿈꾼다.
- [1] http://choosealicense.com/licenses/artistic-2.0/ - 원래는 Perl 프로그래밍 언어 문화에서 만들어진 오픈소스 라이선스로 필자는 처음에 이름이 마음에 들어서 사용하기 시작했지만, 문학의 '시적허용'이라는 뜻을 가진 것을 알고 더 적극적으로 이용하고 있다.
- [2] 크리에이티브 커먼스는 창작물에 대한 자유이용 라이선스로 BY는 저작자 표시, SA는 동일조건변경허락을 의미한다. http://www.cckorea.org/xe/ccl -










