강연자는 두 가지 주요 코드 읽기 모드와 세 가지 핵심 원칙을 제시합니다. 첫 번째 모드인 ‘미리 읽기(Ahead of Time Reading)’는 준비와 연습을 위한 능동적인 읽기 방식입니다. GitHub와 같은 플랫폼에서 관심 있는 Gem이나 저장소를 열어 코드를 탐색하며 새로운 지식을 습득하는 것이 특징입니다. 이는 나중에 코드를 작성하거나 ‘즉시 읽기’ 상황에 대비하는 데 도움이 됩니다. 강연자는 Rails의 Active Support
라이브러리에서 blank?
와 present?
메서드를 읽으며 학습했던 경험을 예시로 들며, 모든 코드를 100% 이해할 필요는 없으며, 열린 소스 코드의 이점을 활용하여 필요한 부분을 읽고 나중에 다시 돌아오는 유연한 접근 방식이 중요하다고 강조합니다. 두 번째 모드인 ‘즉시 읽기(Just In Time Reading)’는 버그 해결이나 Gem 업그레이드와 같이 즉각적인 필요가 발생했을 때 수행하는 반응적인 읽기 방식입니다. bundle open
명령어를 사용하여 현재 프로젝트에서 사용하는 특정 버전의 Gem 코드를 직접 열어보는 것이 효과적입니다. 강연자는 audited
Gem과 ActionText
간의 충돌 문제를 디버깅했던 경험을 예로 들며, YAML
직렬화 방식과 ActionText::Content
의 내부 동작을 탐색하여 문제의 원인을 파악하는 과정을 설명했습니다. 이 모드는 스트레스가 많을 수 있으므로 ‘미리 읽기’를 통해 쌓은 지식이 도움이 됩니다.
효과적인 코드 읽기를 위한 세 가지 원칙은 다음과 같습니다. 첫째, ‘그냥 클릭해보기(Just Click Things)’입니다. 호기심을 가지고 코드를 탐색하고, 메서드나 파일 등 보이는 대로 클릭하며 어떤 일이 일어나는지 확인합니다. 특정 목적 없이 흥미를 따라가며 새로운 것을 발견하는 것이 중요합니다. 둘째, ‘중립 유지하기(Remain Neutral)’입니다. 복잡하거나 이해하기 어려운 코드를 만났을 때 자신을 비난하거나 좌절하지 않습니다. “내가 이걸 알아야 하는데”, “너무 마법 같다”와 같은 부정적인 생각은 학습을 방해합니다. 새로운 음악을 듣는 것처럼 ‘좋은지 아닌지’만 판단하며, 그저 읽어보고 무슨 일이 일어나는지 관찰하는 태도를 유지해야 합니다. 지식은 맥락에서 오며, 꾸준한 읽기를 통해 이 맥락을 구축할 수 있습니다. 셋째, ‘계속 다시 돌아오기(Keep Coming Back)’입니다. 코드 읽기는 일회성 작업이 아닌 지속적인 연습입니다. 앞서 언급한 두 원칙은 읽기 과정을 즐겁고 부담 없이 유지하여 꾸준히 다시 돌아올 수 있도록 돕습니다. 연습을 통해 새로운 코드를 더 빠르게 파악하고, 새로운 개념을 습득하며, 자신만의 읽기 방식을 발전시킬 수 있습니다.
강연자는 MiniTest 소스 코드를 읽으면서 ‘폴리모피즘(Polymorphism)’이라는 객체 지향 개념을 스스로 발견하고 이해하게 된 경험을 공유했습니다. 이는 여러 타입이 동일한 메서드와 인터페이스에 반응하는 방식으로, 코드를 더욱 유연하고 확장 가능하게 만듭니다. 이러한 경험은 대학에서 배우는 개념을 실제 코드에서 직접 체득하는 것의 중요성을 보여줍니다.