코딩 실력보다 컴퓨터적 사고 능력이 더 중요하다

‌     코딩보다 알고리즘적 사고를 먼저 키워주어라

미래에 인기 직업으로 예상되는 것 중에는 컴퓨터 프로그래머가 있는데, 이것은 소프트웨어를 개발하는 것으로 코딩(Coding)이라 부르고 코딩을 하는 프로그래머를 코더(Coder)라 부른다. 그래서 우리 아이들이 보다 성공적인 미래를 준비하도록 만들기 위해 정부 주도로 초등학교에서부터 코딩 교육을 하겠다고 선언했다. 그러자 초등학교 입장에서는 지금의 교사들은 누구도 코딩을 가르칠 실격이나 준비가 되어 있기 않기에 큰 혼란을 겪고 있다. 이런 와중에 사설 학원들은 매우 발 빠른 행보를 이어가고 있는데, 코딩에 대한 사교육 시장을 넓히고 있다. 학부모 입장에서는 미래에는 코딩이 중요한 기술이므로 자녀들에게 가르쳐야 할 것 같고, 학교에서는 아직 준비되어 있지 않고, 그래서 차선책으로 사교육 코딩 학원에 비싼 수업료를 지불하면서 보내어 조기교육을 하고 있는 실정이다.

그런데 정부나 학교, 학부모들이 놓치고 있는 게 있는데, 코딩 교육이 무엇이고 그것이 우리 아이들의 장래를 위해 왜, 어떻게 필요한지에 대해 전혀 무지한 것이다. 마치 영어를 배워두면 좋을 거라는 생각처럼, 코딩도 배워두면 좋지 않을까라고 믿는 것이다.

예를 들어, 영어는 언어이기에 아이들의 적성이나 자질(이과와 문과로 나누는)에 무관하게 모두에게 필요한 것이지만, 코딩을 배우는 것은 다른 차원에서 접근해야 한다.

코딩을 하려면 반드시 알아야 하는 게 있는데, 바로 컴퓨터적 사고(ComputationalThinking)로 이것은 해결해야 할 문제를 구조화하고, 논리적이며 순차적으로 해결할 수 있도록 커다란 문제를 작게 쪼개어 분석하고 해체하고, 지금의 문제가 과거에 해결된 문제들과 어떻게 연결되거나 연관이 있는지 패턴을 이해하고, 문제 해결과 전혀 무관한 절차나 과정은 무시하거나 제외하고, 문제를 빠르고 효과적으로 해결할 수 있는 방법이나 공식을 개발하거나 정의하는 알고리즘을 개발하는 일련의 체계화되고 구조화되며 순차적이며 몇 개의 대안 중에서 하나를 선택하는 시나리오(선택적인 경우의 수에 따른 서로 다른 경로들을 모은 것)적 사고방식을 알아야 한다. 그런 후에 이것을 기계인 컴퓨터가 이해하고 그대로 실행할 수 있는 언어로 만드는 것을 코딩이라 한다.

즉 코딩을 하려면 컴퓨터가 이해하는 언어(자바, 자바스크립트, C, PHP, CSS, SQL, JQuerry, 파이썬 등이 있으며 프로그래밍 언어라고 부름)를 다룰 줄 알아야 하고, 이것으로 프로세스나 알고리즘에 따라 프로그래밍을 하는 것이다. 따라서 코딩을 잘 하려면 단순히 컴퓨터 언어만 배운다고 해결되지 않고, 수식화(수학적 능력이 필요), 구조화(논리적 사고력이 필요), 패턴화, 알고리즘 개발(수학적 논리적 사고력이 필요), 시나리오 개발, 최적화 능력, 문제 해결력, 창의력, 협업능력 등 다양한 능력을 겸비해야 한다.

그런데 대한민국에서 유행되는 코딩 교육은 컴퓨터 언어만 가르치면 아이들이 자유자재로 코딩할 수 있을 거라는 심각한 오류와 환상에 빠져 있다. 이것은 마치 누구라도 영어 단어와 문법만 알면 영어로 된 시와 소설을 쓸 수 있다고 말하는 것과 같다.

