코드 없는 라이브러리 ‘whenwords’
whenwords는 유닉스 타임스탬프를 ‘3시간 전’과 같은 인간 친화적인 문자열로 변환하는 5가지 함수를 제공합니다. 이 라이브러리는 코드가 전혀 없으며, 다음 요소로 구성됩니다.
-
SPEC.md: 라이브러리 동작 및 구현 방법에 대한 상세 설명
-
tests.yaml: 언어 독립적인 입출력 쌍으로 정의된 테스트 케이스 목록
-
INSTALL.md: AI 에이전트(예: Claude, Codex)에게 구현을 지시하는 간단한 프롬프트
저자는 Claude Opus 4.5와 같은 AI 코딩 에이전트의 뛰어난 능력 덕분에 whenwords가 Ruby를 비롯한 다양한 언어로 단번에 구현될 수 있었음을 언급하며, 이는 ‘코딩이 무료가 될 때 소프트웨어 엔지니어링은 어떤 모습일까?’라는 근본적인 질문을 던집니다.
코드 기반 라이브러리가 여전히 필요한 5가지 이유
저자는 whenwords와 같은 단순 유틸리티의 경우 스펙 기반 접근 방식이 유용할 수 있지만, 다음 5가지 이유로 인해 코드 기반 라이브러리가 여전히 중요하다고 주장합니다.
1. 성능 (Performance Matters)
브라우저 구현과 같이 성능이 극도로 중요한 경우, 스펙만으로는 최적화된 성능을 달성하기 어렵습니다. 수많은 사용자가 다양한 환경에서 발생시키는 문제를 코드로 해결하고 최적화해야 합니다.
2. 복잡한 테스트 (Testing is Complicated)
스펙 변경이 여러 언어 및 여러 AI 에이전트 구현에 미치는 영향을 검증하는 것은 매우 복잡해질 수 있습니다. whenwords의 125개 테스트와 달리 SQLite의 51,445개 테스트를 스펙만으로 관리하기는 어렵습니다.
3. 지원 및 버그 수정 (Need to Provide Support & Bug Fixes)
AI가 생성한 코드베이스에서 버그를 재현하고 수정하는 것은 거의 불가능합니다. 모델의 확률적 특성 때문에 스펙이 커질수록 구현 간의 차이가 커질 수 있습니다.
4. 업데이트의 중요성 (Updates Matter)
보안 업데이트나 새로운 기능 추가가 빈번한 라이브러리(예: LiteLLM, Nginx, Rails, Postgres)의 경우, 지속적인 관리와 업데이트가 필수적입니다. 스펙 전용 라이브러리는 ‘한 번 구현하고 잊는’ 유틸리티에 더 적합합니다.
5. 커뮤니티 및 상호 운용성 (Community & Interoperability Matter)
오픈 소스 커뮤니티는 버그 발견, 수정, 테스트, 지원, 코드 업데이트 등 소프트웨어의 생명주기 전반에 걸쳐 핵심적인 역할을 합니다. 코드는 단순한 스펙의 구현을 넘어 사람과 문화의 산물이며, 이는 견고한 소프트웨어 구축에 필수적입니다.