Don’t Shave Yaks,别给耗牛剪毛
Don’t Shave Yaks
Finally, don’t allow your automation side project to turn into yak shaving. Yak shaving is part of the official jargon file for computer science. It describes this scenario:
-
You want to generate documentation based on your Subversion logs.
-
You try to add a Subversion hook only to discover that the Subversion library you have is incompatible and therefore won’t work with your web server.
-
You start to update your web server, but realize that the version you need isn’t supported by the patch level of your operating system, so you start to update your operating system.
-
The operating system upgrade has a known issue with the disk array the machine uses for backups.
-
You download an experimental patch for the disk array that should get it to work with your operating system, which works but causes a problem with the video driver.
At some point, you stop and try to remember what got you started down this road. You come to the realization that you are shaving a yak, and you stop to try to figure out what shaving a yak has to do with generating documentation for Subversion logs.
Yak shaving is dangerous because it eats up a lot of time. It also explains why estimating tasks is so often wrong: just how long does it take to fully shave a yak? Always keep in mind what you are trying to achieve, and pull the plug if it starts to spiral out of control.
From Neal Ford "The Productive Programmer"
最后, 别让自动化的努力变成剪牦牛毛(yak shaving)——这是一句在计算机科学界源远流长的行话,它代表了诸如此类的情况:
- 你打算根据Subversion日志自动生成一些文档。
- 你尝试给Subversion加上一个钩子,然后发现当前使用的Subversion版本与你的Web服务器不兼容。
- 你开始更新Web服务器的版本,然后又发现这个新版本在操作系统当前的这个补丁级别上不被支持,于是你开始更新操作系统。
- 操作系统的更新包存在一个已知的问题,与用于备份的磁盘阵列不兼容。
- 你下载了尚未正式发布的针对磁盘阵列的操作系统补丁,它应该能用。它确实能用,但又导致显卡驱动出问题了。
剪牦牛毛是件危险的事,因为它会吃掉你大把的时间。...始终牢记你到底要做什么,如果情况开始失控就及时抽身而出。