배움의 도구

배움의 도구는 새로운 정보를 배우고 익숙해지는 과정을 포기하지 않도록 돕는 도구입니다. 우리는 모르는 것을 상상할 수 없고 아는 것을 조합해서 창의적인 것을 만들고 발전하기 때문에 계속해서 새로운 정보를 필요로 합니다. 하지만 새로운 정보에 익숙해지는 과정에서 많은 자원이 투입되고 불안함과 어려움에 마주하게 되기 때문에 대처 방법이 필요합니다.

배움을 지속하기 위한 6가지 도구

1. 완벽주의를 극복하는 마음가짐, 느슨함

무언가를 새롭게 배우다 보면 불안한 마음이 생깁니다.
배우는 초기에는 배워야 하는 내용의 전체적인 범위를 파악할 수 없어서 불안하고, 배우는 도중에는 이해가 안 되는 부분이 늘어나면서 답답해지고, 어느 정도 시간이 지나고 나면 빨리 잘하고 싶어 져서 조바심이 생깁니다.

이런 불안한 마음들은 ‘완벽주의’라는 함정에 우리를 빠뜨립니다. 완벽주의는 사람마다 다르게 그리고 여러 형태로 나타나지만 목적은 비슷합니다. 불안함을 마주하는 것을 최대한 미루게 하는 것입니다. 완벽주의의 함정을 피하기 위한 도구는 불안함을 마주하면서 앞으로 나아가는 느슨한 마음가짐입니다.

많은 코딩 강의들은 각 챕터의 마지막 부분에 배운 내용들을 이용해서 코드를 직접 작성해 보고, 응용해 보라고 연습문제가 나옵니다. 하지만 빨리 강의를 끝내고 싶은 조급한 마음과 코드를 직접 작성하다가 이해하지 못한 부분이 드러날까 봐 불안한 마음은 완벽주의라는 함정을 만들어냅니다.
완벽주의는 “배운 내용만 가지고 코드를 작성해본들 어차피 ‘완벽한’ 코드를 작성할 수 없고, 강의의 전체 내용을 완벽히 이해하기 전에 코드를 작성해 보는 건 의미가 없어."라는 나름의 논리들로 불안함을 회피하도록 유혹합니다.

하지만 불안은 회피하면 회피할수록 더욱 커지기 마련입니다. 새로운 것을 배운다는 만족감으로 불안감을 잠시 가릴 수는 있지만 시간이 지날수록 간단한 코드 한 줄도 자유롭게 작성하지 못할 수 있다는 불안감은 이전보다 더 커져서 돌아옵니다. 더불어 투자한 자원이 커질수록 불안이 현실이 됐을 때 실망감도 커지기 때문에 포기할 확률도 높아집니다. 더불어 배우는 대상이 너무 어렵거나, 나에게 맞지 않는다는 부정적인 선입견마저 남기게 됩니다.

배움의 과정을 미리 정리되어 있는 정해진 길을 따라가는 것이 아니라, 불완전하고 정리가 되지 않은 작은 요소들을 쌓고 연결시켜 본인의 지식으로 정리해 나가는 과정이라고 받아들이게 되면 불안은 마주해야만 하는 배움의 중요한 요소가 됩니다. 그리고 불안을 마주하다가 발생하는 실수와 실패를 통해서 오히려 더 많은 것들을 배운다는 것을 알게 됩니다. 그렇기 때문에 아직 미흡해서 불안감이 들더라도 계속해서 시도해 보고 마주해 보는 느슨한 마음가짐이 필요합니다.

우리가 사전에 나와있는 모든 단어를 외우고 나서 이야기를 하는 것이 아니듯, 서투르더라도 실행을 하기 위해서는 기본적인 정보만으로도 충분합니다. 그러면 실행하는 도중에 모르는 부분이 자연스럽게 생기게 되고 그때 필요한 부분을 공부하거나 검색해 볼 수 있습니다. 단기적으로 보면 어설픈 자신의 모습을 마주하는 것이 불편하고 비효율적으로 느껴지지만 계속해서 시도하고 마주해서 문제를 해결해 보는 경험이 쌓이게 되면 장기적으로는 훨씬 효율적으로 배우게 되고 더불어 불안감을 해결할 수 있다는 자신감이 생기게 됩니다.

2. 길잡이가 되어주는 목표

