우연히 "야크 털 깎기"라는 단어를 접하게 되었다.
무슨뜻인고 하고 찾아보고 읽어보니 개발 뿐만 아니라 언제나 잘 새겨두어야 겠다는 생각이 들었다.
처음 단어를 들었을 때 무슨 말인지 감이 잡히지 않았다
그래서 뜻을 찾아보니
야크 털 깎기는 MIT AI Lab에서 박사과정을 밟던 대학원생 칼린 비에리(Carlin Vieri)가 만든 용어로
"어떤 목적을 달성하기 위해 원래 목적과 전혀 상관없는 일들을 계속해야 하며 그중 마지막 작업" 이라는 뜻이었다.
그니깐 결국 삽질하고있다 는 뜻 ㅎ,,
🎄LangDev IRC 채널에서 나온 예시를 보자!
- 나무를 베기 위해 도끼를 구했다.
- 도끼날이 너무 무뎌 날을 갈기 위한 돌을 구하려 한다.
- 그런데 어떤 마을에 정말 좋은 돌이 있다는 이야기를 듣는다.
- 그 마을에 가기 위해 야크를 구한다.
- 야크 털이 너무 길어서 털을 깎기 시작한다.
🎄또 유명한 기업가이자 마케터, 작가인 세스 고딘(Seth Godin)의 예시도 봐보자!
- “오늘은 세차를 해야겠어.”
- “이런, 호스가 망가졌네. 홈디포에서 새 호스를 사야겠군.”
- “하지만 홈디포는 태펀지 다리 건너편에 있지. 톨게이트를 지나야 하니까 이지패스가 필요해.”
- “잠깐! 이웃에게 이지패스를 빌릴 수 있을 것 같은데…”
- “그렇지만 밥은 내 아들이 빌린 베개를 돌려주기 전까지 이지패스를 빌려주지 않을거야.”
- “베개의 야크 털이 많이 빠져서 그냥 돌려줄 수 없네. 야크 털을 다시 채워야겠어.”
- 결국 세차를 하기 위해 동물원에서 야크 털을 깎기 시작한다.
위처럼 재미있는 예시들이 있다.
이는 "야크 털 깎기" 라는 용어가 만들어진 다음에 나온 것이고 , 실제 용어가 탄생한 계기는 따로 있다고 한다.
실제 사례가 궁금하면 아래 참고 사이트에 들어가서 자세한 내용을 읽어봐도 좋을것 같다!!
이제 Software 개발과 연관 시켜보자.
개발중에 저는 이런 상황을 많이 겪고 주위에서도 겪는 것을 자주 볼 수 있다.
프로젝트중에 "야크 털 깍기"를 주의해야 하하는데
이유는 원래 목적이 무엇인지 잃어 버리고 엉뚱한 일을 하면서 엄청난 시간을 까 먹을수 있기 때문이다.
물론 가끔 가다가 의도하지 않은 좋은 결과를 얻기도 하고 새로운 제품을 만들수도 있겠지만 정해진 기한과 목표물이 있는 프로젝트에서는 "야크 털 깍기"를 주의해야 한다...
특히 프로젝트에 어떤 기능이 필요할 경우 무작정 구현부터 하는 경우를 많이 보았는데 해당 기능이 필요하다고 꼭 구현해야 하는 것은 아니며 잘 검증된 외부 라이브러리나 제품을 먼저 검토해 보는 것이 필요합니다.
하지만 프로세스나 체계가 없어서 이를 위해서 어쩔수 없이 "야크 털 깎기" 를 해야 하는 경우도 있습니다.
예로 소스 품질이 안 좋아서 테스트 코드를 작성하고 자동화된 테스트를 수행해서 품질을 높이려고 Test Framework 을 도입할 수 있다.
보통의 경우를 보자
- 프로젝트에서 사용하는 JDK 의 버전이 낮아서 Test Framework 를 지원 안 함
- JDK 를 높였더니 담당자가 퇴사한 공통 코드에서 뻑이 나서 그걸 수정
- 구동했더니 WAS 에서 뻑이 나서 원인 파악후 WAS 업그레이드
- WAS 업그레이드후 상용 3rd party library 에서 문제 발생
- 3rd party 업체에 기술 지원 요청했더니 처음 보는 현상이라고 본사 연구소에 escalation 했는데 처리까지 몇 달 걸린다고 함.
담당자는 나름 품질을 높이고 리스크를 줄이기 위해 자동화 테스트를 하려고 한거지만 프로세스가 엉망일 경우 저렇게 야크털만 깎는 결과를 가져올 수도 있다.
모든 "야크 털깍기"가 의미가 없는 것은 아니다.
가장 유명한 성공 사례로는 도널드 크누스(Donald E. Knuth) 교수의 TeX 을 들수 있습니다.
"The Art of Computer Programming" 을 저술중에 조판 시스템과 폰트가 맘에 안 들어서 메타 폰트와 조판 시스템을 만드는데 몇 년을 사용했고 그 결과물로 TeX 이라는 역사상 버그가 가장 적다는 문서작성 도구를 만들어 냈고 이를 사용하고 저술을 마무리했습니다.
요약해보자
좋게 이야기 하면 시행착오를 거쳐 뛰어난 결과물이 나올 수 있지만
목표가 뚜렷하지 않으면 금방 할 일을 삽질을 하며 빙빙 돌아갈 수 있으니 주의 하자 정도로 생각하면 될것같다..!
내가 이해한게 맞는지는 모르겠지만 항상 새기고 살아야겠다.
🧿https://parksb.github.io/article/32.html
🧿https://www.lesstif.com/software-engineering/yak-shaving-29590364.html