실험의 중요성을 이야기하고 싶습니다.
초심자를 어렵게하는 것 중에 하나는 책 속에 모든 내용이 들어있을 것이라는 기대감도 한 몫 하는 것 같습니다. 그런데 책을 쓰는 저자도 사람이기 때문에 하나도 빠트리지 않고 모든 것을 다 망라할수는 없습니다. 혹 모든 것을 다 망라한다면 지식이 불필요하게 방만해지는 부작용도 있을 수 있습니다. 즉 책 속에는 모든 것이 다 들어있지 않습니다.
초심자를 어렵게하는 또 하나는 모르는 내용을 스스로 알아내는 것은 내가 할 수 있는 일이 아니라고 여기는 것입니다. 오랫동안 책과 선생님을 통해서 공부를 해왔기 때문에 우리는 부지불식간에 지식을 스스로 탐구하는 것은 초심자인 내가 할 일은 아니라는 생각을 갖게 되는 것 같아요.
그런데 말이죠. 우리는 이미 태어날 때부터 실험정신을 가지고 태어납니다. 이를테면 아이들은 닥치는데로 먹어보고, 만져봅니다. 이 과정을 통해서 아이들은 세상의 생김새를 정신에 그립니다. 그리고 어떤 일을 할 때 정신에 구축한 세상에서 먼저 시도를 해봅니다. 그것이 좋은 것이라면 실제 세계에서 실행하고, 나쁜 것이라면 회피합니다. 우리의 정신은 고대의 기술로 만들어진 고도의 시뮬레이터라고도 볼 수 있겠네요. 정신 안의 세상과 실제의 세상이 비슷할수록 더욱 안전하게 살아갈수 있습니다.
초급에서 중급으로 갈수록, 중급에서 고급으로 갈수록 지식의 양은 기하급수적으로 많아지는데, 친절한 설명은 기하급수적으로 적어집니다. 어떤 분야건 마찬가지 일 것이라고 생각합니다. 이런 낯선 환경에 놓이게 되면 압도적인 적막감에 놀라서 길을 잃어버리게 됩니다.
저는 요즘 전기를 공부하고 있습니다. 번번히 실패했는데 이번에는 성과를 좀 내보기 위해서 첨부한 사진의 친구들을 구입했습니다. 하나는 원하는 전원을 공급해주는 장치고, 또 하나는 전기를 측정하는 장치입니다. 책 속에는 나와있지 않은 내용들을 이 친구들을 이용해서 직접 알아보려고 합니다.
제가 git을 처음 공부할 때가 생각나네요. 너무 복잡하더라구요. 책에 있는 내용도 이해가 안되고요. 그래서 소스코드를 열어봤습니다.열자마자 닫았습니다. ㅎ 인생을 갈아넣어야 이해할 수 있는 느낌이랄까? 그럴 생각은 없었거든요. 그래서 git의 기능을 실행할 때마다 git이 버전을 저장하는 디렉토리(.git)에서 어떤 변화가 일어나는 것을 관찰했습니다. 그 차이를 좀 더 쉽게 비교해볼 수 있게 gistory라는 프로그램도 만들었구요. https://www.youtube.com/watch?time_continue=1&v=KyGfapLpWhY 놀라운 것은 git은 정말 복잡한데 그 원리는 정말 단순했습니다. 그리고 어떤 책으로 공부하는 것 보다 빠르고, 단순하게 그리고 자유롭게 git의 원리를 파악할 수 있었습니다. 과학자가 된 기분은 덤입니다.
생각해보면 모든 분야의 중급자들은 과학자입니다. 설명서 -> 검색 -> 질문으로도 알아낼 수 없을 때 이런 저런 값을 입력해보면서 시스템이 어떻게 동작하는가를 따져봅니다. 가설은 더욱 정교해지고, 원인과 결과를 설명할 수 있는 보다 정확한 모델을 머리속에 그립니다. 모델이 만들어지면 실행을 하기 전에 모델에서 먼저 테스트를 해볼 수 있습니다. 더 안전하게 문제를 해결할 수 있게 되는 것입니다. 그런 점에서 print_r, console.log, system.out.println은 유용한 과학도구입니다.
'실험을 하자'는 취지로 글을 시작했는데 생각해보니 '실험을 이미 하고 있다'로 글을 마쳐야 할 것 같습니다.