Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

기술 주제를 끝까지 파헤치는 법: 개발자를 위한 딥 다이브 가이드

버그 하나를 고쳤더니 열두 개의 새로운 버그가 생긴 경험이 있으신가요? 아니면 코드가 너무 이상한 방식으로 깨져서, 정말 내가 이 코드를 이해하고 있는 게 맞나 의심되는 순간이 있었을 겁니다. 그럴 때면 '이제 슬슬 제대로 깊이 파고들 때가 됐구나' 하는 생각이 듭니다.

하지만 깊이 공부해야 한다는 것을 아는 것은 첫 번째 단계일 뿐입니다. 그렇다면 실제로 하나의 주제를 근본부터 끝까지 익히려면 어떻게 해야 할까요? 지식이 몸에 자연스럽게 배어날 만큼 학습하려면 무엇부터 시작해야 할까요?

어디서부터 시작해야 할까?

학습을 시작할 수 있는 방법은 여러 가지가 있습니다. 하지만 저는 짧은 시간에 주제 전반을 빠르게 익혀야 할 때 책으로 시작하는 것을 가장 선호합니다. 예를 들어 git을 깊이 있게 공부하고 싶다면 Pro Git이라는 책이 딱 맞는 선택일 겁니다.

책이 딥 다이브에 적합한 이유는 포괄적이기 때문입니다. 대부분의 중간 규모 주제는 200~400페이지 분량의 책 하나로 상당히 잘 커버됩니다. 책을 다 읽었다고 해서 전문가가 되는 건 아니지만, 탄탄한 기초와 전체적인 이해를 갖추게 됩니다. 이후 소스 코드나 명세(specification)를 직접 읽어볼 때도 이 기초가 큰 도움이 됩니다.

하지만 굳이 책을 사고 싶지 않거나, 해당 주제를 다룬 책 자체가 없는 경우도 있습니다. 그럴 때는 어디를 찾아봐야 할까요?

공식 문서 활용하기

공식 문서(official documentation)는 훌륭한 대안입니다. Rails 같은 프레임워크의 특정 부분이나 OAuth 같은 웹 기술을 깊이 공부할 때 특히 잘 어울립니다.

프로젝트나 프레임워크라면 'The X Guide(s)' 형태로 된 가이드가 출발점으로 가장 좋습니다. 예를 들어 새 Rails 개발자에게는 Rails Guides를, Elixir 코드 작성법을 배우고 싶다면 Elixir Guides를 추천하는 경우가 많습니다.

물론 가이드가 블로그 글보다 훨씬 포괄적이긴 해도, 모든 것을 담고 있지는 않습니다. 대신 가이드를 RDoc 같은 레퍼런스(reference) 문서로 넘어가는 발판 삼으세요.

레퍼런스 문서는 '컨텍스트'와 함께

레퍼런스 자료는 메서드와 클래스를 담을 맥락(context)이 없으면 이해하기 매우 어렵습니다. 구조 없이 세부 정보만 나열된 느낌이라서죠. 그래서 저는 레퍼런스를 가이드나 책과 함께 병행할 때 가장 효과가 좋다고 생각합니다.

예를 들어 ActiveModel API 문서를 직접 파고드는 것만큼 ActiveModel을 확실하게 가르쳐 주는 것은 거의 없습니다. 하지만 ActiveModel 가이드가 있어야 그 내용 전체를 하나로 연결해 이해할 수 있습니다.

소스 코드 읽기

'거의 없다'고 말한 데에는 이유가 있습니다. 공식 문서보다 더 포괄적인 것이 딱 하나 있다면, 바로 소스 코드를 직접 읽는 것입니다. 다만 소스 코드 읽기는 책 읽기와 달리 경험과 연습, 그리고 어느 정도의 안내가 필요합니다. 가장 많은 세부 정보를 얻을 수 있는 방법인 건 사실이지만, 그렇다고 처음부터 시작할 곳은 아닙니다.

질문하며 빈틈 채우기

이렇게 여러 자료를 깊이 파고들고 나면 반드시 풀리지 않은 궁금증이 남습니다. 그럼 물어보세요! 라이브러리 저자는 누구보다 그 코드에 대한 멘탈 모델이 뛰어나므로, 자신의 설계 과정을 설명하며 도움을 줄 수 있습니다. 많은 오픈소스 프로젝트와 프레임워크 저자들이 Slack이나 IRC를 통해 접근 가능한 채널을 열어두고 있으며, 보통 프로젝트 페이지에서 관련 정보를 확인할 수 있습니다.

저자에게 직접 접근하기 어렵다면? 그래도 질문할 곳은 있습니다. 동료나 시니어 개발자에게 물어보세요. 친구에게 단 하나의 미해결 질문을 던졌을 뿐인데 나머지 퍼즐이 한꺼번에 맞춰진 경험을 생각보다 자주 합니다.

딥 다이브 학습 순서 정리

깊이 공부해야겠다고 판단했다면, 다음과 같은 순서로 시작하는 것을 추천합니다. 제가 평소 따르는 순서는 다음과 같습니다:

  1. 책 또는 공식 가이드
  2. 공식 레퍼런스 문서(RDoc 등) 또는 명세/RFC
  3. 소스 코드

그리고 그 사이의 빈틈은 질문으로 채웁니다. 가장 빠른 방법은 아니지만, 폭과 깊이의 균형이 가장 잘 잡힌 조합이라고 생각합니다.

평소 주제를 깊이 파고드는 습관이 있으신가요? 그렇다면 어떤 자료가 가장 큰 도움이 되었는지 궁금합니다. 댓글로 알려주세요!