그러면 컴퓨터적 사고란 무엇일까?

이것은 알고리즘(Algorithm)적 사고를 의미하기도 한다.

예를 들어, 새로운 “메모 작성용” 모바일용 앱을 개발하는 경우를 생각해보자.

그렇다면 무엇부터 시작해야 할까?

‌1.코딩?
2.디자인?
3.아니면 다른 무엇?

코딩을 하려면 코딩을 할 목적과 목표, 대상이 준비되어 있어야 한다. 여기서 코딩은 이런 목적과 목표를 이루는 하나의 수단일 뿐이다. 따라서 무조건 코딩부터 시작하는건 불가능하다. 무엇을 어떻게 만들지 결정돼야 그것을 실현하기 위한 코딩을 시작할 수 있다.

두 번째인 디자인도 코딩과 마찬가지로 디자인할 목표나 대상이나 준비되어야 그것을 디자인으로구현할 수 있다.
따라서 코딩과 디자인은 최우선순위가 아니다.  

컴퓨터적 사고에서 가장 먼저 해야 할 것은 메모 작성용 앱 개발을 하기 위한 목적, 목표가 무엇이고 무엇을 만들어 최종결과물로 사용자에게 무슨 유익과 가치를 줄 것인지 정하는 것이다.

새로운 비즈니스 모델을 만드는 시작점은 허황된 상상의 세계에서 시작하는게 아니고, 현실 세계에서 시작하는 것이다.

현실 세계에 있는 사람들이 어떤 불편이나 문제를 갖고 있는지 관찰하고 분석하여 그 문제와 불편을 어떻게 해소시켜 줄 것인지 자신만의 방법과 차별성, 그리고 경쟁사가 줄 수 없는 부가가치를 발굴하여 현실에서 개발하고 구현하여 사용자에게 제공하는 것이다.

컴퓨터적 사고를 어떻게 하고 무엇이 필요한지 정리하면 다음과 같다.

1.현실 세계에 있는 사람들의 문제와 불편을 분석하고 발견
2.문제와 불편을 다양한 방향과 관점으로 정의하고 구조화
3.논리적이며 순차적으로 해결할 수 있도록 커다란 문제를 작게 쪼개어 분석하고 해체
4.지금의 문제가 과거에 해결된 문제들과 어떻게 연결되거나 연관이 있는지 패턴을 이해
5.문제 해결과 전혀 무관한 절차나 과정은 무시하거나 제외하고 접근
6.문제를 빠르고 효과적으로 해결할 수 있는 방법이나 공식을 개발하거나 정의하는 알고리즘을 개발
7.일련의 체계화되고 구조화되며 순차적이며 몇 개의 대안 중에서 하나를 선택하는 시나리오(선택적인 경우의 수에 따른 서로 다른 경로들을 모은 것)적 사고방식으로 접근
8.그런 후에 이것을 기계인 컴퓨터가 이해하고 그대로 실행할 수 있는 언어로 만드는 코딩 작업을 하려면 컴퓨터가 이해하는 언어(자바, 자바스크립트, C, PHP, CSS, SQL, JQuerry, 파이썬   등이 있으며 프로그래밍 언어라고 부름)
9. 코딩을 잘 하려면 단순히 컴퓨터 언어만 배운다고 해결되지 않고, 수식화(수학적 능력이 필요), 구조화(논리적 사고력이 필요), 패턴화, 알고리즘 개발(수학적 논리적 사고력이 필요), 시나리오 개발, 최적화 능력, 문제 해결력, 창의력, 협업능력 등 다양한 능력을 겸비해야 한다.

필자는 1980년대 초에 공학용 프로그래밍 언어인 포트란(FORTRAN)을 이용하여 기계 설계 및 구조해석용 프로그램을 개발하여 석사학위를 받았다. 그리고 현대자동차와 GE에서 13년 동안 구조해석용 프로그램을 가지고 최적화 설계와 최첨단 기술이 적용된 제품 개발을 수행했다. 만약에 기계 설계와 공학에 대한 개념과 이해 없이 포트란 언어만 배웠다면 불가능한 일이다.

