이글은 길다. 바쁘신 분은, 마구 스크롤 하여 맨 뒷 문단만 읽자.
어느 순간에 4차 산업혁명이라는 단어가 불쑥 다가왔다. '4차산업' 혁명이 아니고 4차 '산업혁명'이다.
일부 기성세대는 아직 3차 산업혁명에도 다 적응하지 못했는데 4차 산업혁명이라니. 하여간 그렇게 되었다. 대략 18세기에 시작된 산업혁명은 비록 혁명이란 단어가 붙어있기는 했지만 생각보다 빨리 전파되지 않았다. 그 결과, 19세기와 20세기 중반까지 제국주의와 피지배국가라는 관계가 전지구적으로 심화되었고, 이 관계는 지금도 깔끔하게 해결되지 않은 채로 남아 있다. 3차 산업혁명의 균일하지 않은 전파는 디지털 디바이드(digital divide)라고 하며 모든 지표에서 국가, 지역, 계층 간의 격차를 점점 더 크게 하는 이유가 되었다. 우리가 이름이 뭐가 되었든 혁명적인 디지털 산업 변화를 소홀히 봐서는 안 되는 이유이다.
산업혁명은 노동자들의 역할, 지위, 그리고 물리적인 일자리의 위치도 빠르게 조정했다. 기계화는 특정 기능에 숙달된 도시 노동자들을 더 많이 요구하였고, 일터에서 도제식으로 배우던 지식과 경험을 매뉴얼화 된 교육으로 빠르게 습득시키기 위한 현대적인 학교 시스템이 늘어나는 계기도 만들었다. 또 산업혁명은 노동을 육체적인 것에서 '학습된 지식' 기반 활동과 정신적인 활동으로 점점 바꾸면서 노동자들의 블루컬러 유니폼 색을 화이트컬러로 탈색하는, 다시 말해 블루컬러의 일자리를 줄이는 과정의 연속이었다. 이런 1,2,3차 산업혁명 시대의 교육의 목표는 잘 짜여진 산업이 '필요로 하는 역량'을 가진 인력 자원을 양산하는 것이었다.
4차 산업혁명이 이전과 전혀 다른 점은 ‘학습된 지식’이 더 이상 큰 힘을 발휘하지 않을지도 모르는 세상을 만들고 그 결과, 이전의 산업혁명들이 요구했고 늘려 왔던 화이트컬러 일자리가 더 이상 매력적이지 않게 된다는 점이다. 이제 지식을 쌓기 위한 시간, 즉 엉덩이 무게가 평가에 그대로 반영되고, 그 평가가 개인의 미래를 결정하는 시대는 가고 창의적/지능적 융합이 중요한 시대가 되는 것이다. 이제 공부하면 성적이 오르는 수능과 같은 시험은 역량 평가도구로서 적합하지 않게 되었다.
4차 산업혁명 시대에 필요한 융합적 역량이라는 것은 무엇일까? 우선 기본은 융합의 재료가 되는 각 영역의 지식(Domain Knowledge)이며, 두 번째는 융합을 통해 실재하는 제품과 서비스를 기획하고 만들어 내는 소프트웨어 역량이고, 세 번째는 융합의 과정을 다루는 협업과 소통 역량이다. 그렇다. 세 가지 중에 요즘 말도 많은 코딩 역량, 소프트웨어 역량은 첫 번째가 아니다. 특히나 어릴 때는 세 번째인 협업 소통 역량과 공감력을 키우는 것이 중요하고, 성인이 되면, 첫 번째인 각 전문 영역의 지식을 경험을 통해 얻는 것이 더 중요해진다. 전공자가 아닌 이상 소프트웨어는 세 번째 정도라고 본다.
그 역량들은 어떻게 배울 수 있을까? 이전 산업혁명의 결과인 인터넷에는 엄청난 지식이 축적되고, 다양한 분야의 결과물들이 오픈소스로 공유되고 있으며, 더할 나위 없이 잘 지식을 전달하는 교육 동영상이 넘쳐난다. 즉, 지식을 습득하는 과정에서 ‘어디서’의 문제는 해결되었고 일부는 이미 기계로 대치 가능해졌다. 학교도 지식을 전달하는 역할에서 그 지식을 어떻게 활용할 것인가에 집중하여 학생들이 새로운 시대에 필요한 융합적 역량을 확보할 수 있도록 도와주는 것으로 역할을 바꾸어 가고 있다.
교과서의 진도를 따라가서 문제를 푸는 방식의 교육은, 문제를 내는 사람을 능가할 수 없기 때문에, 늘 실패이거나 절반의 성공만을 기대할 수 있다. 그런 교육을 받고도 뛰어난 역량을 발휘한 사람은 어쩌면 그 교육이 애초에 필요 없었던 사람이었을 가능성이 높다. 미래를 준비하는 교육은 문제를 찾아, 정의하고, 스스로 배워 해결하는 교육, 누구나 가지고 있는 창의성을 온전히 발현시키는 교육이어야 한다. 물고기를 주는 대신 낚시하는 법을 가르치자는 것이 이전 시대의 교육이라면, 이제는 정말 맛있는 생선 요리를 맛보는 것까지이다. 물고기를 잡는 여러가지 방법, 다양한 물고기 요리 법은 스스로 찾고 실제 경험하면서 배우도록 하되, 학교는 그 과정에서 필요한 여러 가지 도움을 주는 방식이 문제 해결형 교육이다.
모든 역량은 점진적이라기 보다는 계단식으로 달성된다. 자신이 정의한 문제를 해결하는 작은 성취를 이루다 보면 언젠가 그 자잘한 문제들이 별거 아니었다는 느낌이 드는 단계로 올라간다. 작은 성취가 있어야 재미도 있고, 다음 단계로의 동기도 생긴다. 약간의 순발력, 창의성과 재미, 많지 않은 노력으로 첫번째 단계는 성취 가능하다. 현재 우리의, 특히 중고등 교육은 대학 진학을 목표로 남이 정해준 문제의 답을 찾는 의미없는 성취를 반복하는 방식이다. 그 결과 책 한권을 다 떼어도 내가 해결할 수 있는 문제가 무엇인지를 이야기할 수 없는, 즉, 문제 해결 역량이 없는 상태가 된다. 수학의 정석을 다 풀어도 흔한 물리 현상을 수학적으로 설명하지 못하고, 영어를 10년 배워도 영어가 안되는 이유이다.
일단 한 단계 위로 올라가서, 나를 뒤돌아 보면, 재미가 있었는지, 더 높은 역량에 달성하기 위한 동기가 생겼는지 알 수 있고, 이제 좀 더 어려운, 가끔이 꽤나 힘든 작은 성취들을 이루면서 그 다음 단계로 올라간다. 이는 작은 언덕 몇개를 넘어 동네 뒷 산의 정상에 오르는 첫번째 단계를 달성한 뒤, 에베레스트를 올라가겠다는 꿈을 세우고, 암벽 등반, 체력 훈련 등 성실함(즉, 엉덩이 무게)이 필요한 과정을 거쳐 웬만한 산을 가볍게 오를 수 있는 역량을 가진다는 것을 의미한다.
두번째 역량 단계에서 목표 레벨인 최고의 역량 단계에 이르기 위해서는 다른 이와의 협력이 필요하다. 에베레스트를 혼자서 등정하기 어려운 것과 같다. 먼저 갔던 사람들의 경험을 빌리고, 세르파의 도움을 얻고, 아래에서 나와 하늘을 지켜보면서 조언을 해줄 사람이 필요하다. 역시 이 과정에서도 넓은 골짜기, 꽤 높은 얼음 언덕을 오르는 작은 성취를 거쳐야 한다. 그리고 나서야 우리는 목표했던 최고의 수준에 즐겁게 이를 수 있다.
-
다시 소프트웨어 이야기로 돌아가면, 코딩 또는 소프트웨어 교육도 위와 다르지 않다. 소프트웨어 개발 도구를 만드는 극히 일부의 전문적인 소프트웨어 개발자가 하는 일 말고는, 코딩을 위한 코딩, 소프트웨어를 위한 소프트웨어는 없다. 구구단 자체가 목표가 아니듯이 융합적이든 아니든 문제해결을 위한 도구라는 관점에서 소프트웨어를 접근해야한다. 메이커, 프로젝트 기반 교육 역시 그 작품의 주제가 코딩이 아니라, 늘 국어, 수학, 과학, 사회, 음악, 미술, 체육 등 전 영역이다. 소프트웨어라는 강력한 도구는 어떤 분야의 문제이던 문제 해결이 재미있고, 효율적이며, 효과적임을 학생 스스로 느낄 수 있도록 활용되어야 한다.
Computational Thinking (계산적 사고, CT) 이란 '컴퓨터가 어떻게 문제를 해결하는가'가 아니라 '사람이 문제를 어떻게 해결하는가'이다. 문제를 해결하는 세부적인 절차와 논리, 그 과정에서 필요한 데이터, 결과적으로 표현되는 데이터를 구체적으로 설명하는 것을 CT라고 한다. 어떤 요리를 만들기 위한 보통은 불필요할 수준의 세부 절차가 묘사된 레시피와 같은 것이다. ('설탕 조금 넣는다가'가 아니라, '1. 양념 보관함에서 설탕병을 꺼내 요리대로 올린다. 2. 뚜껑을 손을 감싸 반시계 방향으로 두 바퀴 돌려 연다. 3. 뚜껑을 내려놓는다. 4. 티스푼을 수저통에서 꺼낸다. 5. 티스푼을 설탕병에 넣는다. 5. 한 스푼을 푼 뒤, 손가락으로 평평하게 깍는다. 6. 설탕을 ~~위에 뿌린다, 7. 스픈에 설탕이 없는 것을 확인하고 내려놓는다' 이런 식으로 누구라도 따라할 수 있게 기술하는 것이 CT이다. (실제로 설탕을 넣는 과정을 세분화한 각 번호의 동작도 더 세부적인 과정으로 얼마든지 나눌 수 있는, 엄청나게 추상화된 동작들이다). 이 세분화된 과정은 너무 세분화되었기 때문에, CT에는 이 세분화된 과정을 묶어서 요약하는 '추상화' 라는 것도 포함한다.
코딩이 아니라도, 종이접기 과정, 간단한 요리 만들기, 꽃 심는 절차, 간단한 보드 게임 규칙 등을 전혀 모르는 사람이 따라할 수 있도록 차근히 설명할 수 있는 역량이 CT 역량이다.
아래 동영상을 보자. CT가 무엇인지 직관적으로 이해할 수 있다.
스크래치, 엔트리, 코들리 등 초등 단계에서 배우는 블록 코딩 방법만 이용해도, 전 교과 영역에 대한 지식을 아우르는 경험적 콘텐츠를 모두 만들 수 있다. 하지만 문제 해결 경험이 쌓일수록 더 복잡한 문제 해결의 욕구가 생겨나며, 소프트웨어라는 도구 관점에서 중요한 생산성 지표 중의 하나인 readability(코드가 읽기 쉬운 정도)가 매우 나쁜 블록 코딩의 한계를 느끼게 된다. Readability가 나쁘면 변화하는 세상, 변화하는 요구 사항을 위한 소프트웨어 업데이트를 어렵게 만들고, 문제가 커지면 필수적인 다른 사람과의 협업을 매우 어렵게 만든다.
따라서 경험이 쌓이고, 문제가 복잡해 질수록 파이썬, 자바스크립트 등 상대적으로 더 유연하고 배우기 쉬운 텍스트 기반 언어가 자연스럽게 뒤를 잇는다. 그 뒤에는 C, C++, JAVA, SCALAR, C# 등등 엄청나게 많은 언어거 있다. 언어의 선택은 그 소프트웨어가 해결하려는 문제에 가장 적합한 것으로 선택하며, 보통 개발자들은 새로운 프로젝트에 새로운 언어의 사용이 결정되면, 그 언어를 배우면서 개발을 진행한다. 또 언어는 유행과 같은 것이기도 하다. TIOBE 사이트는 프로젝트 들에서 프로그래밍 언어의 사용 선호도를 정기적으로 조사한 결과를 보여준다.
소프트웨어 개발을 전공하지 않는 경우, 자신의 전공 영역에서의 지식을 쌓고, 스스로 해당 전공 영역이나 다른 영역과 융합된 문제를 찾는 것으로 시작할 수 있다. 비슷한 문제를 먼저 생각해 낸 선구자들이 문제의 일부분을 해결한 결과가 오픈소스로 많이 공개되어 있기 때문에, 내 문제와 이전에 해결된 문제들의 차이를 이해하고 새롭게 드러난 문제 부분에 집중하여 해결하는 것이 가능하다. 이를 위해 비전공자들이 가장 많이 사용하는 언어 가운데 하나인 파이썬과 같은 텍스트 코딩 도구를 익힐 필요가 있다.
한편, 알고리즘은 소프트웨어가 문제를 푸는 가장 자원 효율적인 방식을 추구한다. 알고리즘 역량은 해결해야 하는 문제나 데이터에 따라 문제 해결을 위한 가장 최적의 절차를 수학적인 논리로 펼쳐내는 역량으로 소프트웨어로 구현된 제품 서비스를 시장에 내놓을 때 반드시 필요하다. 그럼에도 불구하고 대부분 사람들, 심지어 소프트웨어 개발자라고 해도 보통은 정보 올림피아드 류의 알고리즘 대회에서의 메달을 따야할 정도의 역량을 가질 필요는 없다. 정보올림피아드는 다분히 두뇌스포츠 영역이라고 볼 수 있으며, 조기축구팀이 월드컵 16강을 가거나, 수영한다고 모두가 올림픽에서 메달을 딸 필요가 없는 것과 같은 이치이다.
당장은 코딩을 어디서 배울 것인가가 아마도 학부모들이 가장 궁금해 하는 질문일 것이다. 요즘 사교육 시장에서도 코딩을 가르치지만, 단언컨대 사교육은 필요없거나, 필요성을 느낀다 해도 가성비가 좋지 않다고 할 수 있다. 정부가 운영하는 소프트웨어 중심사회 포털인 HTTP://SOFTWARE.KR 사이트에 가거나 인터넷에서 “코딩 배우기”를 검색만 해도, 수준별 콘텐츠가 정말로 다양하게 준비되어 있다. 블록 코딩, 텍스트 코딩, 홈페이지 만들기 등에 관한 유튜브 동영상도 많고, 아두이노와 같은 하드웨어를 이용한 메이커 활동 학습 자료도 많다. 사교육에서 수십만원에 판매하는 하드웨어 키트와 별차이가 없는 몇 만원 수준의 하드웨어를 이용한 자가 학습이, 사교육에서 제공하는 수준과 이해도로 얼마든지 가능하다. 처음 배우는 코딩도 그 난이도가 높지 않기 때문에, 부모와 아이가 같이 집에서 따라하면서 배우는 것도 충분히 가능하고 좋다. 그리고 정말 더 흥미가 생기면, 프로젝트 중심으로 진행하는 며칠짜리 소프트웨어/코딩 캠프도 어렵지 않게 찾을 수 있다. 지금은 전국의 소프트웨어 중심대학이나, 지역 자치단체, 많은 창업 공간, 소프트웨어 관련 단체, 공공기관, 선생님 대상 교육 기관, 삼성, 네이버 등 주요 대기업들이 엄청나게 많은 교육과 캠프를 무료 또는 아주 저렴하게 제공하고 있다.
“국영수코”라는 말을 언론들이 하고 있다. 소프트웨어, 코딩이 중요하기는 하지만, 우리가 살아가기 위해 과학적 사고가 중요한 것과 마찬가지인 정도라고 이해하면 되지 않을까 한다. 우리가 이미 '공기 반, 소프트웨어 반'으로 숨쉬고 있기 때문이다. 대학을 가기 위해서 코딩을 배운다는 것도 옳지 않다. 코딩이 재미있어 그것을 도구로 의미 있는 문제 해결 경험을 쌓고 그 시기에 배워야 할 것들을 그 과정에서 잘 배우고, 자신이 배운 것을 설명할 수 있다면, 다른 모든 입시 친화적인 역량과 동등한 수준에서 평가될 수 있을 뿐이다.
결론적으로 중요한 것은 코딩이나 소프트웨어가 아니라, 어떤 분야에서든 문제의 본질을 찾아내고 해결하는 역량이며, 그 역량이 없다면 소프트웨어 또는 인공지능 할애비가 와서 아무것도 아니다. 전공이나 분야와 상관없이 말이다. 다음 그림을 보자, 사막에 낙타가 보이는가? 자세히 보면 검은 것이 낙타가 아니라 그 아래 흰 것이 낙타이다. 이 그림이 멋져보이는 건, 사막과 석양 그리고 이 사진을 찍은 사진 작가의 역량이다. 하지만 낙타가 없다면 이 사진도 없다. 낙타가 각 영역에서의 전문성이다. 그리고 사막과 석양 역시 필수적인 요소이고, 그것들을 엮어서 감동을 현실화 한 사진사의 역할이 소프트웨어이다. 모두 중요하다. 각자 잘하는 영역을 잘 하면 된다.
너무 심각하게 생각하지 말자. 재미있게 하자.
*
'소프트웨어 이야기' 카테고리의 다른 글
해커톤 (0) | 2018.08.19 |
---|---|
Permissive 라이선스는 동작을 할까? (0) | 2018.08.05 |
오픈 소스를 대하는 올바른 자세 (0) | 2018.03.14 |
기계 번역 놀이, 구글 번역 vs 네이버 파파고 (0) | 2018.02.05 |
아이폰 6+ 배터리 관찰 (0) | 2018.01.07 |