자유로운 블로그 커스터마이징을 꿈꾸던 한 개발자가 결국 자신만의 정적 사이트 생성기(static site generator)를 만들게 된 흥미로운 경험을 공유했습니다. 이는 '야크 털 깎기(yak shaving)'라는 현상을 잘 보여주는 사례로, 하나의 주된 목표를 달성하기 위해 필요한 부수적인 작업들이 꼬리에 꼬리를 물고 이어지다 결국 원래 목적과는 거리가 먼 새로운 무언가를 만들게 되는 상황을 의미합니다.
이 개발자는 처음 몇 가지 도구를 사용해봤지만 커스터마이징 자유도가 부족하다고 느껴 직접 만들기로 결심했습니다. HTML로 글을 쓰는 불편함을 해소하기 위해 JSON 기반 글쓰기 시스템을 만들었고, 이어서 마크다운(Markdown) 파일을 HTML로 변환하는 서비스와 결과물을 컴파일(compile)하고 배포(deploy)하는 도구까지 개발하면서 사실상 자신만의 정적 사이트 생성기를 처음부터 구현하게 된 것입니다. '야크 털 깎기'라는 표현은 MIT AI Lab의 칼린 비에리(Carlin Vieri)가 만든 것으로, 도끼를 갈기 위해 돌을 찾고, 돌을 찾기 위해 야크를 구하고, 결국 야크 털을 깎게 되는 비유에서 유래했습니다.
이러한 '처음부터 만들기(build from scratch)'의 유혹은 엔지니어들이 흔히 겪는 일입니다. 기성 솔루션이 마음에 들지 않거나, 자신의 실력을 증명하고 싶거나, 혹은 기존 솔루션이 요구사항을 정확히 만족하지 못한다고 판단할 때 직접 구현의 길로 들어서기 쉽습니다. 도널드 크누스(Donald Knuth) 교수가 자신의 책을 조판하기 위해 TeX라는 조판 시스템을 직접 만들고, 이 과정에서 프로그래밍 언어, 알고리듬, 글꼴까지 개발하며 10년 가까이 매달린 사례는 '야크 털 깎기'가 큰 성공으로 이어진 극단적인 예시입니다.
하지만 대부분의 '야크 털 깎기'는 TeX처럼 극적인 성공으로 이어지기보다는 실패하거나 중단되는 경우가 많습니다. 제한된 예산과 시간 속에서 직접 구현의 즐거움에 빠져들다 보면 원래 목표를 놓치거나 자원이 고갈될 수 있기 때문입니다. 그럼에도 불구하고 많은 개발자들이 이 과정에서 무언가를 만들고, 문제를 해결하고, 지식의 사슬을 파고들며 배우는 즐거움을 느끼기에 쉽게 멈추지 못합니다.
결론적으로 '야크 털 깎기'는 개발자에게 깊은 학습과 성취감을 제공하는 동시에, 프로젝트의 효율성과 목표 달성을 저해할 수 있는 양면성을 가집니다. 엔지니어와 관리자는 기성 솔루션의 한계를 명확히 인지하고, 핵심 요구사항을 충족하는 대안을 신중하게 선택하며, 작업 범위를 가능한 한 줄이는 지혜가 필요합니다. 하지만 이 과정에서 얻는 지식과 경험은 설령 프로젝트가 실패하더라도 그 자체로 가치 있는 자산이 될 수 있습니다.