Pero el yak shaving es divertido
(parksb.github.io)- Al intentar personalizar libremente su blog, terminó creando desde escritura en HTML, redacción en JSON y conversión de Markdown hasta herramientas de compilación y despliegue, lo que finalmente lo llevó a implementar por su cuenta un generador de sitios estáticos
- yak shaving se refiere a una situación en la que una cadena de tareas para lograr un objetivo termina alejándose del propósito original; es una expresión creada por Carlin Vieri del MIT AI Lab
- Los ingenieros y gerentes suelen caer fácilmente en la trampa de construir desde cero cuando sienten que una solución existente no les convence o no encaja con los requisitos
- Con presupuestos y tiempo limitados, puede ser más importante que la diversión de implementarlo uno mismo elegir una alternativa que satisfaga los requisitos clave y reducir la carga de trabajo
- A veces puede llevar a grandes resultados, como con TeX de Donald Knuth, pero la mayoría de los casos de yak shaving pueden fracasar, y si se aprendió algo en el proceso, eso en sí mismo ya tiene valor
Un blog hecho a mano terminó convirtiéndose en un generador de sitios estáticos
- No usa generadores de sitios estáticos ni frameworks como Jekyll, Hugo, Gatsby
- Al principio probó algunas herramientas, pero sintió que no ofrecían suficiente libertad de personalización, así que decidió hacerlo él mismo
- Escribir artículos en HTML era incómodo, y para resolverlo creó un sistema de escritura basado en archivos JSON, pero volvió a sentirse poco natural para textos largos
- Después terminó creando también un servicio para convertir archivos Markdown a HTML y herramientas para compilar y desplegar los archivos resultantes, así que al final acabó construyendo desde cero un generador de sitios estáticos
Significado y origen de yak shaving
- yak shaving se refiere a la situación en la que, al seguir encadenando tareas relacionadas para alcanzar un objetivo, se pierde el propósito original y se termina haciendo algo completamente distinto
- El ejemplo de LangDev IRC describe cómo alguien quiere cortar un árbol con un hacha, luego necesita encontrar una piedra para afilarla, después conseguir un yak para llegar a un pueblo donde hay buenas piedras y, como el yak tiene el pelo largo, termina afeitándolo
- El ejemplo de Seth Godin comienza con lavar el auto y sigue con una manguera, Home Depot, E-ZPass, el E-ZPass del vecino, un problema con una almohada prestada y termina en una historia sobre afeitar el pelo de un yak en el zoológico
- La expresión fue acuñada por Carlin Vieri en el MIT AI Lab
- Vieri jugó hockey hasta tarde un martes por la noche y, mientras cenaba a medianoche, vio el episodio Yak Shaving Day de The Ren & Stimpy Show
- Unos días después, mientras hacía trámites como permisos administrativos, configuración de una cuenta de DHL y búsqueda de una oficina postal, le dijo a un colega que estaba haciendo yak shaving
- Durante los meses siguientes siguió usando la expresión con la gente del laboratorio, y así se fue difundiendo
El riesgo de construir desde cero
- Uno de los errores que cometen con frecuencia los ingenieros o los gerentes que dirigen equipos de ingeniería es construir desde cero
- Puede que a los ingenieros no les gusten las soluciones existentes o quieran demostrar su capacidad
- Los clientes o gerentes pueden malinterpretar lo que hace una solución existente o concluir que no satisface exactamente los requisitos
- La mayoría de los proyectos, ya sea desarrollo de producto o proyectos de hobby, tienen presupuesto y tiempo limitados
- Cuando se empieza a construir por cuenta propia, es fácil que eso derive en yak shaving; una vez dentro, no se sabe dónde terminará y hasta puede abandonarse el objetivo original
- En estas situaciones, suele ser más adecuado buscar una alternativa que satisfaga lo esencial de los requisitos y reducir el trabajo tanto como sea posible
Aun así, por qué el yak shaving es divertido
- El yak shaving es difícil de cortar porque existe el placer de hacer algo con tus propias manos
- El proceso de crear algo que antes no existía, detectar y resolver problemas, e ir profundizando en una cadena de conocimiento para entender cómo funciona algo, atrae a los ingenieros
- Incluso para quienes no son ingenieros, la idea misma de hacer por cuenta propia lo que uno quiere resulta atractiva
- Frederick P. Brooks Jr. resume en The Mythical Man-Month por qué programar es divertido de la siguiente manera
- El placer puro de crear algo
- El placer de crear algo útil para otras personas
- El atractivo de construir un objeto complejo, como un rompecabezas de piezas que encajan entre sí, y ver cómo sus reglas funcionan dentro de ciclos sutiles
- El placer de seguir aprendiendo
- El placer de trabajar con un medio de expresión flexible y fácil de manejar
TeX, un yak shaving exitoso
- TeX también es un caso nacido del yak shaving
- TeX es un sistema de composición tipográfica creado por el profesor de Stanford Donald Knuth, y se refiere al sistema completo en el que funciona el programa, incluyendo el lenguaje de composición y el compilador que lo procesa
- Como permite introducir fórmulas fácilmente, se usa ampliamente en ciencias sociales, ciencias e ingeniería, y la mayoría de los usuarios utiliza LaTeX, un conjunto de macros para usar TeX con mayor facilidad
- En 1976, mientras preparaba la segunda edición del volumen 2 de The Art of Computer Programming, Donald Knuth quería la tipografía con tipos móviles usada en la primera edición, pero ya no podía utilizarla
- Como no quedó satisfecho con las alternativas, al ver un libro de composición tipográfica digital de Patrick Winston, Knuth decidió crear él mismo un sistema de composición digital
- Knuth hizo la primera versión de TeX en el lenguaje SAIL y luego la desarrolló y completó con el lenguaje WEB, creado por él mismo
- El código fuente en WEB mezcla documentación y código
- Con los programas Weave y Tangle se pueden extraer de un archivo WEB, respectivamente, un archivo TeX y un archivo Pascal
- Knuth llamó a este paradigma de programación literate programming
- Junto con Michael Plass, Knuth también ideó el algoritmo de salto de línea de Knuth-Plass para decidir dónde partir las líneas dentro de un párrafo
- Diseñó Computer Modern, la tipografía para TeX; creó METAFONT, un lenguaje para definir gráficos vectoriales; y también desarrolló el formato DVI para producir la salida de TeX sin depender de un dispositivo específico
- En otras palabras, para escribir un libro terminó creando un lenguaje de programación, un paradigma, algoritmos, herramientas y tipografías; la creación de TeX tomó casi diez años y el libro se publicó con ese mismo retraso, pero no fue un esfuerzo en vano
Entre el fracaso y el aprendizaje
- TeX es un caso de éxito extremo, y la mayoría de los casos de yak shaving fracasan
- Hay que saber detenerse en el punto adecuado, pero cuesta dejarlo porque da pena el tiempo ya invertido o porque el yak shaving en sí mismo es divertido
- Incluso cuando hay que llegar hasta el final, puede aparecer la idea de “¿qué estoy haciendo ahora mismo?”, perderse el interés o agotarse los recursos asignados al proyecto, provocando su interrupción
- Para quien quiere aprender, el yak shaving puede ser muy efectivo
- Muchas clases de ingeniería en computación exigen cierto grado de yak shaving sin que ese sea necesariamente el propósito del profesor, y a veces se obtiene más al profundizar en conocimientos periféricos que en el enunciado principal de la tarea
- Para construir un sistema de computación al estilo yak shaving, hay que estudiar desde Boolean logic, circuitos lógicos y arquitectura de computadores hasta lenguajes de programación y sistemas operativos
- The Elements of Computing Systems de Noam Nisan y Shimon Schocken sigue precisamente ese proceso
- Aunque no se llegue hasta el final, si mientras afeitabas al yak aprendiste algo, eso por sí solo ya vale la pena
2 comentarios
Parece que la versión en coreano del post es la original.
https://parksb.github.io/article/32.html
Opiniones de Lobste.rs
Rasurar un yak es divertido, pero hay que fijar cierto límite de profundidad de recursión o de esfuerzo, y cuando llegas ahí, parar.
Me molesta muchísimo que inventen expresiones que casi nadie usa y las escriban como si fueran términos que todo el mundo conoce. Los usuarios de Reddit son especialmente buenos para esto, citando una y otra vez toda clase de leyes.
Encontré la fuente en MIT de este término: https://projects.csail.mit.edu/gsb/old-archive/…
Si no te topas con cosas fuera de tu horizonte, ¿cómo lo vas a ampliar?