2박 3일 캠프 59만 원.
사교육 시장이 들썩인다. 바로 코딩이다. 영국과 핀란드에 이어 우리나라에서도 2018년에 의무교육이 되었다. 유망한 직업으로 프로그래머가 주목받는다.
부모는 막연하다. 갑자기 나타난 코딩을 모르면 아이가 뒤처질까 봐 걱정이다. 불안에 몰려 아이를 코딩 캠프에 등록하는 대신, 우선 코딩이 무엇인지 그리고 코딩을 왜 배워야 하는지 알아보자. 무엇을 배우는지, 왜 배우는지 알아야 화살이 과녁에 명중한다.
코딩은 도대체 무엇일까? 비유로 쉽게 이해할 수 있다. 카페에서 신입 직원에게 주문 접수를 가르쳐보자. 우선 일의 순서를 정한 절차서를 만들어야 한다.
1. ‘마실 음료를 묻는다’
2. ‘HOT or ICED를 확인한다’
3. ‘머그컵 or 개인 컵 or 일회용 컵을 확인한다’
4. ‘음료 사이즈를 묻는다’
만약 직원이 외국인이라면 그 절차서를 번역해야 한다. 만약 직원이 컴퓨터라면 컴퓨터의 언어로 번역한다. 컴퓨터에게 일을 시키기 위해서 절차서를 만들고 컴퓨터의 언어로 번역하는 것을 코딩이라 한다.
코딩을 왜 배워야 하는가? 사교육자는 스티브 잡스와 빌 게이츠, 마크 저커버그의 ‘코딩을 배워야 한다’라는 말을 인용해, 코딩을 꼭 배워야 한다고 막연하게 주장한다. 영국과 핀란드 같은 선진국에서도 의무교육으로 도입했다고도 곁들인다. ‘누군가 하라니까’ 혹은 ‘남이 하니까’에 머물 뿐, 코딩을 왜 배워야 하는지 구체적인 이유를 제시하지 못한다.
코딩을 배워야 하는 이유는 애플의 창업자 스티브 잡스의 말에 있다. “모든 사람이 컴퓨터 프로그래밍을 배워야 한다. 생각하는 방법을 가르쳐주기 때문이다.” 코딩을 배우는 이유는 프로그래머가 되기 위해서가 아니라, 논리적이고 효율적으로 문제를 해결하는 능력인 컴퓨팅 사고력을 키우기 위해서다.
그는 애플을 창업하기 전 비디오 게임기 제작사인 아타리(Atari)에서 일했다. 게임을 직접 제작하지 않고 컴퓨팅 사고를 바탕으로 게임기를 개선하는 아이디어를 제시하는 게 그의 일이었다. 한 일화로, 블록 깨뜨리기 게임기의 칩을 50개 이하로 줄이면 보너스를 주겠다는 제안을 받고서, 고교 동창생이자 뛰어난 프로그래머인 스티브 워즈니악에게 도움을 요청한다. 45개 칩만으로 게임기를 만드는 아이디어를 제출해 5,000달러의 보너스를 받아낸다. 뛰어난 프로그래머가 필요한 잡스는 워즈니악과 함께 애플을 창업한다. 애플에서 코딩을 도맡은 이는 잡스가 아니라 워즈니악이다. 워즈니악은 훗날 이렇게 밝혔다. “스티브 잡스는 전혀 코딩하지 않았다. 그는 엔지니어도 아니고 단 한 번도 초안을 만든 적이 없었다. 그러나 프로그램 설계를 수정하거나 추가할 정도의 기술은 가지고 있었다.” 스티브 잡스는 코딩이 아니라 컴퓨팅 사고로 성공한 사람인 것이다.
인공지능이 고양이를 인식하고, 인간의 언어를 번역하기까지 오랜 시간이 걸렸다. 고양이나 언어는 다양하고 불규칙하다. 예측할 수 없을 정도로 복잡한 현실 세계의 존재이기 때문이다.
코딩은 다르다. 인간의 언어가 아닌 컴퓨터의 언어를 다루는 일이다. 논리와 수학의 컴퓨터 세계에서는 예측하기 힘든 변수는 거의 없다.
코딩은 인공지능의 홈구장이다. 2017년 초 마이크로소프트와 케임브리지대학은 스스로 코딩하는 인공지능 딥코더(Deepcoder)를 발표했다. 2017년 5월 구글은 I/O 콘퍼런스에서 인공지능이 스스로 인공지능을 코딩하며, 코딩의 결과물은 세계 최정상급 머신러닝 전문가의 최신 기술과도 견줄 정도라고 발표했다. 인공지능이 만든 프로그램에는 군더더기가 좀 있지만, 프로그램을 만드는 속도는 인간을 압도한다고 밝혔다.
2018년 7월 구글은 클라우드 넥스트 콘퍼런스에서 오토ML을 공개했다. 오토ML은 각 기업에서 개발하는 인공지능을 똑똑하게 키워 주는 구글의 인공지능이다. 구글의 인공지능 전문가를 기업에 파견해 개선해주는 게 아니라, 인공지능 그 자체가 또 다른 인공지능을 개선하는 것이다.
이미 많은 곳에서 코딩이 자동화되었다. 예전에는 카메라로 촬영한 사진을 보정하려면 포토샵을 쓸 줄 알아야 했다. 지금은 클릭 몇 번이면 포토샵보다 더 멋지게 수정할 수 있다. 예전에는 홈페이지를 제작하려면 수백만 원이 들었지만, 지금은 클릭 몇 번으로 무료 블로그를 만들 수 있다.
게임 제작도 예외가 아니다. 예전에는 게임에서 2명이 만났을 때 총격전이 벌어지도록 하려면 하나하나 코딩해야만 했다. 지금은 게임 제작 도구인 ‘유니티’로 ‘둘이 만나면 총격전’이라고 설정만 하면 된다. 지루하고 고된 노동이 버튼 몇 번으로 대체된 것이다.
인공지능의 코딩 실력이 본궤도에 오르면 인간이 도저히 따라잡을 수 없을 정도로 짧은 시간에 앞서 나갈 것이다. 아이를 프로그래머로 키워도, 인공지능 위에 서지 못한다면 그 채용이 오래 가리라 누구도 보장하지 못한다.
이쯤 되면 당신의 머릿속에선 한 가지 의문이 고개를 든다. 프로그래머라는 일자리가 인공지능으로 대체될 수 있음에도, 왜 영국이나 핀란드는 코딩을 의무교육으로 시행하는 걸까? 그들은 전 국민을 프로그래머로 키우려는 게 아니다. 컴퓨터가 문제를 빠르고 정확하게 해결하듯, 논리적이고 효율적으로 문제를 해결하는 컴퓨팅 사고력을 키워주기 위해서다.
영국에서는 초등학교 1학년 때부터 매주 1시간씩 코딩을 차근차근 배운다. 절대 한꺼번에 몰아쳐서 배우질 않는다. 2박 3일 59만 원짜리 캠프 따위는 발붙일 데가 없다.
영국은 산업혁명이 일어난 나라다. 영국은 새로운 산업을 선도하는 게 얼마나 큰 힘인지 안다. 영국은 가난한 변방에 불과했지만, 산업혁명 덕분에 세계를 영국의 연방으로 만들었다. 칭기즈칸의 몽골 제국보다 유일하게 더 넓은 제국을 건설했다. 산업혁명의 황홀한 맛을 아는 영국은 컴퓨팅 사고력을 국가 발전의 원동력으로 여긴다.
1차 산업혁명은 증기다. 증기기관이 어떻게 탄생할 수 있었겠는가? 물을 가열하면 증기가 되는 과학을 이해하고, 열에너지를 운동에너지로 바꿀 수 있을 정도로 수학이 발전한 덕분이다.
2차 산업혁명은 전기다. 어떻게 전기를 이용할 수 있었을까? 수학과 과학이 한층 더 발전한 덕분에 보이지 않는 전기를 이용할 수 있었다.
3차 산업혁명은 정보다. 전기를 에너지가 아닌 정보로 이용할 정도로 과학과 수학이 정교하게 발전한 덕분이다.
인간을 둘러싼 자연을 이해하는 과학과 수학이 정교하게 발전할수록 인간의 사고력은 진화했다. 사고력의 업그레이드는 곧 국가 경쟁력의 업그레이드다. 사고력을 키우는 과학(Science), 기술(Technology), 공학(Engineering), 수학(Mathematics)을 뜻하는 STEM 교육이 주목받는 이유다.
인간은 점차 기계에 둘러싸이고 있다. 겉으로는 기계로만 보이지만, 실상 그 기계를 움직이는 것은 소프트웨어다. 스마트폰이 일정을 알려주고, 내비게이션이 길을 가르쳐 주지만 그것들을 작동하는 것은 소프트웨어다. 현실의 과학인 물리, 화학, 지구과학, 생물과 달리, 소프트웨어의 작동 원리를 다룬 과학을 컴퓨터 과학이라 한다. 컴퓨터 과학을 이해하고 활용하는 능력이 컴퓨팅 사고다.
컴퓨팅 사고는 미래를 살아갈 아이에게 큰 힘이 된다. 그러기에 많은 나라에서 사고력을 키우는 도구로 수학과 과학에 코딩을 추가했다. 코딩은 개인의 사고력과 국가의 경쟁력을 모두 높인다. 이것이 영국을 비롯한 선진국이 코딩을 의무교육으로 채택한 이유다.
이쯤에서 문득 궁금할 것이다.
‘그래서 컴퓨팅 사고가 뭐야?’
‘논리적이고 효율적인 문제 해결 능력이라지만, 도무지 감이 잡히지 않아!’
컴퓨팅 사고의 정의는 전문가마다 다르다. 그중 간단한 정의를 소개한다. 컴퓨팅 사고는 4단계로 나눌 수 있다. 문제 분해, 패턴 인식, 추출, 자동화다. 예제로 보다 쉽게 이해할 수 있다.
[예제] 납작한 쇠로 만든 다양한 도형이 있다. 학습용으로 쓰려는데, 모서리가 날카로워 모서리 보호대를 끼워야 한다. 몇 개의 모서리 보호대를 사야 할까? 단, 모든 도형의 모서리 길이는 같다.
1단계, 문제 분해다. 여러 가지 도형이 섞여 있으니, 같은 모양의 도형끼리 묶는다. 삼각형, 사각형 오각형끼리 묶는다. 하나의 복잡한 문제가, 3개의 단순한 문제로 분해된다. 아래 그림과 같다.
2단계, 패턴 인식이다. 삼각형의 모서리는 3개이고, 사각형의 모서리는 4개, 오각형의 모서리는 5개임을 알 수 있다. 즉, 도형마다 각의 수와 모서리의 수는 같다는 패턴을 발견한다. 또한, 삼각형의 개수는 3개, 사각형의 개수는 4개, 오각형의 개수는 5개라는 것도 알 수 있다.
3단계, 추출(Abstraction)이다. 핵심 정보만 간추린다. 삼각형에는 여러 정보가 담겨 있다. 꼭짓점 3개, 모서리 3개, 넓이=(밑변 x 높이 x ½) 등이다. 문제에서 필요한 정보는 모서리 개수다. 모서리가 3개라는 정보만 추출한다. 마찬가지로 사각형에서는 모서리가 4개, 오각형에서는 모서리가 5개라는 정보만 추출한다.
4단계, 자동화다. 패턴을 바탕으로 단 몇 줄짜리 프로그램을 짤 수 있다. 일단 프로그램만 만들면 삼각형에서 오각형까지 뿐만 아니라, 100 각형까지 있어도 순식간에 필요한 보호대 개수를 알아낼 수 있다.
컴퓨팅 사고로 반복 작업을 효율적으로 처리할 수 있다. 앞서 프로그래밍과 코딩의 개념을 설명하기 위해 카페에서의 절차서를 예로 들었다. ‘메뉴 → HOT or ICED → 컵 종류 → 사이즈’의 절차서는 스타벅스의 앱 주문 ‘사이렌 오더’의 순서다. 매번 똑같이 반복되는 주문 접수를 컴퓨팅 사고로 대체한 예다. 달콤커피의 로봇카페 ‘비트’는 주문 접수뿐만 아니라 제조까지도 대체했다. 주문하면 메뉴에 따른 제조과정이 같다. ‘컵 선택 → 얼음 담기 → 물 담기 → 에스프레소 원액 담기’다. 이를 로봇팔로 대체했다. 반복되는 인간의 노동을 인공지능 로봇으로 대체한 덕분에 똑같은 맛의 커피를 더 저렴한 가격에 즐길 수 있게 됐다.
코딩이 미래의 인재에게만 유익한 건 아니다. 어떤 일이든 논리적이고 효율적으로 해결할 수 있기에 미래가 아닌 현재도, 아이가 아닌 남녀노소 누구에게도 유용하다.
나에게도 코딩은 유용했다. 나는 프로그래머가 아니다. 단지 초등학교 2학년 때 컴퓨터 학원에서 코딩을 몇 개월 배웠을 뿐이다. 코딩 자체로도 작은 도움이 되었다. 업무 효율을 높일 수 있었다. 엑셀에서의 반복 작업은 일일이 손으로 처리하지 않았다. VBA(Visual Basic Application; 마이크로소프트 오피스용 프로그래밍 언어)를 활용해, 반복 작업을 하나의 단축키로 대체했다. 업무 지식도 확장할 수 있었다. 외부 업체에서 바닷물의 수질을 계산하는 엑셀 파일을 제공했는데, 계산 공식이 VBA로 되어 있었다. 업체의 VBA를 해석해 업체별로 다른 계산 노하우를 엿볼 수 있었다. 코딩에 관심이 없는 동료는 그런 노하우를 들여다볼 엄두도 내지 못했다.
나에게도 큰 도움이 된 것은 코딩 자체가 아니라 컴퓨팅 사고다. 나는 마음과 감정의 원리에 관심이 많았다. ‘입력 → 판단 → 출력’의 구조로 논리적으로 문제를 해결하는 컴퓨팅 사고가 도움이 된 덕분에, 인지 치료에서 제시하는 감정의 원리를 쉽게 이해할 수 있었다. 컴퓨팅 사고처럼, 인지 치료도 감정을 ‘사건 → 신념에 따른 판단 → 감정적 결과’로 설명했기 때문이다. 감정을 구조적으로 이해한 덕분에, 직장인의 감정을 과학적으로 관리하는 법을 글로 정리할 수 있었다. 글이 출판사에 채택되어 책으로 나왔다. 컴퓨팅 사고 덕분에, 평범한 직장인의 성과가 회사 담장을 넘을 수 있었다.
이 글이 책으로 나온 것 역시, 컴퓨팅 사고의 덕이다. 불확실한 미래 교육에서 아이를 키우는 길을 찾고자 했다. 책의 근간은 이렇게 태어났다.
1단계, 문제 분해다. 미래 교육의 방향을 잡는 큰 그림과 특정 교육의 상세 지침을 담은 작은 그림으로 분리했다. 이 책은 큰 그림을 그리는 데 초점을 맞췄다.
2단계, 패턴 인식이다. 전문 기관의 목소리에서 두 가지 패턴을 발견했다. 첫째는 모두 역량을 주장한다는 점이다. 둘째는 역량이 사고력, 자립력, 연합력으로 수렴한다는 것이다.
3단계, 추출이다. 전문 기관의 목소리에는 역량 외에도 지식, 윤리, 태도, 가치를 포함한 경우도 있었다. 역량만 추출했다.
4단계, 자동화다. 사고력, 자립력, 연합력의 패턴으로 우리나라 교육부의 6개 역량도 분석했다. 이 과정은 일반인에게는 생소한 어휘가 많아 부록으로 담았다. (요청하시는 독자가 있다면 부록도 연재하겠습니다.)
‘프로그래머도 인공지능으로 대체될 수도 있는데, 코딩을 굳이 가르칠 필요가 있을까?’ 여기까지 읽은 독자라면 이런 생각은 하지 않을 것이다. 누구도 코딩을 가볍게 흘려 넘기진 못할 것이다. 코딩은 수학과 과학처럼 사고력을 키워주는 훌륭한 도구이니까.
그렇다고 코딩을 너무 무겁게 받아들일 필요는 없다. 미래가 원하는 건 전 과목에서 우수한 성적을 내는 시험형 인재가 아니라, 일부 과목에서 성적 이상의 잠재력을 발휘하는 유니크한 인재다. 전 과목에서 좋은 시험 성적을 얻는 것은 가능해도, 전 과목에서 특출한 성과를 내는 것은 불가능하다. 어떤 수학자나 과학자도 수학이나 과학의 전 분야를 잘하는 건 아니다. 자신만의 특기 분야가 있다. 코딩도 마찬가지다. 그저 사고력을 높이는 도구 중 하나다. 수학과 과학의 물리, 화학, 생물, 지구과학 모두 사고력을 키우는 도구다. 코딩을 잘하지 못하면, 아이가 흥미를 보이는 다른 사고력 향상 도구에 집중하면 된다. 물리에 물리고 역학에 역함을 토로하는 나도 화학에 주력해서 공대생으로 또 설계 엔지니어로 살았다.
코딩은 조기 교육이 필요 없다. 코딩은 단순히 프로그램을 만드는 기술이 아닌, 컴퓨팅 사고력을 키우는 도구다. 단순한 기술이 아니라 생각의 내공을 키우는 교육이다. 단기간의 외부 주도가 아닌, 장기간의 자기 주도 학습이다. 굳이 코딩 학원에 보내지 않더라도, 의무교육을 받기 수개월 전에 Code.org, 스크래치(scratch.mit.edu), 엔트리(playentry.org), SW중심사회(www.software.kr), EBS소프트웨어(home.ebs.co.kr/software) 같은 인터넷 사이트에서 무료로 코딩과 컴퓨팅 사고를 배울 수 있다.
코딩을 너무 무겁지도 가볍지도 않게 대하는 방법은 씨앗 심기다. 아이가 코딩에 흥미를 보이지 않는다면 공교육보다 너무 일찍 배우거나 심화 내용을 익히라고 강요할 필요는 없다. 흥미를 보인다면 공교육보다 일찍 집에서건 학원에서건 배워도 좋다. 학원을 다니더라도 흥미를 잃는다면 계속 다니지 않아도 좋다. 중요한 것은 컴퓨팅 사고의 기본 원리와 흥미라는 씨앗이다. 맛보기 정도의 내용과 흥미만 남아있다면, 아이는 훗날 필요할 때 스스로 학습할 것이다. 나도 코딩을 많이 배우진 못해도 기초 지식과 흥미만은 남아 있었기에, 취직 후 엑셀 VBA 책을 구입해 매일 저녁 30분씩 스스로 학습했고 나름의 성과를 낼 수 있었다.
이 책을 통해 당신에게 주고 싶은 것 역시 씨앗이다. 당신은 왜 코딩을 배워야 하는지와 코딩의 기본 원리를 알았기에, 훗날 거부감 없이 코딩 학습 사이트에 접속하고 코딩 책을 구입해 아이와 함께 부담 없이 코딩을 시작할 수 있을 것이다. 코딩을 너무 가볍게 외면하지도, 너무 무겁게 두려워하지도 않을 것이다.
글로는 전하기 힘들었던 이야기를 함께 나누고자 합니다.