- 개발자들이 문서를 검색할 때 95%는 간단한 예제만으로 충분하지만, 공식 소스에서 예제를 찾을 수 있는 경우는 5%에 불과
- 공식 기술 문서는 기본적으로 해당 생태계에 깊이 몰입한 사람을 대상으로 작성되어, 여러 프로젝트와 언어를 오가는 개발자들에게는 컨텍스트 복원에 상당한 정신적 에너지가 필요
- Python의
max()함수 문서를 보면 함수 정의 문법과 개념을 이해하기 위해 필요한 사전 지식이 많지만, 간단한 예제 5줄이면 즉시 이해 가능함 - Clojure 커뮤니티의 clojuredocs.org는 사용자 기여 예제를 통해 실용적인 문서를 제공하며, 관련 함수까지 포함하여 실제 활용도를 높인 모범 사례
- 주요 소프트웨어 프로젝트조차 4가지 유형의 문서를 제공하는 경우가 드물어, 개발자들은 튜토리얼을 찾게 되는데 이는 안내가 필요해서가 아니라 예제가 필요하기 때문
문서 검색 시 예제의 중요성
- 개발자들이 문서를 찾을 때 95%의 경우 단 한개의 예제만으로 충분
- 그러나 공식 소스에서 예제를 찾을 수 있는 경우는 5%에 불과
- 대부분의 공식 기술 문서는 생태계에 깊이 몰입한 사람을 기본 대상으로 작성됨
- 많은 개발자들은 일상적으로 여러 "세계"를 머릿속에서 저글링해야 함
- 프로젝트, 언어, 프레임워크 간 전환이 빈번
- 컨텍스트를 복원하고 상황을 이해하는 데 상당한 정신적 에너지 소모
Python 문서 사례 분석
- Python 3 문서의
max()함수 예시-
max(iterable, /, *, key=None): 가장 큰 항목 반환 - 이후 5개의 짧은 단락으로 설명 이어짐
-
- 이 문서를 이해하기 위해 알아야 하는 Python 지식
- 함수 정의에서
*의 의미 - 함수 정의에서
/의 의미 - "positional-only parameter separator"의 개념
- iterable의 개념
- keyword-only arguments의 개념
-
key파라미터의 일반적 의미
- 함수 정의에서
- 텍스트를 읽어야 어떤 값을 전달하고 함수를 실제로 호출하는 방법 이해 가능
간단한 예제의 효과
- 중요한 세부사항을 간결성을 위해 생략할 수 없다는 점은 인정
- 그러나 많은 개발자들이 해당 페이지를 찾는 이유는 단순히 max 함수에 커스텀 정렬 함수(key)를 전달하는 법을 빠르게 찾기 위함
- 아래와 같은 예시가 있다면 바로 원하는 정보를 얻을 수 있음
max(4, 6) # → 6 max([1, 2, 3]) # → 3 max(['x', 'y', 'abc'], key=len) # → 'abc' max([]) # ValueError: max() arg is an empty sequence max([], default=5) # → 5 - 예제를 통해 쉽고 직관적으로 이해 가능
Clojure 커뮤니티의 모범 사례
-
clojuredocs.org는 Clojure 커뮤니티 기반 프로젝트
- 사용자들이 내장 함수에 대한 예제 기여
- 일상적인 코딩에서 필수불가결한 리소스
- 예시 페이지들: into, spit, map 같은 것들 참고
- 예제의 특징
- 해당 함수뿐만 아니라 관련 함수들도 포함
- 실제 활용도와 실용성을 높임
현재 문서화의 한계
- 주요 소프트웨어 프로젝트조차 4가지 유형의 문서를 제공하는 경우가 드뭄
- 참고: Divio의 문서화 시스템
- "Documentation" 링크 클릭을 주저하게 되는 이유
- 대부분 간결하고 읽기 어려운 자동 생성 API 레퍼런스
- 개발자들이 튜토리얼을 찾는 실제 이유
- 안내가 필요해서가 아니라 예제가 필요하기 때문
- 튜토리얼이 예제를 포함하고 있어 더 유용함