우리가 가지고 있는 시간과 경제적, 정신적 자원은 한정적이기 때문에 새로운 정보를 배우고 익숙해지기 위해서는 자원을 선택적으로 집중할 필요가 있습니다. 이럴 때 배우는 범위를 정하고, 범위 안에서 우선순위를 정하는 기준이 되어주는 도구는 목표입니다. 목표는 무엇을 어떤 순서로 배울지 계획을 세울 때도 도움이 되지만, 배우는 과정에서 길을 잃었을 때 방향을 재설정할 수 있도록 길잡이가 되어줍니다.

필요에 의해서 무언가를 배운다면 자연스럽게 목표가 생기겠지만, 그냥 배워보는 경우라면 목표를 설정하는 것이 도움이 됩니다. 코딩을 그냥 배워본다고 가정한다면, 코딩이 나에게 흥미로운 분야인지 알아보는 것이 목표가 될 수 있습니다. 그런 경우에는 컴퓨터 언어를 차근차근 배워가는 방법을 선택하기보다는 아이들에게 코딩을 교육하기 위해 개발된 scratch 같은 프로그램을 이용해 컴퓨터 언어를 직관적으로 경험해 보는 방법을 선택하는 것이 훨씬 효율적입니다.

목표를 정하고 목표를 달성하기 위해서 계획을 세웠다고 하더라도 배우는 과정에서 자주 길을 잃게 됩니다. 길을 잃게 되는 과정은 인터넷에 무언가를 검색하려고 접속했다가 다양한 검색 결과들의 꼬리를 물다 보면 접속한 이유를 잊어버리는 것과 비슷합니다.
무언가를 배우는 초기에는 배워야 하는 내용이나 배우는 순서를 선택해야 하는 갈림길이 별로 없습니다. 오히려 기본적인 내용들을 알고 나면 앞으로 배워야 하는 내용의 난이도도 어려워지지만 세부적으로 배워야 하는 정보의 양도 급격하게 많아집니다. 이런 상황에서 다양한 선택지들 중에 어떤 순서로 배워야 할지 헤매다 보면 길을 잃게 됩니다. 그리고 당장 배우고 있는 내용을 이해하기 위해서 집중하다 보면 새로운 정보를 알아가는 만족감에 매료되기도 하고 관련 정보들이 제시하는 다양한 가능성에 한눈을 팔다가도 길을 잃게 됩니다.

목표를 한번 정했다고 해서 끝까지 유지해야 하는 것은 아닙니다. 길을 잃었다고 느껴질 때 기존의 목표를 다시 한번 생각해 볼 필요가 있습니다. 이전에 목표를 설정했을 때보다 배우는 대상에 대해서 더 많이 알게 되었기 때문에 이전보다 구체적이거나, 이전과는 다른 목표가 더 적합하다고 판단할 수 있습니다.
저의 경험을 예로 들면, 제가 처음 코딩을 배우게 된 목표는 코딩을 이용해서 그래픽 결과물을 만들어 내는 것이었습니다. 그런데 코딩을 배우는 과정에서 결과물을 만드는 것보다 코딩을 통해서 결과물을 만들어가는 과정에 흥미를 느꼈습니다. 그리고 이 내용을 사람들과 공유하는 것이 코딩을 배우는 새로운 목표가 되었습니다. 목표가 달라지면서 배워야 하는 내용의 범위는 달라졌지만 세부적인 목표와 경로들을 더 구체적으로 정할 수 있었습니다. 물론 목적지가 구체적이라고 해서 더 쉽게 배워지는 것은 아니지만, 목적지를 향해 가는 과정들 하나하나에 더 집중하게 되고, 배워야 하는 범위와 경로를 결정하는 시간과 감정적인 자원을 아껴줍니다.

3. 현 위치를 파악할 수 있는 실행

길을 찾아가려면 목적지와 출발지 두 개의 위치가 필요하듯이 무언가를 배울 때에도 목표를 향해 가기 위해서는 목표뿐만 아니라 현재 자신이 이해하고 있는 정도를 잘 파악하고 있어야 합니다. 그런데 현재 자신이 이해하고 있는 정도를 생각만으로 파악하기는 어렵습니다. 머릿속에서는 지식들이 얽혀 있거나 중간에 비어있는 정보가 있어도 자유롭게 연결될 수 있기 때문입니다. 본인의 머릿속에 있는 지식이라 할지라도 확인이 가능한 형태로 만들어 봐야지만 정확히 파악할 수 있습니다. 이걸 가능하게 하는 도구는 실행입니다.

