왜 갑자기 코딩 교육 인가 ? 인공지능 , 로봇 혁명 , 시멘 틱 웹 , 코딩 , … 이 모든 것 들 은 서로 유사 성 과 연결 성 을 지니 고 있 다 . 일단 은 김석준 이 슬로우 뉴스 에 쓴 코딩 에 대한 다음 의 칼럼 을 읽 어 보 자 . ( http : / / slownews . kr / 43188 ) 코딩 교육 , 무엇 을 가르치 고 무엇 을 배울 것 인가 김석준 코딩 교육 이 최근 열풍 처럼 번지 고 있 다 . 많 은 사람 이 코딩 교육 에 대하 여 이야기 하 는데 이걸 좀 생각 해 보 고 싶 다 . 보통 아래 와 같 은 이야기 들 을 많이 한다 . • 논리 력 , 사고력 , 문제 해 결력 을 향상 해야 한다 . • 컴퓨팅 적 사고 ( Computational Thinking ) 를 배우 는 것 이 중요 하 다 . • 창의력 을 중심 으로 한 교육 이 되 어야 한다 . 이런 이야기 에 “ 모두 맞 았 어요 . ” 같 은 뻔 한 소리 는 하 고 싶 지 않 고 오히려 모두 틀렸 다고 생각 한다 . 이유 는 한 가지 다 . 이미 이전 에 도 코딩 교육 은 있 었 다 . 외국 의 케이스 와 는 매우 다르 지만 , 우리 나라 같 은 경우 에 는 컴퓨터 학원 이 엄청나 게 유행 을 탔 던 적 이 있 다 . 15 년 정도 전 까지 도 우리 나라 에 는 컴퓨터 를 배우 러 학원 가 는 학생 들 이 많 았 다 . 가 서 뭘 배웠 느냐고 ? 주로 GW 베이직 ( GW - Basic ) 을 배웠 다 . 코딩 교육 새롭 지 않 다 물론 현대 의 개발 언어 와 는 하늘 과 땅 차이 가 난다고 해도 과언 이 아니 지만 , 어찌 됐 든 그 당시 에 도 GW 베이직 으로 상당히 많 은 것 들 을 만들 수 있 었 다 . 주로 구구단 으로 시작 했 고 , 별표 ( *) 로 피라미드 나 마름 모꼴 을 만드 는 것 과 같 은 간단 한 알고리즘 구현 을 목표 로 공부 했었 다 . 그렇지만 나 는 빌게이츠 가 될 수 없 었 다 . 좀 더 자세 하 게 이야기 해 보 고 싶 다 . 나 는 베이직 으로 는 단순 별표 아트 에서 넘어가 원 을 그리 거나 상자 등 간단 한 그림 을 코딩 으로 구현 하 는 데 까지 해 보 았 다 . 당시 다니 던 학원 에서 는 GW 베이직 만 가르쳤 고 , 다른 학원 으로 옮겨서 는 C 를 배웠 다 . ( C ++ 이 아직 대세 가 되 기 전 시절 로 기억 한다 . ) 어린 시절 에 는 사실 왜 해야 되 는지 도 모르 면서 그냥 하 라니까 배웠 던 것 같 다 . 데이터베이스 를 만드 는 ( !?) 수업 을 들 었 던 것 같 은데 , 내 가 할 수 있 었 던 건 그저 선생 님 이 주 신 코드 를 열심히 베껴 쓰 는 것 뿐 이 었 다 . 어쨌든 꽤 열심히 했었 고 , 재밌 었 지만 나 는 역시 빌 게이츠 가 될 순 없 었 다 . 뭘 만들 어야 겠다는 생각 도 못 했 지만 , 그걸 도와 줄 만 한 사람 도 없 었 다 . 물론 게임 을 만들 고 싶 어 하 긴 했 지만 , 딱히 그걸 코딩 으로 시작 할 엄두 도 안 났 다 . 대신 RPG 쯔 꾸 르 게임 제작 툴 로 자작 게임 을 만들 곤 했 다 . 나 는 GW 베이직 을 통해서 논리 력 이나 창의 력 같 은 걸 배웠 다고 생각 하 진 않 는다 . ( 툴 을 사용 하 긴 했 지만 ) 게임 을 만들 었 던 것 은 그냥 내 가 하 고 싶 은 것 이 었 고 , 투자 할 만 한 시간 과 열정 이 있 었 기 때문 이 다 . 코딩 을 배웠 다고 해서 없 던 창의력 이 생겨나 지 도 않 았 고 , 컴퓨터 적 인 생각 ? 그런 건 지금 이나 그런가 보 다 할 뿐 이 지 , 컴퓨터 의 작동 원리 같 은 걸 초등 학교 2 ~ 3 학년 이 쉽 게 이해 할 리 도 없 었 다 . 코딩 을 배운다고 해서 문제 해결 능력 이 갑자기 생겨나 지 도 않 는다 . 물론 베이직 코드 를 디버깅 하 는 기본 적 인 방법 이 야 알 게 되 었 지만 , 그걸 다른 곳 에 적용 한다는 것 은 또 다른 이야기 였 다 . 코딩 은 왜 배워야 하 는가 ? 회사 를 그만두 고 창업 전선 에 뛰어든 지 4 년 . 여러 곳 에서 발표 할 기회 가 있 을 때 나 는 주로 “ WHY – WHAT – HOW ” 세 가지 만 을 이야기 하 곤 한다 . 가장 많 은 시간 을 쏟 고 중요 하 게 생각 하 는 건 WHY . 발표 자료 분량 을 봐도 WHY 가 약 50 %, WHAT 이 35 %, HOW 는 15 % 정도 를 차지 한다 . 왜 해야 하 는지 이유 가 타당 하 다면 뭘 해야 할지 는 명확 해 지 고 , 어떻게 해야 할지 는 딱히 중요 하 지 도 않 다 . ( 적어도 사업 을 시작 할 때 는 말 이 다 ) 그럼 코딩 은 왜 배워야 하 는가 ? 논리 적 사고 ? 컴 퓨 테 이 셔 널 싱 킹 ? 창의력 ? 이런 건 결코 코딩 을 조금 배운다고 해서 생겨나 지 않 는다 . 물론 도움 이 될 수 도 있 겠 지만 이런 걸 목표 로 코딩 하 자고 이야기 하 는 것 들 은 결코 아니 라고 생각 한다 . 내 생각 엔 이렇 다 . 현대 사회 는 날 이 갈수록 세분 화 하 고 있 고 복잡 해 지 고 있 다 . 작 은 음식점 이 라도 하나 운영 하 려고 하 면 , 기본 적 인 재무제표 읽 는 법 이라든지 세법 , 재고 관리 , 고객 관리 , 마케팅 등등 … 배워야 할 것 이 정말 수도 없이 많 다 . 게다가 각 산업 에서 유사 한 팩터 가 많 다고 해도 , 각자 의 특성 에 따라 그 세부 사항 은 매우 달라지 기 마련 이 다 . 병원 약품 재고 와 장난감 가게 재고 를 어떻게 같이 취급 할 수 있 겠 는가 . 따라서 필요 한 것 을 직접 만들 어 쓰 진 않 더라도 용도 에 맞 게 수정 해서 사용 해야 할 필요 성 이 생기 고 있 는 것 이 다 . 그러 다 보 면 내 가 하 려던 일 이 편리 해 지 는 것 은 물론 이 요 , 해당 서비스 의 판매 도 이루어지 게 되 는 것 이 다 . 소프트웨어 개발 에 도움 을 주 는 소프트웨어 는 무척 이나 많 은데 이러 한 것 들 이 어느 날 갑자기 “ 우리 이런 걸 만 듭 시 다 ! ” 하 고 만들 었 을 것 같 은가 ? 그렇 지 않 다 . 개발자 들 이 업무 를 하 는 도중 에 불편 한 것 들 을 직접 개선 하 는 과정 에서 태어난 부산물 이 다 . 개발자 들 이 느끼 는 불편 함 들 을 개발자 들 이 고쳐 나가 는 게 당연 하 다고 ? 그렇 다면 이러 한 것 은 모든 분야 에 적용 할 수 있 다 . 코딩 교육 에서 뭘 배워야 하 는가 ? 결국 , 우리 가 코딩 을 배워야 하 는 이유 는 코딩 자체 로 얻 을 수 있 는 어떠 한 편익 이나 능력 때문 이 아니 라 무엇 을 만들 때 필요 하 기 때문 이 다 . 재고 관리 시스템 의 이러이러 한 면 이 불편 해서 개선 해야 겠 다 . 그러 니 저러저러 한 것 들 을 배워서 이러이러 한 부분 을 수정 해야 겠 다 . 위 와 같이 생각 하 는 것 이 매우 자연 스러워진다 . 당장 취직 해서 SI 산업 일 꾼 이 되 기 위해 스크래치 ( Scratch ; 아이 들 에게 프로그래밍 경험 을 주 기 위해 MIT 에서 개발 한 교육 용 프로그래밍 언어 ) 나 자바 스크립트 ( Javascript ) 를 배우 는 것 이 절대 아니 라는 뜻 이 다 . 우리 는 무언가 를 만들 기 위해 코딩 을 배워야 한다 . 무언가 를 만드 는 과정 은 절대 간단 하 지 않 다 . 1 . 수단 우선 개발 언어 를 배워야 한다 . 무엇 을 만들 고 싶 어도 , 그것 이 어디 까지 가능 한지 에 대해서 개발 지식 이 없 는 사람 은 가늠 할 수 없 다 . 그러 니 우선 은 컴퓨터 가 어떻 게 작동 하 는지 까지 는 아니 더라도 ( 이러 한 교육 또한 필요 하 지만 , 너무 갈 길 이 멀 다 . 이건 확신 하 건대 욕심 이 다 . ) 무언가 를 만들 기 위해서 는 어떠 한 문법 이 필요 하 다 하 는 것 과 현재 인터넷 이나 컴퓨터 의 대략 적 인 구동 형태 는 알 아야 할 필요 가 있 다 . 예 를 들 어 , 웹 서비스 를 만들 기 위해서 는 http request / response 의 원리 까지 는 몰라도 ‘ 그런 것 이 있 다 ’ 정도 는 알 아야 하 는 것 이 다 . 2 . 목표 두 번 째 로 는 무엇 을 만들 것 인지 배워야 한다 . 개발 워크 샵 을 2 년 정도 진행 해 오 면서 느낀 건데 사람 들 은 자신 이 무엇 을 만들 것 인지 , 무엇 을 만들 고 싶 은지 잘 모른다 . 이상 이 너무 크 거나 반대 로 너무 자신 을 과소평가 하 는 모습 을 많이 보 았 다 . 그러므로 무엇 을 만들 수 있 는지 , 그것 을 만들 기 위해서 뭘 해야 하 는지 를 명확히 할 필요 가 있 다 . 개발 입 문자 에게 적합 한 목표 를 지정 해 주 고 단기간 에 그것 을 만들 면서 성취감 을 느끼 게 해 주 어야 할 필요 가 있 다 . 3 . 과정 세 번 째 로 는 만드 는 과정 을 배워야 한다 . 우리 가 건담 프라모델 을 만들 더라도 보통 3 ~ 4 시간 정도 는 시간 을 쏟 게 된다 . 하물며 간단 한 웹 서비스 를 만든다고 생각 해 보 자 . 숙련자 의 경우 라면 1 주일 이 면 프로 로 타입 정도 는 가뿐히 만들 어 내 겠 지만 , 보통 사람 의 경우 1 주일 이 면 예상 하 건대 로그인 하나 정도 는 만들 수 있 을 것 같 다 . 즉 , 초심자 에게 어떠 한 것 을 만드 는 과정 은 길 고 도 고된 과정 의 연속 이 된다 . 누군가 지정 해 준 ‘ 어떠 한 것 ’ 을 만들 려다가 는 금방 포기 하 기 쉽 고 , 재미 를 느끼 기 도 어렵 다 . 따라서 두 번 째 과정 에서 무엇 을 만들 것 인지 배운 후 , 무엇 을 만들 것 인지 스스로 정하 고 그 과정 을 겪 어야 할 필요 가 있 다 . 당연히 개발 경험 이 부족 하 므로 옆 에서 지켜보 고 도와 줘야 할 사람 이 필요 하 지만 , 모든 걸 가르쳐 줘서 는 안 된다 . 문제 해결 방안 을 제시 하 는 것 이 아니 라 , 계속 된 질문 을 통해 문제 해결 방안 을 찾 을 수 있 도록 유도 하 는 역할 이 필요 하 다 . 3 단계 수업 “ 수단 - 목표 - 과정 ” 의 3 단계 수업 방식 이 내 가 생각 하 는 이상 적 인 코딩 교육 의 모습 이 다 . 선생 님 이 아니 라 멘토 가 필요 하 고 , 수동 적 인 학생 이 아닌 적극 적 으로 자신 이 필요 한 것 을 어필 하 는 멘 티 가 되 어야 한다 . 질문 은 적극 적 으로 하 되 , 스스로 찾아보 는 과정 을 게을리 하 지 않 는 멘 티 가 되 어야 하 고 , 모르 는 것 은 알려 주 되 과도 한 지식 을 불어넣 지 않 고 , 멘 티 의 적극 성 을 떨어뜨리 는 정답 공개 방식 은 멘토 가 가장 피해야 할 과정 일 것 이 다 . 어떻게 배워야 할까 ? 나 는 코딩 을 처음 배울 때 수업 이나 수업 유사 한 것 을 받 아 본 기억 이 별로 없 다 . 물론 혼자 서 모든 걸 해 낸 것 은 결코 아니 고 , 도와 주 는 사람 이 있 었 으나 그야말로 도와 주 는 사람 이 었 지 나 에게 가르쳐 주 는 사람 은 아니 었 다 . 코드 아카데미 ( Codecademy ) 를 통해 기초 를 다졌 고 , Node . js 는 남 이 써 놓 은 코드 를 보 면서 그걸 이해 하 려는 노력 대신 써먹 으려고 노력 했 다 . 아두이노 ( Arduino ) 또한 2 시간 짜리 워크 샵 을 한번 들 은 게 전부 였 고 , CAD 는 지인 에게서 스케치업 ( Sketchup ) 워크 샵 을 2 시간 정도 받 은 후 내 휴대폰 을 그리 는 것 부터 시작 했 다 . 생각 해 보 면 딱히 교육 이 라고 할 만 한 것 을 받 아 본 기억 이 없 다 . 그렇 다고 내 가 천재 라고 할 만 한 것 은 결코 아닌 게 , 회사 근무 당시 컴퓨터 학원 에 다니 며 C ++ 을 배웠 지만 , 열심히 했 음 에 도 나 의 이해 도로는 도통 진도 를 따라가 지 못했 다 . 외려 그 수업 을 이해 하 고 있 는 사람 들 이 더 신기 했 을 정도 였 다 . 반면 실제로 도와 주 는 사람 이 있 는 상태 에서 독학 할 경우 훨씬 진도 가 빨랐 다 . 궁금 한 점 은 구글 ( 정확히 는 스택 오버 플로우 ( Stack Overflow ) ) 에서 검색 을 했 고 대부분 해결 되 었 다 . 코딩 은 쉽 다고 할 순 없 지만 , 그렇 다고 뭔가 깨우친 사람 들 만 하 는 것 도 결코 아니 다 . 주위 의 개발자 들 을 한번 잘 생각 해 봐라 . 그 사람 들 의 지능 이 나 보다 엄청나 게 뛰어나 다고 느끼 는가 ? 아닐 거 라고 본다 . 다 들 뭐 가 잘 안 되 면 구글링 을 한다 . 난 코딩 을 배우 려는 사람 들 에게 나 만 의 원칙 몇 가지 를 알려 주 곤 한다 . 1 . 우리 는 만들 기 위해 배우 는 것 이 지 , 배우 기 위해서 만드 는 것 이 아니 다 . 2 . 하 고 싶 은 프로젝트 를 조금 씩 만들 어 간다는 생각 으로 시작 하 라 . 3 . 이해 하 려고 하 지 말 고 , 써먹 는다는 생각 으로 해 보 라 . 4 . 배우 고자 하 는 언어 가 있 다면 한국 사람 이 쓴 얇 은 책 을 골라라 . 5 . 웹 튜토리얼 을 따라 하 되 정 이해 가 안 될 때 는 동영상 을 찾아보 자 . 6 . 모르 는 것 은 우선 검색 으로 해결 해 보 자 . 하 다 하 다 안 될 때 까지 . 7 . 멘토 를 찾 아라 . 날 가르쳐 주 기 위한 사람 이 아닌 도와 줄 사람 을 순서 는 좀 엉뚱 하 지만 가장 중요 한 것 은 3 번 항목 이 다 . 이해 하 지 말 고 써먹 어야 한다 . 클래스 니 객체 니 상속 이 니 어쩌 니 하 는 것 들 을 이해 하 려고 하 지 말 자 . 이해 하 려고 하 지 말 고 사용법 만 기억 해서 조금 씩 사용 해 보 자 . 그러면 그 과정 에서 저절로 이해 하 게 된다 . 왜냐하면 , 그 사람 들 도 그렇 게 만들 었 기 때문 이 다 . 어느 날 갑자기 클래스 라는 걸 만들 자고 한 것 이 아니 라 클래스 라는 것 을 만들 어 쓰 다 보 니 개념 이 생긴 것 뿐 이 다 . 이해 보다 실행 이 더 중요 하 다 . 우리 는 종종 그것 을 오해 하 기 때문 에 배우 는 것 에 대한 부담 을 느끼 게 된다 . 우리 가 만든 이론 이 란 것 들 은 대부분 하 다 보 니 생겨난 것 들 이 지 이론 이 정립 되 고 만들 어 진 것 들 이 아니 다 . 명심 하 자 . 정리 사실 코딩 은 독학 에 가깝 다고 생각 한다 . 교육 ( ? ) 으로 가르칠 수 있 는 것 에 는 분명 한계 가 있 고 결국 무엇 을 만드 는 과정 은 직접 배워 갈 수 밖에 없 다 . 따라서 만약 교육 과정 에 코딩 이 들어가 야 한다면 , 단순히 스크래치 나 자바 스크립트 혹은 파이썬 ( Python ) 을 배우 는 것 이 아니 라 프로젝트 로 진행 해야 한다 . 예 를 들 어 성적표 관리 시스템 을 만든다면 직접 팀 을 만들 고 목표 를 세우 며 그 목표 를 달성 하 는 과정 에서 필요 한 것 들 을 배워야 한다 . ‘ 모든 사람 이 코딩 을 해야 한다 ’ 는 명제 는 현대 사회 에서 점점 더 중요 해질 것 이 라 생각 한다 . 하지만 그 보다 우리 에게 중요 한 것 은 코딩 을 해야 하 는 이유 이 고 이것 은 결국 ‘ 무언가 를 만들 기 위해서 ’ 라고 생각 한다 . 갑작스러운 코딩 열풍 이 불 고 있 다 . ‘ 이전 부터 IT 관계자 들 은 코딩 의 중요 성 에 대해서 여러 번 반복 해 왔 는데 왜 이제 와서 코딩 인가 ? ’ 라는 질문 을 스스로 해 봤 다 . 나 의 결론 은 이렇 다 . 모든 사람 이 코딩 을 해야 하 는 것 이 아니 라 , 모든 사람 이 코딩 을 할 수 있 는 시대 가 된 것 이 다 . 어셈블리 , C 등 초기 개발 언어 들 은 보통 사람 이 접하 기에 복잡 한 개념 으로 가득 했 다 . 하지만 이제 는 너무나 쉬워졌 다 . 다만 쉬워진 만큼 다른 방식 의 교육 이 필요 하 다 . 모든 사람 이 할 수 있 으니 , 그걸로 뭘 할 수 있 을지 배워야 하 는 것 이 지금 우리 나라 에 필요 한 것 아닐까 ? 글 . 김석준 ( 기사 원문 ☞ http : / / slownews . kr / 43188 ) 다음 은 학교 에서 프로그램 을 가르치 도록 장려 하 기 위한 온라인 운동 인 code . org 웹 사이트 와 홍보 동영상 을 소개 한다 . 이 와 함께 국내 뉴스 를 통해 코딩 교육 이 어떻게 소개 되 고 있 는 살펴본다 . https : / / code . org /