m2mbiz - man(인간)과 machine(머신)을 연결하는 비즈니스
미래에 인기 직업으로 예상되는 것 중에는 컴퓨터 프로그래머가 있는데, 이것은 소프트웨어를 개발하는 것으로 코딩(Coding)이라 부르고 코딩을 하는 프로그래머를 코더(Coder)라 부른다. 그래서 우리 아이들이 보다 성공적인 미래를 준비하도록 만들기 위해 정부 주도로 초등학교에서부터 코딩 교육을 하겠다고 선언했다. 그러자 초등학교 입장에서는 지금의 교사들은 누구도 코딩을 가르칠 실격이나 준비가 되어 있기 않기에 큰 혼란을 겪고 있다. 이런 와중에 사설 학원들은 매우 발 빠른 행보를 이어가고 있는데, 코딩에 대한 사교육 시장을 넓히고 있다. 학부모 입장에서는 미래에는 코딩이 중요한 기술이므로 자녀들에게 가르쳐야 할 것 같고, 학교에서는 아직 준비되어 있지 않고, 그래서 차선책으로 사교육 코딩 학원에 비싼 수업료를 지불하면서 보내어 조기교육을 하고 있는 실정이다.
그런데 정부나 학교, 학부모들이 놓치고 있는 게 있는데, 코딩 교육이 무엇이고 그것이 우리 아이들의 장래를 위해 왜, 어떻게 필요한지에 대해 전혀 무지한 것이다. 마치 영어를 배워두면 좋을 거라는 생각처럼, 코딩도 배워두면 좋지 않을까라고 믿는 것이다.
예를 들어, 영어는 언어이기에 아이들의 적성이나 자질(이과와 문과로 나누는)에 무관하게 모두에게 필요한 것이지만, 코딩을 배우는 것은 다른 차원에서 접근해야 한다.
코딩을 하려면 반드시 알아야 하는 게 있는데, 바로 컴퓨터적 사고(ComputationalThinking)로 이것은 해결해야 할 문제를 구조화하고, 논리적이며 순차적으로 해결할 수 있도록 커다란 문제를 작게 쪼개어 분석하고 해체하고, 지금의 문제가 과거에 해결된 문제들과 어떻게 연결되거나 연관이 있는지 패턴을 이해하고, 문제 해결과 전혀 무관한 절차나 과정은 무시하거나 제외하고, 문제를 빠르고 효과적으로 해결할 수 있는 방법이나 공식을 개발하거나 정의하는 알고리즘을 개발하는 일련의 체계화되고 구조화되며 순차적이며 몇 개의 대안 중에서 하나를 선택하는 시나리오(선택적인 경우의 수에 따른 서로 다른 경로들을 모은 것)적 사고방식을 알아야 한다. 그런 후에 이것을 기계인 컴퓨터가 이해하고 그대로 실행할 수 있는 언어로 만드는 것을 코딩이라 한다.
즉 코딩을 하려면 컴퓨터가 이해하는 언어(자바, 자바스크립트, C, PHP, CSS, SQL, JQuerry, 파이썬 등이 있으며 프로그래밍 언어라고 부름)를 다룰 줄 알아야 하고, 이것으로 프로세스나 알고리즘에 따라 프로그래밍을 하는 것이다. 따라서 코딩을 잘 하려면 단순히 컴퓨터 언어만 배운다고 해결되지 않고, 수식화(수학적 능력이 필요), 구조화(논리적 사고력이 필요), 패턴화, 알고리즘 개발(수학적 논리적 사고력이 필요), 시나리오 개발, 최적화 능력, 문제 해결력, 창의력, 협업능력 등 다양한 능력을 겸비해야 한다.
그런데 대한민국에서 유행되는 코딩 교육은 컴퓨터 언어만 가르치면 아이들이 자유자재로 코딩할 수 있을 거라는 심각한 오류와 환상에 빠져 있다. 이것은 마치 누구라도 영어 단어와 문법만 알면 영어로 된 시와 소설을 쓸 수 있다고 말하는 것과 같다.
그러면 컴퓨터적 사고란 무엇일까?
이것은 알고리즘적 사고를 의미하기도 한다.
예를 들어, 새로운 “메모 작성용” 모바일용 앱을 개발하려고 한다.
그렇다면 무엇부터 시작해야 할까?
1.코딩?
2.디자인?
3.아니면 다른 무엇?
코딩을 하려면 코딩을 할 목적과 목표, 대상이 준비되어 있어야 한다. 코딩은 이런 목적과 목표를 이루는 하나의 수단일 뿐이다.
두 번째인 디자인도 코딩과 마찬가지로 디자인할 목표나 대상이나 준비되어야 그것을 디자인으로구현할 수 있다.
따라서 코딩과 디자인은 최우선순위가 아니다.
컴퓨터적 사고에서 가장 먼저 해야 할 것은 메모 작성용 앱 개발을 하기 위한 목적, 목표가 무엇이고 무엇을 만들어 사용자에게 무슨 유익과 가치를 줄 것인지 정하는 것이다.
새로운 비즈니스 모델을 만드는 시작점은 허황된 상상의 세계에서 시작하는게 아니고, 현실 세계에서 시작하는 것이다.
현실 세계에 있는 사람들이 어떤 불편이나 문제를 갖고 있는지 관찰하고 분석하여 그 문제와 불편을 어떻게 해소시켜 줄 것인지 자신만의 방법과 차별성, 그리고 경쟁사가 줄 수 없응 부가가치를 발굴하여 현실에서 개발하고 구현하여 사용자에게 제공하는 것이다.
컴퓨터적 사고를 어떻게 하고 무엇이 필요한지 정리하면 다음과 같다.
1.현실 세계에 있는 사람들의 문제와 불편을 분석하고 발견
2.문제와 불편을 다양한 방향과 관점으로 정의하고 구조화
3.논리적이며 순차적으로 해결할 수 있도록 커다란 문제를 작게 쪼개어 분석하고 해체
4.지금의 문제가 과거에 해결된 문제들과 어떻게 연결되거나 연관이 있는지 패턴을 이해
5.문제 해결과 전혀 무관한 절차나 과정은 무시하거나 제외하고 접근
6.문제를 빠르고 효과적으로 해결할 수 있는 방법이나 공식을 개발하거나 정의하는 알고리즘을 개발
7.일련의 체계화되고 구조화되며 순차적이며 몇 개의 대안 중에서 하나를 선택하는 시나리오(선택적인 경우의 수에 따른 서로 다른 경로들을 모은 것)적 사고방식으로 접근
8.그런 후에 이것을 기계인 컴퓨터가 이해하고 그대로 실행할 수 있는 언어로 만드는 코딩 작업을 하려면 컴퓨터가 이해하는 언어(자바, 자바스크립트, C, PHP, CSS, SQL, JQuerry, 파이썬 등이 있으며 프로그래밍 언어라고 부름)
9. 코딩을 잘 하려면 단순히 컴퓨터 언어만 배운다고 해결되지 않고, 수식화(수학적 능력이 필요), 구조화(논리적 사고력이 필요), 패턴화, 알고리즘 개발(수학적 논리적 사고력이 필요), 시나리오 개발, 최적화 능력, 문제 해결력, 창의력, 협업능력 등 다양한 능력을 겸비해야 한다.
필자는 1980년대 초에 공학용 프로그래밍 언어인 포트란(FORTRAN)을 이용하여 기계 설계 및 구조해석용 프로그램을 개발하여 석사학위를 받았다. 그리고 현대자동차와 GE에서 13년 동안 구조해석용 프로그램을 가지고 최적화 설계와 최첨단 기술이 적용된 제품 개발을 수행했다. 만약에 기계 설계와 공학에 대한 개념과 이해 없이 포트란 언어만 배웠다면 불가능한 일이다.
지금도 주변에는 컴퓨터 전문가라 말하는 수많은 사람들이 조기 코딩 교육의 필요성을 주장하고, 보통 사람들은 그들의 말에 현혹되어 동조하기도 하지만 무엇이 가능하고 무엇이 불가능한 지에 대한 정확한 이해와 판단이 필요하다.
그래야만 내 아이들을 조기 코딩 교육 열풍의 함정에서 구할 수 있고, 가정은 불필요한 사교육 지출로 인한 빈곤에서 벗어날 수 있다.