배우는 범위와 경로를 정하기 위해서는 목표를 정하는 것만큼이나 나의 현재 위치를 파악하는 것이 중요합니다. 자신의 현재 위치를 파악하지 못하면 본인의 수준보다 너무 쉽거나 너무 어려운 내용을 배우느라 시간과 자원을 허비하게 됩니다. 여기서 말하는 현재위치는 얼마나 많은 정보를 알고 있는지가 아니라 알고 있는 정보를 활용할 수 있는지가 기준이 됩니다.

활용할 방법을 모르는 정보는 많아지면 독이 될 수 있습니다. 각각의 정보는 가능성을 담고 있어서 아는 게 많아질수록 기대치가 높아지기 마련입니다. 그런데 활용을 못한다면 높아진 기대치를 충족시키지 못하고 불안감과 실망감을 만들어 냅니다. 그렇기 때문에 배우는 과정에서 주기적인 실행이 필요합니다. 실행을 통해서 아는 것과 모르는 것이 무엇인지를 가늠할 수 있고, 알고 있던 정보도 맥락 안에서 어떻게 활용할 수 있는지를 파악하게 되어 더 자세하게 이해하게 됩니다.

요리는 실행의 장점을 보여주는 좋은 예입니다. 요리를 해보면 음식을 만드는 일은 요리의 과정 중 일부분이라는 것을 발견하게 됩니다. 좋은 식재료를 고르고, 식재료를 사용하기 좋게 준비하고, 요리 중에도 주변을 깨끗이 정돈하고, 음식을 보기 좋게 플레이팅하고, 조리도구를 잘 관리하는 등 요리를 해보기 전에는 미처 몰랐던 수많은 과정들이 요리에 포함된다는 것을 알게 됩니다. 이처럼 실행은 대상을 다양한 관점에서 이해하게 하고, 미처 몰랐던 부분을 발견하게 합니다.

더불어 실행을 통해서 음식이라는 결과물이 만들어집니다. 결과물이 성공적인 가는 중요하지 않습니다. 중요한 점은 음식은 더 이상 머릿속에 존재하는 것이 아니라 눈으로 볼 수 있고, 만질 수 있고, 냄새를 맡거나 맛볼 수도 있다는 점입니다. 이렇게 다양한 감각을 통해서 피드백을 얻을 수 있기 때문에 이 정보들을 이용하면 본인의 현 위치와 보완할 점을 확인할 수 있습니다.

코딩을 배울 때에도 동영상 강의나 책의 내용을 공부하고 예제들을 따라 해 보는 것만으로는 이해할 수 없는 부분들이 있습니다. 코드를 직접 작성해 보고 배운 내용을 응용해 보면 코드가 맥락 안에 놓이게 되면서 챕터에 따라 개별적으로 나뉘어 있던 파편적인 지식들이 다양한 방법으로 연결된다는 것을 이해하게 됩니다.

4. 정보에 익숙해지는 반복

무언가를 배운다는 것은 결과적으로만 보면 새로운 정보를 이해하게 되는 단순한 일입니다. 하지만 배우는 과정은 전체를 구성하는 각각의 정보에 익숙해지는 일이면서, 동시에 익숙해진 각각의 정보를 연결해서 전체의 맥락을 파악하는 다차원적인 일입니다. 또한 멀리서 볼 때는 난이도에 따라 순서대로 배우는 것처럼 보이지만, 가까이 들여다보면 구성하고 있는 정보들이 서로 유기적으로 연결되어 있어서 순서는 희미해집니다. 그래서 배우는 과정은 복잡하고 정해진 방법이 없습니다. 하지만 이런 다차원적인 정보를 익숙하게 만들어 주는 도구는 반복입니다.

반복을 통해 새로운 정보에 익숙해질 수 있는 이유는 무언가를 배우면 인식이 달라지기 때문입니다. 달라진 상태로 같은 내용을 반복하면 이전에는 미처 발견하지 못했던 부분들이 보이게 되고, 좀 더 세부적인 부분을 이해하게 되면서 점차 익숙해집니다.

