# 하지만 yak shaving은 재미있다

> Clean Markdown view of GeekNews topic #30578. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=30578](https://news.hada.io/topic?id=30578)
- GeekNews Markdown: [https://news.hada.io/topic/30578.md](https://news.hada.io/topic/30578.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-06-17T20:02:36+09:00
- Updated: 2026-06-17T20:02:36+09:00
- Original source: [parksb.github.io](https://parksb.github.io/en/article/32.html)
- Points: 2
- Comments: 2

## Topic Body

- 블로그를 자유롭게 커스터마이즈하려다 HTML 작성, JSON 글쓰기, Markdown 변환, 컴파일·배포 도구까지 만들게 되었고 결국 **정적 사이트 생성기**를 직접 구현한 경험으로 이어짐
- **yak shaving**은 한 목표를 위한 연쇄 작업이 원래 목적과 멀어지는 상황을 뜻하며, MIT AI Lab의 Carlin Vieri가 만든 표현임
- 엔지니어와 관리자는 기성 솔루션이 마음에 들지 않거나 요구사항과 맞지 않는다고 느낄 때 **처음부터 만들기**의 함정에 빠지기 쉬움
- 제한된 예산과 시간 안에서는 직접 구현의 즐거움보다 핵심 요구를 만족하는 **대안 선택**과 작업량 축소가 더 중요할 수 있음
- Donald Knuth의 TeX처럼 큰 성과로 이어지는 경우도 있지만, 대부분의 yak shaving은 실패할 수 있으며 학습한 것이 있다면 그 자체로 **가치가 있음**

---

### 직접 만든 블로그가 정적 사이트 생성기로 이어짐
- [Jekyll](https://jekyllrb.com/), [Hugo](https://gohugo.io/), [Gatsby](https://www.gatsbyjs.org/) 같은 정적 사이트 생성기나 프레임워크를 쓰지 않음
- 처음에는 몇 가지 도구를 써봤지만 커스터마이징 자유도가 부족하다고 느껴 직접 만들기로 함
- HTML로 글을 쓰는 방식은 불편했고, 이를 해결하려고 JSON 파일 기반 글쓰기 시스템을 만들었지만 긴 글에는 다시 어색했음
- 이후 Markdown 파일을 HTML로 변환하는 서비스와 결과 파일을 컴파일·배포하는 도구까지 만들면서, 결국 [정적 사이트 생성기](https://github.com/ParkSB/handmade-blog)를 처음부터 만든 셈이 됨

### yak shaving의 의미와 유래
- **yak shaving**은 하나의 목표를 위해 관련 작업을 계속 따라가다가 원래 목적을 잃고 전혀 다른 일을 하게 되는 상황을 뜻함
- LangDev IRC의 예시는 도끼로 나무를 베려다 도끼를 갈 돌을 찾고, 좋은 돌이 있는 마을에 가기 위해 yak을 구하고, yak의 털이 길어 결국 털을 깎게 되는 흐름임
- Seth Godin의 예시는 세차에서 시작해 호스, Home Depot, E-ZPass, 이웃의 E-ZPass, 빌린 베개 문제를 거쳐 동물원에서 yak 털을 깎는 이야기로 이어짐
- 이 표현은 Carlin Vieri가 MIT AI Lab에서 만든 말임
  - Vieri는 화요일 밤늦게 하키를 한 뒤 한밤중에 저녁을 먹으며 The Ren & Stimpy Show의 Yak Shaving Day 에피소드를 봄
  - 며칠 뒤 행정 허가, DHL 계정 설정, 우체국 찾기 같은 서류 작업을 하며 동료에게 자신이 yak shaving을 하고 있다고 말함
  - 이후 몇 달 동안 연구실 사람들에게 이 표현을 계속 쓰면서 퍼짐

### 처음부터 만들기의 위험
- 엔지니어나 엔지니어링 팀을 운영하는 관리자가 자주 저지르는 실수 중 하나가 **처음부터 만들기**임
- 엔지니어는 기성 솔루션이 마음에 들지 않거나 자신의 실력을 증명하고 싶을 수 있음
- 고객이나 관리자는 기존 솔루션이 무엇을 하는지 잘못 이해하거나, 요구사항을 정확히 만족하지 않는다고 판단할 수 있음
- 대부분의 프로젝트는 제품 개발이든 토이 프로젝트든 **예산과 시간**이 제한되어 있음
- 직접 만들기 시작하면 yak shaving으로 번지기 쉽고, 한번 들어서면 어디서 끝날지 알 수 없으며 원래 목표를 포기하게 될 수도 있음
- 이런 상황에서는 요구사항의 핵심을 만족하는 대안을 찾고, 작업을 가능한 한 줄이는 편이 적절함

### 그래도 yak shaving이 재미있는 이유
- yak shaving은 무언가를 직접 만드는 즐거움 때문에 쉽게 끊기 어려움
- 없던 것을 만들고, 문제를 발견해 해결하고, 어떤 것이 어떻게 동작하는지 이해하려고 **지식의 사슬**을 파고드는 과정이 엔지니어를 끌어당김
- 엔지니어가 아니어도 원하는 것을 직접 만든다는 발상 자체는 매력적임
- Frederick P. Brooks Jr.는 『The Mythical Man-Month』에서 프로그래밍이 재미있는 이유를 다음처럼 정리함
  - 무언가를 만드는 순수한 즐거움
  - 다른 사람에게 유용한 것을 만드는 즐거움
  - 서로 맞물려 움직이는 복잡한 퍼즐 같은 대상을 만들고, 그 규칙이 미묘한 순환 속에서 작동하는 것을 보는 매력
  - 계속 배우는 즐거움
  - 유연하고 다루기 쉬운 표현 매체로 작업하는 즐거움

### TeX라는 성공한 yak shaving
- **TeX**도 yak shaving에서 태어난 사례임
- TeX는 Stanford 교수 Donald Knuth가 만든 조판 시스템이며, 조판 언어와 이를 처리하는 컴파일러를 포함해 프로그램이 돌아가는 전체 시스템을 가리킴
- 수식을 쉽게 입력할 수 있어 사회과학, 과학, 공학 분야에서 널리 쓰이며, 대부분의 사용자는 TeX를 더 쉽게 쓰기 위한 매크로 집합인 [LaTeX](https://www.latex-project.org/)를 사용함
- Donald Knuth는 1976년 『The Art of Computer Programming』 2권 2판을 준비하면서 1판에 쓰였던 활자 조판을 원했지만 더는 사용할 수 없었음
- 대안에 만족하지 못한 Knuth는 Patrick Winston의 디지털 조판 책을 보고 직접 디지털 조판 시스템을 만들기로 결심함
- Knuth는 TeX 첫 버전을 SAIL 언어로 만들고, 이후 자신이 만든 WEB 언어로 개발해 완성함
  - WEB 소스는 문서와 코드를 함께 섞는 방식임
  - Weave와 Tangle 프로그램으로 WEB 파일에서 각각 TeX 파일과 Pascal 파일을 추출할 수 있음
  - Knuth는 이 프로그래밍 패러다임을 [literate programming](http://www.literateprogramming.com/knuthweb.pdf)이라고 부름
- Knuth는 Michael Plass와 함께 문단에서 줄을 어디서 나눌지 결정하는 [Knuth-Plass 줄바꿈 알고리듬](https://www.students.cs.ubc.ca/~cs-490/2015W2/lectures/Knuth.pdf)도 고안함
- TeX용 글꼴인 Computer Modern을 설계하고, 벡터 그래픽을 정의하는 언어 METAFONT를 만들었으며, 특정 장치에 의존하지 않고 TeX 결과를 출력하기 위한 DVI 형식도 개발함
- 책을 쓰기 위해 프로그래밍 언어, 패러다임, 알고리듬, 도구, 글꼴을 만든 셈이며, TeX 제작에는 거의 10년이 걸렸고 책도 그만큼 늦게 나왔지만 헛된 노력은 아니었음

### 실패와 학습 사이
- TeX는 극단적인 성공 사례이며, 대부분의 yak shaving은 실패함
- 적절한 지점에서 멈춰야 하지만 이미 들인 시간이 아깝거나 yak shaving 자체가 재미있어서 그만두기 어려움
- 끝까지 해야 하는 경우에도 “지금 내가 뭘 하고 있는 거지?”라는 생각이 들며 흥미가 식거나, 프로젝트에 배정된 자원이 바닥나 중단될 수 있음
- 학습하려는 사람에게 yak shaving은 매우 효과적일 수 있음
- 많은 컴퓨터공학 수업은 교수의 의도와 무관하게 어느 정도의 yak shaving을 요구하며, 과제 본문보다 주변 지식을 파고들면서 더 많은 것을 얻을 때도 있음
- yak shaving 방식으로 컴퓨팅 시스템을 만들려면 Boolean logic, 논리 회로, 컴퓨터 구조, 프로그래밍 언어, 운영체제까지 공부해야 함
- Noam Nisan과 Shimon Schocken의 [The Elements of Computing Systems](https://blog.insightbook.co.kr/2019/03/29/%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0-%EB%A7%8C%EB%93%9C%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%8C%85-%EC%8B%9C%EC%8A%A4%ED%85%9C/)는 바로 이런 과정을 따라감
- 끝까지 도달하지 못하더라도 yak을 깎는 동안 무언가를 배웠다면 그것만으로도 가치가 있음

## Comments



### Comment 59828

- Author: unsure4000
- Created: 2026-06-17T22:07:53+09:00
- Points: 1

한국어 버전 포스트가 원본으로 보입니다  
  
<https://parksb.github.io/article/32.html>

### Comment 59822

- Author: neo
- Created: 2026-06-17T20:02:38+09:00
- Points: 1

###### [Lobste.rs 의견들](https://lobste.rs/s/zpjomk/yak_shaving_is_fun) 
- **야크 털 깎기**는 재미있지만, 어느 정도의 재귀 깊이나 노력 한계를 정해 두고 거기에 도달하면 멈춰야 함

- 거의 아무도 안 쓰는 표현을 만들어 놓고 모두가 아는 용어인 것처럼 쓰는 게 정말 거슬림. Reddit 이용자들이 특히 이런 걸 잘하고, 무슨무슨 법칙을 계속 인용함  
  이 용어의 MIT 출처는 찾았음: https://projects.csail.mit.edu/gsb/old-archive/gsb-archive/gsb2000-02-11.html
  - 항상 처음 듣는 사람은 있기 마련이지만, **yak shaving**은 우리 분야에서 꽤 흔한 표현임. 검색해 보면 사용례가 엄청 많이 나옴
  - 글은 시작하자마자 그 용어를 정의하고 있고, 꽤 잘 설명했다고 봄
  - 몰랐던 관용구를 배우는 건 오히려 **재미있는 일** 아닌가 싶음. 실시간으로 따라가지 못하면 불리한 대면 대화도 아니니까  
    자기 지평 밖의 것을 접하지 않으면 어떻게 지평을 넓힐 수 있겠나 싶음
  - 아직 아무도 이 말을 안 했다니 믿기 어렵지만, Yak shaving은 완전히 **cromulent한 표현**임
