경험을 통한 학습
경험을 통해 배우는 방법이 원래 어디에든 잘 맞다. 특히 기술을 익힐 때는 이 방법이 두말할 것 없이 최고다. 책을 읽거나 튜토리얼 동영상을 보는 것만으로 기술을 배운다는 건 어불성설이다. 특정 기술이나 프로그래밍 언어, 도구로 무엇을 할 수 있는지 정도는 이해할 수 있지만 실제 그 기술을 써서 문제를 해결해본 경험이 없다면 해당 기술에 대한 이해가 표면적인 수준에 그칠 수밖에 없다.
3장에서 언급한 기술을 제대로 활용할 능력을 얻으려면 책에서 배운 지식만으로는 부족하다. 프로그래밍 언어까지는 어떻게 알 수 있을지도 모른다. 하지만 문법을 읽어보는 것만으로 소스 제어 사용법을 정말 알 수 있을까? 실수로 파일을 잘못된 브랜치branch에 병합merge하거나 잘못된 소스 코드 버전을 체크아웃하는 실수를 저지른 적이 없고, 버그가 출현한 시점을 파악하기 위해 버전 이력을 살펴본 적이 한 번도 없다면 소스 제어 사용법을 제대로 배울 수 없다. 그저 안다고 착각한 것뿐이다.(방금 한 말이 무슨 뜻인지 아직 이해하지 못해도 괜찮으니 걱정하지 마라.)
나 역시 이 책의 뒷부분에서 이 모든 기술에 대해 알려주겠다고 약속했다. 게다가 당신은 지금 그걸 배우기 위해 이 책을 읽고 있다. 맞다. 하지만 책을 읽는 데서 멈추지 않는 것이 핵심이다. 이 책을 읽는 단계는 여기서 언급한 내용을 피상적으로 배우는 단계다. 하지만 어느 시점이 되면 읽은 내용을 경험을 통해 제대로 숙지할 수 있도록 책을 내려놓고 실습blog하는 시간을 가져야 한다.(적어도 기술은 그렇게 배워야 한다.)