하지만 전체를 구성하는 정보들이 서로 유기적으로 연결되어 있기 때문에 같은 내용을 연속적으로 반복하는 방법만으로는 다차원적인 정보에 익숙해지기 어렵습니다. 하나의 정보를 깊이 이해하기 위해서는 오히려 관련 정보들의 도움이 필요합니다. 관련 정보들은 각각의 정보의 기반이 되어주고 연결되기 때문에 관련정보의 범위가 넓어질수록 전체 맥락을 파악하게 되고 오히려 각각의 정보도 더 깊이 이해하게 됩니다. 관련정보의 범위를 넓히기 위해서는 배우고, 실행하고, 진도를 나가고, 다시 배우는 일련의 과정을 반복해야 합니다. 물론 과정의 정해진 공식이나 방법은 없고 자신에게 맞는 과정을 찾아야 합니다.

과정을 반복해서 정보에 익숙해지는 과정은 이렇습니다.
새로운 정보를 처음 접할 때는 내용을 대략적으로 이해합니다. 여기서 포인트는 대략적이라는 것입니다. 아직 정확히 이해하지 못한 어색한 상태로 실행하다 보면 정보가 익숙하게 느껴집니다. 익숙하다고 해서 정확히 이해하고 있는 것은 아닙니다. 그 상태로 진도를 나가다 보면 익숙하지만 불완전한 지식들이 서로 연결되고 부족했던 부분들을 서로 채워줍니다. 어느 정도 맥락을 파악하고 나면 익숙하지만 이해하지 못한 각각의 정보들을 반복합니다. 이 과정에서 예전에는 인지하지 못했던 상세한 부분들을 이해하게 되는 것을 발견하게 됩니다. 과정을 반복하다 보면 전체 맥락과 전체를 이루는 각각의 정보들을 더 잘 이해하게 됩니다.

불완전한 지식들이 서로 연결될 수 있는 이유는 우리의 뇌는 유사성이나 연관성이 있는 파편적인 정보들이 있으면 패턴을 발견하고 비어 있는 부분을 연결하는 능력이 탁월하기 때문입니다. 진도를 나가면서 서로 관련된 내용을 배우기 때문에 자기도 모르는 사이에 머릿속에서 패턴이 생기고 더 깊이 이해하게 됩니다.

5. 나만의 정답을 찾아가는 과정, 연결

우리가 무언가를 배우는 궁극적인 이유는 배우는 정보 자체가 아니라 배운 정보를 응용하기 위함입니다. 어떤 분야든 배운 정보를 응용하기 위해서는 배워야 하는 기본적인 정보들이 있습니다. 이런 기본이 되는 정보들은 따라 하고 연습하고 반복하는 것으로 능숙해집니다. 하지만 능숙해진다고 해서 자연스럽게 응용할 수 있는 것은 아닙니다.

응용하기 위해서는 배운 정보를 정답이 아니라 하나의 가능성으로 바라보는 유연함이 필요합니다. 그리고 능숙함이 주는 심리적인 안정감을 벗어나야 하는 불편한 일입니다. 하지만 정보를 있는 그대로 받아들이면 비슷한 결과만 만들어집니다. 미숙하더라도 응용을 했을 때에만 새로운 결과물이 만들어질 수 있는 가능성이 열립니다. 정보를 유연하게 해석하고 응용해서 나만의 정답을 만들 수 있는 도구는 연결입니다.

나만의 정답이라고 해서 획기적이고, 창의적인 결과물을 이야기하는 것이 아닙니다. 창의적인 결과물은 이전에 생각하거나 시도해 보지 않았던 방법으로 정보들을 새롭게 연결하는 과정에서 자연스럽게 만들어지는 것이기 때문에 결과보다 과정이 중요합니다. 일상에서 결과가 만들어지는 다양한 과정을 쉽게 접할 수 있는 것은 음식 레시피입니다. 인터넷에 대중적인 음식의 레시피를 검색해 보면 무수히 많은 ‘나만의 정답’들이 나옵니다. 그리고 각각의 레시피를 들여다보면 기본적인 형식은 비슷하지만 들어가는 재료, 용량, 조리순서, 조리법 등의 차이로 각자의 정답을 만들어 내는 것을 볼 수 있습니다.

