학습의 구조

컴퓨터처럼 공부하기 — 빠른 학습의 구조

낯선 분야를 며칠 안에 배워야 할 때 사람들은 입력 속도부터 높인다. 책장을 빨리 넘기고, 영상을 배속으로 보고, 메모를 많이 남긴다. 하지만 짧은 시간에 제대로 배웠다는 것은 많이 봤다는 뜻이 아니다. 자료를 덮고 설명할 수 있고, 다른 문제에도 써볼 수 있어야 한다.

컴퓨터도 비슷한 제약을 안고 있다. 메모리는 한정되어 있고, 탐색할 곳은 많으며, 모든 데이터를 가까이에 둘 수는 없다. 그래서 컴퓨터는 정보를 무작정 쌓기보다 탐색 순서와 배치, 검증과 접근 경로를 관리한다.


BFS와 DFS — 깊이는 지도가 생긴 뒤에

너비 우선 탐색(BFS)은 출발점 주변을 넓게 훑고, 깊이 우선 탐색(DFS)은 한 갈래를 끝까지 따라간다. 하나는 지도를 넓히고 다른 하나는 목적지까지 길을 낸다. 좋은 탐색은 둘 중 하나를 고집하지 않는다.

새로운 분야를 만나면 먼저 목차와 주요 용어, 대표 문제를 훑는다. 모든 내용을 이해하려는 것이 아니라 무엇이 핵심이고, 어떤 개념들이 서로 의존하는지 보는 것이다. 그다음 지금의 이해를 막고 있는 한 지점을 골라 깊이 들어간다. 넓게만 보면 아는 것이 없고, 깊게만 보면 왜 배우는지를 잃는다. 빠른 학습은 이 둘을 바꾸는 시점에서 갈린다.


청킹 — 함께 쓸 지식을 가까이 두기

CPU는 요청받은 값 하나만 가져오지 않는다. 근처의 데이터도 캐시 라인이라는 덩어리로 함께 불러온다. 가까운 주소를 곧 다시 사용할 가능성이 높다는 공간 지역성(Spatial Locality)을 이용하는 것이다. 그래서 개발자는 함께 쓰는 데이터는 가까이 두고, 잘 쓰지 않는 데이터는 그 주변에서 치운다.

인지심리학의 청킹도 여러 정보를 의미 있는 하나의 단위로 다루는 방법이다. 다만 정의 몇 개를 같은 제목 아래 모았다고 청크가 되지는 않는다. 예를 들어 수요와 공급을 배운다면 정의뿐 아니라 가격이 변할 때 누가 어떻게 반응하는지, 이 설명이 언제 어긋나는지까지 함께 떠올라야 한다. 좋은 청크는 정보의 묶음이 아니라 실제로 함께 꺼내 쓸 수 있는 지식의 묶음이다.


지역해와 전역해 — 익숙함을 이해로 착각하지 않기

경사하강법은 현재 위치에서 오차가 줄어드는 방향으로 이동한다. 빠르고 효율적이지만 눈앞의 경사만 볼 수 있다. 가까운 골짜기에 도착하고도 지형 전체에서 가장 낮은 곳을 찾았다고 생각할 수 있다.

학습에서 지역해는 완전히 틀린 지식이 아니다. 방금 본 예제에는 잘 맞아서 더 위험한 설명이다. 같은 내용을 반복해서 읽으면 점점 매끄럽게 느껴지는데, 우리는 이 익숙함을 이해로 착각하기 쉽다. 자료를 덮고 다른 사례를 설명하거나 반례를 넣어 보면 둘의 차이가 드러난다. 더 읽는 것보다 질문의 조건을 한 번 바꾸는 편이 현재의 이해를 더 정확하게 보여줄 때가 있다.


포인터 — 세부를 복사하지 않고 길을 남기기

포인터는 데이터를 복사하는 대신 데이터가 있는 곳을 가리킨다. 개발자는 포인터를 이용해 데이터들이 서로 연결되는 방식을 설계한다. 같은 데이터라도 무엇을 먼저 찾고 어떤 관계를 따라가야 하는지에 따라 서로 다른 자료구조가 된다.

사람의 기억에도 무언가를 다시 불러오는 단서가 필요하다. “언젠가 읽은 적이 있다”는 기억은 주소가 빠진 포인터와 비슷하다. 반면 이 개념이 무엇을 설명하고, 무엇과 대비되며, 세부 근거를 어디에서 확인할 수 있는지 알고 있다면 정확한 내용은 밖에 두어도 된다. 좋은 메모는 원문을 복사한 창고가 아니라, 필요한 지식까지 헤매지 않고 돌아갈 수 있는 경로다.


빠른 학습의 속도

컴퓨터처럼 공부한다는 것은 기술 용어를 학습법에 하나씩 붙이는 일이 아니다. 제한된 시간 안에서 어디를 볼지 고르고, 함께 사용할 지식을 묶고, 현재의 이해를 다른 조건에서 시험하고, 세부사항으로 돌아갈 길을 남기는 일이다.