32 비공개로 배우기
저는 공개적으로 배우기에 관한 조언으로 알려져 있습니다. 여러분은 제가 모든 것을 공개적으로 해야 하며, 그렇지 않으면 인생을 잘못 살고 있는 것이라고 생각한다고 쉽게 짐작할 수도 있습니다.
하지만 물론 모든 것을 공개해야 한다고 생각하지는 않습니다. 제가 하는 모든 강연과 팟캐스트에서 공들여 설명해 왔듯이, 모든 사람이 공개적으로 배우기를 실천해야 한다고 생각하지도 않습니다.
“공개적으로 배우기”를 더 현실적으로 표현하면 “더 공개적으로 배우기”입니다. 이 말은 대다수 사람의 기본값인 0%보다 조금만 더 공개적으로 나아가도 대부분의 사람이 득을 본다는 뜻입니다. 실제로 이는 0%에서 1%, 5%, 혹은 30% 정도로 공개 비율을 높이는 것을 의미할 뿐입니다. 대부분의 시간 동안 여러분은 여전히 비공개로 배우고 있습니다.
그래서 비공개로 배우기를 잘하는 방법에 대한 몇 가지 생각을 정리해 보았습니다.
32.1 소비하는 콘텐츠 개선하기
콘텐츠보다 사람: 콘텐츠 출처보다 사람을 팔로우하십시오. 좋은 블로그, 팟캐스트, 강연을 접하면 그 뒤에 있는 사람에게 주목하고 그 사람이 하는 다른 일도 팔로우하십시오. 요즘 콘텐츠는 상당 부분 Reddit이나 Hacker News 같은 애그리게이터, 또는 업계 블로그나 팟캐스트, 콘퍼런스를 통해 유통됩니다. 큐레이션에 최선을 다하더라도 품질은 꽤 들쭉날쭉할 수 있습니다. 제목과 추천 수는 SEO를 위해 조작될 수도 있습니다. 하지만 좋은 사람은 평생 좋은 사람일 가능성이 높습니다. 여러분은 이미 자신이 함께 시간을 보내는 X명의 평균이라는 것을 알고 있습니다. 그러니 그 사람들을 큐레이션하십시오. 여기에는 RSS 피드가 도움이 됩니다.
이를 확장한 형태가 그래프 따라가기(Following the Graph)입니다. 사람을 팔로우하는 데 그치지 않고, 그 사람들이 팔로우하는 사람들까지 팔로우하는 것입니다(그들의 머릿속에 들어가는 가장 좋은 방법입니다). 지나온 이력을 거슬러 추적하고, 새로운 작업 흐름을 앞으로 따라가는 것입니다. 대부분의 것은 소수의 핵심 주도자들이 만들어 내며, 이들은 대개 (정의상) 찾기 어렵지 않습니다.
좋은 책은 처음부터 끝까지 읽으십시오: 책은 한번 나오면 영구히 남기 때문에 저자들은 세부 사항을 확정하는 데 많은 시간을 들입니다. 또한 저자들은 특정한 교육 목표를 염두에 두고 내용의 구조와 상대적 비중을 구성하는 데에도 많은 시간을 들입니다. 강력히 추천받은 책(또는 그저 시작이 좋은 책)을 만나면, 처음부터 끝까지 읽어서 그 책을 제대로 대접하십시오. 별로인 장이나 절을 만날 수도 있지만, 끝까지 읽어 보기 전에는 알 수 없습니다. 특히 결말에 주의를 기울이십시오. 사람들은 끝까지 읽지 않는 경우가 많지만 많은 저자가 정말 좋은 내용을 마지막에 둡니다(에헴!). 보통 이것은 저자가 도입부를 어지럽히고 싶지 않아서 빼 둔 “중요하지 않은 세부 사항”입니다. 이는 여러분이 무엇을 하든 그 분야에서 중급자라면 특히 더 해당됩니다. 생각해 보십시오. 초보자에게는 성공으로 가는 가장 짧은 길을 알려 주는 튜토리얼이 필요하고, 전문가는 이것저것 만져 보며 최신 흐름을 따라가기만 하면 되지만, 중급자에게는 맥락과 세부 사항에 대한 명확한 설명이 필요합니다.
여전히 유효한 오래된 것을 읽으십시오: 린디 효과(장 12에서 다룸)는 여러분이 읽는 것에도 적용됩니다.
- 오늘날 우리가 읽는 것 중 너무나 많은 것이 오늘 만들어졌고 내일이면 쓸모없어질 것입니다. 물론 뉴스, 나아가 업계 소문까지도 어느 정도 파악하려고 노력해야 하지만, 우리 일이 말 그대로 모든 우여곡절을 알아야 하는 일이 아니라면 거기에 너무 많은 시간을 쏟아서는 안 됩니다.
- 우리가 읽는 것의 질을 측정하는 한 가지 방법은 읽은 지 1년, 2년, 5년, 심지어 10년이 지난 뒤에도 여전히 그것을 참고하고 있는지 여부입니다. 이렇게 하면 읽은 것이 곧바로 의미를 잃는 대신, 시간이 지날수록 독서에 들인 노력이 복리처럼 쌓이게 됩니다.
- 우리는 어떤 일이 벌어지는 그 순간에 무엇이 중요한지를 형편없이 예측합니다. 우리가 아는 한 관련성을 가늠하는 가장 좋은 방법은 그저 오래되었지만 여전히 의미 있는 것을 살펴보는 것, 이른바 린디 효과(Lindy Effect)입니다!
- 따라서 여기서의 해결책은 린디 도서관(Lindy Library)을 구축하는 것입니다. 이는 시간의 시험을 견뎌 낸 콘텐츠(예를 들어, 3년 이상 지났는데도 여전히 매우 유의미한 것)를 모아 둔 별관입니다. 소셜 미디어 피드를 끊임없이 스크롤하는 것보다 이 도서관(또는 다른 사람의 도서관)을 다시 찾아보는 편이 시간 대비 더 많은 보상을 가져다줄 것입니다.
덧붙이자면, 이 책 자체가 하나의 린디 라이브러리이며, 이미 저자에게 여러 번 유용하게 쓰였습니다.
소스 코드를 읽으십시오: 사람들은 흔히 오픈 소스 운동을 “내가 무료로 쓸 수 있는 코드”로 여기며, 그것이 “필요에 따라 자유롭게 포크할 수 있는 코드”이기도 하다는 전제를 잊곤 합니다. 그런데 우리는 너무나 호사에 익숙해진 나머지, 그것이 “고수에게 배우기 위해 읽을 수 있는 코드”라는 사실마저 잊어버립니다. Ryan Florence가 말했듯이, 실력을 키우는 가장 좋은 방법은 “사용하는 것의 소스 코드를 읽는 것”입니다. 단순하지만 쉽지는 않습니다. Paul Irish의 초기 히트작 중 하나는 jQuery 소스에서 배운 10가지(그리고 이어서 나온 11가지 더)였습니다. 물론 이것은 공개 강연이었지만, 얼마든지 비공개 학습이 될 수도 있었습니다. 제가 /r/reactjs에 오픈 소스 React 프로젝트 아이디어 목록을 정리해 둔 것도 이 때문입니다.
저장소와 이슈 구독하기: 언어 뒤에 메타언어가 있듯이, 코드 뒤에는 메타코드가 있습니다. 바로 협업자들이 GitHub 저장소와 이슈에서 모두가 볼 수 있게 공개적으로 나누는 논의와 시도입니다. 소스 코드 읽기가 시간 속에 멈춰 있는 코드를 읽는 것이라면, 저장소와 이슈를 구독하는 것은 움직이는 코드를 읽는 것입니다. 개발자의 일은 코드를 움직이게 하는 것이므로, 다른 사람들을 지켜보며 그 방법을 배우는 것은 훌륭한 생각입니다.
32.2 소비하는 것에서 더 많은 것을 얻어내기
자신이 어떻게 배우는지에 대해 깊이 생각해 본 적이 없다면, 배움을 엄청난 양의 정보를 머릿속에 욱여넣는 것과 같다고 여길 수도 있습니다. 이런 방식은 지속할 수 없습니다. 단순히 소비하는 속도를 높인다고 해서 더 많이 기억하게 되지는 않습니다. 배운 것을 기억하지 못한다면, 차라리 배우지 않은 것과 다를 바 없습니다!
따라서 학습의 문제는 두 가지로 나뉩니다. 하나는 지식을 효율적으로 정리하는 것이고, 다른 하나는 배운 것으로 적용하고, 실행하고, 창작하고, 다른 사람을 돕는 것입니다.
목표를 가지십시오: 이것저것 닥치는 대로 배우느라 노력을 분산시키기보다 한 가지를 배우는 데 더 많은 노력을 쏟을 때 더 멀리 나아갈 수 있습니다. 또한 지금 당장 목표와 관련이 없는 것들은 무시해도 된다는 허락을 얻는 초능력도 갖게 됩니다. 목표가 바뀌면 언제든 나중에 다시 돌아오면 됩니다.
저는 시스템이 목표보다 더 중요하다고 굳게 믿습니다. 지금 읽고 계신 이 책 전체가 일종의 원형 시스템입니다. 하지만 목표를 통해 시스템에 초점을 맞출 수 있습니다. 때로는 시스템을 하나의 목표 안에 담을 수도 있습니다. 최근 울트라러닝(Ultralearning)은 매우 강도 높은 몰입형 학습 방식으로 꽤 주목받고 있는 듯합니다. Joe Previte는 이를 다음과 같이 요약합니다. “예를 들어 새로운 기술을 31일 동안 실험해 보겠다는 목표를 세우십시오. 직접 살펴보십시오. 어떻게 생각하는지 확인하십시오. 배운 것을 기록하십시오.” 그렇다고 항상 목표가 있어야 한다는 말은 아닙니다. 때로는 방향 없는 학습이 즐겁고 뜻밖의 행운으로 이어지기도 합니다.
노트를 작성하십시오: 삼단논법 하나:
- 기억해 낼 수 없다면 무언가를 배우는 것은 의미가 없습니다. 아니, 더 정확히 말하면, 더 많이 기억해 낼 수 있을수록 더 많이 실제로 배운 것입니다.
- 한 번에 기억해 낼 수 있는 양에는 자연스러운 한계가 있습니다.
- 그러므로 뇌가 담을 수 있는 것보다 더 많이 배우려면 반드시 메모를 해야 합니다.
이는 요즘 세컨드 브레인 만들기(Building a Second Brain)라는 이름으로 유행하고 있지만, “개인 지식 관리(Personal Knowledge Management)”가 지식 노동자에게 핵심적인 생활 습관이라는 것은 전혀 놀라운 일이 아닙니다. 이것은 일시적인 유행이 아닙니다. 전문가들이 실력을 쌓기 위해 언제나 익혀 온 것입니다.
검색은 초능력이기 때문에 저는 디지털 노트를 선호하는 편입니다. 하지만 검색이 정리를 대신할 수는 없습니다. 정리는 가장 단순한 형태로는 태그 시스템이지만, 가장 잘 갖춰진 형태로는 주제에 대한 “최소 신장 분류 체계(minimum spanning taxonomy)”입니다.
때로는 그림이 최고의 노트입니다. 지도를 그리고, 다이어그램을 그리고, 이상적인 도표를 그리십시오.
같은 양의 내용을 저장하고 있다면, 정리된 정신은 언제나 정리되지 않은 정신보다 뛰어난 성과를 냅니다.
간격 반복: 또 다른 전략은 단순히 기억해 낼 수 있는 양을 늘리려고 노력하는 것입니다. Michael Nielsen은 장기 기억의 용량에 대해 과장된 주장을 하는 것으로 유명하지만, 기본 원칙은 타당합니다. 바로 간격 반복 학습을 활용하는 것입니다. 이 분야에서는 Anki가 선두 주자입니다. 솔직히 말씀드리면, 저는 이것을 많이 하지 않습니다. 어떤 면에서는 매일 같은 주제를 탐구하는 습관을 들이고 검색 가능한 노트를 꼭 남기다 보면 어차피 간격 반복을 하게 됩니다. 하지만 물론, 인터뷰나 워크숍에서 그 자리에서 바로 무언가를 떠올려야 하는 경우가 많기 때문에 저는 이 부분을 언제든 더 잘할 수 있을 것입니다.
의도적 연습: 글래드웰이 대중화한 1만 시간의 법칙에 대해서는 말이 많았지만, 자신의 능력의 한계선에서 연습할 때 가장 크게 성장한다는 점에는 이견이 없습니다. 안전지대 안에 머무르며 1만 시간을 보내고도 전혀 나아지지 않더라도 놀라지 마십시오. 연습할 때 의도적으로 자신의 한계를 밀어붙여야 합니다. 그렇지 않으면 한계는 결코 움직이지 않습니다. 더 말할 필요가 있겠습니까?
여러분의 능력이 정확히 어디까지인지 짚어 내는 두 가지 방법을 꼭 강조하고 싶습니다:
- 내려놓은 것을 집어라: 저는 이것을 “공개적으로 배우기를 위한 궁극의 비법”(장 19)이라고 불러 왔지만, 물론 비공개로도 할 수 있습니다. 여러분의 멘토가 자신도 모르는 사이에 좋다고 말하는 것, 아직 이루어지지 않았다고 말하는 것은 무엇이든 전부 이어서 해 보십시오. 아니면 아예 그들의 작업을 그대로 재현해 보십시오. 이것은 다음으로 이어집니다…
- Ben Franklin 방법: 예전에 읽은 적이 있지만, 최근 Mike White 덕분에 다시 떠올리게 되었습니다. “Ben Franklin” 방법은 자신의 결과물과 자신이 받아들인 입력물 사이의 품질 차이를 알아차리도록 스스로를 훈련하는 분해와 재구성 과정을 줄여 부르는 말입니다. 자기 작업이 형편없다고 느끼는 이유가 바로 이것입니다. 안목이 실력보다 훨씬 앞서 나가 버렸기 때문입니다. 아이라 글래스는 이를 간극(The Gap)이라고 부릅니다. Ben Franklin 방법은 그 간극(The Gap)을 메우기 위한 피드백 루프입니다. Ben Franklin 방법을 코드에 적용하면 오픈 소스 앱 복제하기(장 10) 원칙으로 이어집니다. 파인만 기법에 대해서도 들어 보셨을 수 있는데, 이와 비슷하지만 다른 사람의 기법을 따라 하는 데 초점을 두기보다는 좀 더 자기 자신을 중심으로 합니다.
32.3 메타적으로 접근하기
반응적 학습보다 능동적 학습: 능동적 학습은 풀(Pull) 방식입니다. 무언가를 시도해 보고, 빈틈을 발견한 다음, 그 일을 해내는 데 필요한 것을 찾아 나섭니다. 대부분의 학습은 반응적으로 시작합니다. 새로운 것을 보면 그것을 배웁니다. 푸시(Push) 방식입니다. 문제는 콘텐츠 업계가 쏟아지는 콘텐츠 홍수 속에 여러분을 빠뜨리는 쪽으로 너어어무 멀리 가 버렸다는 점입니다. 게다가 반응적 학습은 여러분의 목표가 아니라 다른 누군가의 목표에 봉사합니다. 무엇을 배울지 배우는 것도 학습의 일부이고 뜻밖의 발견은 멋진 일이지만, 혹시 몰라서 하는(Just-In-Case) 학습은 장기적으로 생산적이지 않습니다. 올바르게 균형 잡힌 학습에는 자연스럽거나 편하게 느껴지는 정도보다 더 많은 필요한 때에 하는(Just-in-Time) 능동적 학습이 포함될 것입니다.
고백하자면 저는 이것을 전혀 잘하지 못하며, 능동적 학습을 좀 더 습관으로 만드는 방법에 대한 아이디어가 있다면 기꺼이 듣고 싶습니다.
여러 관점을 비교하고 대조하십시오: 놀라울 만큼 많은 개발자가 서로 경쟁하는 생각들을 머릿속에 동시에 객관적으로 담아 두지 못합니다. 그들은 그저 자신의 관점을 계속해서 되풀이하여 주장하고, 상대방의 가장 약한 논거를 공격할 뿐입니다. 저는 이것을 용납할 수 없습니다. 7가지 습관 중 다섯 번째는 먼저 이해하고, 그다음에 이해시켜라입니다. 모든 주요 당사자의 가장 좋은 논거를 그들 자신이 동의할 수 있는 방식으로 요약할 수 있다면 여러분은 더 효과적으로 일할 수 있습니다. 이것은 판단을 내리지 않는 “학파” 방식의 학습법이며, 더 많은 사람들이 이 방식을 받아들였으면 합니다.
덤으로, 이것을 잘할 수 있게 되면 여러분과 의견이 다른 사람들을 더 잘 설득할 수 있게 됩니다. 여러분이 시간을 들여 그들을 이해했기 때문입니다. 이를 허수아비 논법(Straw-manning)과 반대되는 개념으로 강철인간 논법(Steel-manning)이라고 부르기도 합니다(Andrew Chen의 글에서 더 보기).
게임과 메타게임을 구분하십시오: 배움의 상당 부분은 지금 하고 있는 게임이 무엇이든, 그 게임을 더 잘하는 방법에 초점을 맞춥니다. 하지만 최고의 플레이어들은 게임이 진행되는 동안에도 게임의 규칙이 바뀌고 있다는 사실을 알고 있습니다. 그들이 영리하거나 열정적이라면, 게임을 하는 동안 게임의 규칙을 바꾸는 일에도 적극적으로 참여합니다. “지난 전쟁을 치르는” 일을 계속하고 싶지 않다면, 그리고 게임의 정상에 올랐는데 게임 자체가 바뀌어 버리는 일을 겪고 싶지 않다면, 게임이 어떻게 바뀌고 있는지에도 주의를 기울여야 합니다. 이는 흔히 한때 내 세상의 전부라고 생각했던 게임보다 더 큰 게임이 바깥에 있다는 사실을 깨닫는 형태로 나타납니다.
32.4 더 읽을거리
- Sarah Drasner: 배우는 법 배우기
- The Ladybug 팟캐스트: 배우는 법 배우기
- Cory House: 뇌를 프로그래밍하기: 세 단계로 배우는 학습의 기술
- 린디 라이브러리 예시:
- 엔지니어를 위한 리더십 라이브러리
- 제가 자주 곱씹는 프로그래밍 에세이
- Chris Coyier의 시대를 초월하는 웹 개발 글