기술책을 끝까지 읽지 못해도 남는 것
완독보다 중요한 것은 필요할 때 다시 펼칠 수 있는 한 페이지였다.
기술책을 살 때는 늘 끝까지 읽을 수 있을 것 같다. 첫 장을 펼칠 때의 나는 부지런하고, 집중력이 좋고, 이번에는 정말 다를 것 같은 사람이다. 하지만 며칠이 지나면 책갈피는 중간쯤에서 멈춘다. 업무가 바빠지거나 다른 공부가 끼어들고, 처음의 의욕은 자연스럽게 작아진다.
예전에는 읽다 만 책을 실패라고 생각했다. 책장에 꽂힌 두꺼운 책을 볼 때마다 하지 못한 숙제처럼 느꼈다. 그래서 어떤 책은 처음부터 끝까지 읽는 데만 집중했다. 이해가 되지 않아도 페이지를 넘겼고, 완독했다는 사실만 남겼다.
그런데 실무에서 다시 책을 펼쳐 보니 기억에 남은 것은 마지막 페이지가 아니었다.
한 번 이해한 그림
자료구조와 알고리즘 책을 읽을 때도 비슷했다. 모든 구현을 외우지는 못했다. 트리의 종류와 정렬 알고리즘의 복잡도가 한꺼번에 나오면 머릿속이 금세 복잡해졌다. 그래도 직접 코드를 옮겨 적고, 작은 입력값을 넣어 보고, 노트에 그림을 그려 본 부분은 오래 남았다.
나중에 코드를 작성하다 비슷한 문제가 나오면 정확한 문장은 기억나지 않아도 책에서 본 그림이 떠올랐다. “이 문제를 바라보는 다른 구조가 있었는데”라는 감각이 먼저 왔다. 그 감각만으로도 검색할 단어가 생겼고, 다시 책을 펼칠 위치를 찾을 수 있었다.
책 한 권이 내게 준 것은 정답 전체가 아니라 돌아갈 수 있는 좌표였다.
책을 사용하는 방식
그 뒤로 기술책을 대하는 방식이 조금 달라졌다. 순서대로 읽되 모든 페이지를 같은 무게로 붙잡지 않는다. 지금 하는 일과 맞닿는 부분에서는 오래 머물고, 당장 와닿지 않는 장은 표시만 해두고 지나간다. 예제는 눈으로만 읽지 않고 가능한 만큼 실행해 본다.
읽으면서 남기는 기록도 요약문보다 질문에 가까워졌다.
- 이 구조는 어떤 문제를 피하기 위해 생겼을까?
- 내가 지금 작성하는 코드에서는 어디에 적용할 수 있을까?
- 이 선택이 잘못되는 상황은 무엇일까?
질문을 적으면 책의 문장이 내 상황과 연결된다. 그대로 베껴 둔 문장은 금방 잊지만, 내 문제에서 출발한 질문은 시간이 지나도 다시 찾아보게 된다.
완독 바깥의 독서
물론 끝까지 읽는 경험은 좋다. 한 저자의 생각이 처음부터 끝까지 어떻게 이어지는지 알 수 있기 때문이다. 다만 완독만을 독서의 기준으로 삼으면 책을 너무 쉽게 성취 목록으로 바꾸게 된다.
요즘은 한 권을 다 읽었는지보다 그 책 때문에 무엇을 다르게 보게 됐는지를 생각한다. 변수 하나를 더 정확하게 이름 붙이게 됐거나, 익숙한 구현을 한 번 의심하게 됐거나, 문제가 생겼을 때 펼쳐 볼 페이지가 생겼다면 그 독서는 이미 역할을 했다.
책장에는 아직 읽다 만 책이 많다. 이제는 그 사실이 예전만큼 부끄럽지 않다. 필요할 때 다시 펼칠 수 있다면 그 책은 멈춘 것이 아니라 기다리고 있는 것에 가깝다.