지금도 주변에는 컴퓨터 전문가라 말하는 수많은 사람들이 조기 코딩 교육의 필요성을 주장하고, 보통 사람들은 그들의 말에 현혹되어 동조하기도 하지만 무엇이 가능하고 무엇이 불가능한 지에 대한 정확한 이해와 판단이 필요하다.

코딩을 가르치는 학원에서 아이나 학생들에게 스크래치나 엔트리로 코딩을 가르치는데, 이것은 컴퓨터적 사고, 즉 알고리즘 사고를 가르치는게 아니다. 알고리즘적 사고를 할 수 없는 사람이 코딩만 하는 것은 단순노동자로 가는 지름길이다.
컴퓨터로 개발하고자 하는 기능이나 서비스의 목적과 목표, 최종결과물과 고객가치를 설계할 수 있는 능력이 없다면, 그래서 오직 할 수 있는 것이 코딩뿐이라면 그건 정신노동자에 지나지 않는 것이고, 인공지능(AI)과 딥러닝(Deep Learning)이 세상을 지배하는 미래에는 코딩에 관한 일자리로 가장 먼저 사라질 것이다.
이런 세상의 빠른 흐름과 코딩의 실상과 허상을 구분할 줄 알아야 삽질을 막을 수 있고, 우리 자녀들과 학생들의 미래를 망치지 않을 것이다.  

부모와 교사가 이런 안목과 통찰력이 있어야 내 아이들을 조기 코딩 교육 열풍의 함정에서 구할 수 있고, 가정은 불필요한 사교육 지출로 인한 빈곤에서 벗어날 수 있다.


‌생존하려면 머신(Machine)과 친구가 돼라

     ‌인공지능을 미래의 친구로 만들어라!

머신(Machine)은 컴퓨터, 로봇, 인공지능, 애플리케이션, 소프트웨어를 통칭하는 용어다. ICT 에 포함된 모든 기술과 도구를 의미하기도 한다.

지금은 사람이 세상을 지배하고 주도하지만, 미래는 머신의 지배력과 영향력이 커지고 결국은 머신이 세상을 지배하는 세상이 될 거라고 미래학자와 전문가들은 말한다. 지금도 점점 머신이 사람의 일자리를 대신하고 있으며, 직업을 갖기가 어려운 세상으로 간다고 우려의 목소리를 높이고 있다. 이런 트렌드는 누구도 멈추게 하거나 거스를 수 없는 큰 흐름이고 사실이다.

그렇다면 우리 사람들은 머신의 활동과 지배력이 높아지는 세상에서 어떻게 생존해야 할까?

역사를 살펴보면 새로운 기술이나 산업이 등장할 때마다 사람들은 그것을 무시하거나 외면했다. 기계 파괴 운동으로 불리는 러다이트 운동처럼 사람들이 자신들의 생활이나 직업을 위험에 빠뜨리는 새로 등장한 기계들을 부수었지만, 이를 막지 못했다. 기술 발전은 누구도 막거나 외면할 수 있다. 지금도 이런 생각과 자세를 가진 사람들이 우리 주변에 많은 것도 사실이다. 머신이 지배하는 세상이 정말로 오겠냐고 의심의 눈초리를 보내는 사람도 마음속에는 그런 세상이 오는 것을 당연하게 생각하고, 동시에 그런 세상이 두렵기 때문에 그렇게 생각하고 행동하는 것이다.

머신이 세상을 완전히 지배하는 세상은 예상보다 더 오래 걸리 수도 있다. 하지만 머신이 세상에 존재하는 직업이나 일의 상당 부분을 대체하는 것은 분명하다. 어느 순간 사람들이 상상하지 못했던 기능과 능력을 가진 머신들이 별안간 사람들 곁으로 나타나서 상당한 일자리를 대체할 것이다.

이런 세상에서 우리는 무엇을 어떻게 하고 일자리를 유지할 수 있을까?
 
개인의 경쟁력을 어떻게 유지하거나 지속시킬 것인가?
 
이런 시대를 대비하여 무슨 준비를 해야 할까? 


이런 질문에 대한 답을 각자 생각하고 찾아야 한다.