세상에 완전히 새로운 것은 없습니다. 우리가 사용하는 모든 물건과 시스템은 과거에 존재한 아이디어로부터 어떤 식으로든 영향을 받거나, 파생되어 나온 것들입니다. 때문에 다른 사람의 작업 과정을 다양한 방법으로 연결해 보는 것은 대상을 유연하게 바라보는 좋은 연습이 됩니다. 예를 들어 다른 사람의 레시피의 일정 부분만을 바꿔보거나, 순서를 바꾸거나, 여러 개의 레시피를 섞어 볼 수도 있습니다. 얼마나 다양한 관점으로 대상을 바라보는지에 따라서 연결할 수 있는 방법도 다양해집니다. 그리고 그 과정에서 본인만의 레시피도 발견할 수 있습니다. 그리고 일상의 다른 일에도 적용할 수 있습니다.

6. 완주할 수 있도록 보조해 주는 소통

배우는 일은 다른 사람이 대신해 줄 수가 없습니다. 모든 과정은 결국 본인의 몫입니다. 그렇지만 모든 과정을 혼자서 해야 하는 것은 아닙니다. 불안하고 지치는 배움의 과정을 포기하지 않도록 페이스메이커가 되어주는 도구는 소통입니다.

우리는 배우는 과정 중에 다양한 방식의 소통을 합니다. 우선 강의나 책의 정보를 전달받는 일방적인 소통을 합니다. 그리고 배운 내용을 실행해 봄으로서 자신이 이해하고 있는 정도나 부족한 부분을 스스로 파악하는 수동적인 소통을 합니다. 하지만 우리가 배움을 지속하기 위해서는 다른 사람들과의 직접적인 소통이 필요합니다.

만약 배우는 도중에 이해가 안 되는 부분이 생겼을 때 문제를 공유하거나 의견을 물어볼 사람들이 있다면 혼자서 문제를 해결할 때 보다 해결책을 찾을 확률이 높아집니다. 같은 문제에 대해서 이해하고 있는 부분이나 정도가 사람마다 다르기 때문입니다. 혹여 문제의 직접적인 답을 얻지 못한다고 하더라도 같은 문제를 다르게 해석하거나, 문제를 해결해 나가는 접근방식이 다른 이 모든 정보가 문제를 이해하는 실마리가 됩니다.
실행을 통해 만들어 낸 결과물도 다른 사람들과 공유했을 때 다양한 피드백을 통해서 더 빨리 발전할 수 있습니다. 사람마다 대상을 바라보는 관점이 다르기 때문에 미처 생각하지 못했던 부분에 대해서 피드백을 받을 수 있고, 만든 사람의 의도와 다르게 사용하는 것도 새로운 가능성의 힌트가 될 수 있습니다.

배우려는 의지에도 제한시간이 있습니다. 분명한 목표를 가지고 배운다고 하더라도 배운 지식을 너무 긴 시간 혼자서만 품고 있다 보면 자신이 변하거나 환경이 변해버려서 결국에는 배우려는 의지가 빛을 잃게 됩니다. 때문에 포기하지 않기 위해서는 배움과 공유의 거리를 좁혀야 합니다. 최종 목적지가 너무 멀리에 있다면 사람들에게 더 빠르게 공유할 수 있는 중간 목적지가 필요합니다. 예를 들면 소설책을 쓰기 위해서 글 쓰는 법을 배운다면 먼저 블로그에 단편적인 글을 올려볼 수 있습니다.
결과물을 공유했을 때 사람들에게서 얻어지는 피드백도 중요하지만 더 중요한 점은 자신감과 경험이 쌓인다는 점입니다. 만들어낸 결과가 만족스럽지 못하다고 해도 사람들에게 공유할 수 있는 결과를 만들어 냈다는 자체에서 자신감을 얻게 되고 결과를 만들어내는 경험이 쌓입니다.

소통은 정보를 순환시켜서 배움을 완성시켜 줍니다.
코딩에 익숙한 사람이라도 온전히 혼자서 코드를 작성하는 경우는 없습니다. 대신 누군가가 만들어 놓은 템플릿(라이브러리)을 본인의 용도에 맞게 변경하고, 조합하고, 본인의 코드를 더해서 완성합니다. 반대로 생각하면 우리가 공유한 정보도 다른 사람들에게 도움이 될 수 있습니다. 우리가 공유한 결과도 혼자서는 빛이 나지 않습니다. 결국 사회의 한 부분으로 다른 사람들이 사용해 줄 때 빛이 납니다.