Mais le yak shaving est amusant
(parksb.github.io)- En voulant personnaliser librement son blog, l’auteur en est venu à créer du HTML, un système d’écriture en JSON, une conversion Markdown, puis même des outils de compilation et de déploiement, jusqu’à finir par implémenter lui-même un générateur de site statique
- Le yak shaving désigne une situation où une chaîne de tâches menées pour atteindre un objectif finit par s’éloigner du but initial ; l’expression a été inventée par Carlin Vieri au MIT AI Lab
- Les ingénieurs et les managers tombent facilement dans le piège du faire depuis zéro lorsqu’aucune solution existante ne leur convient ou ne semble répondre exactement aux exigences
- Avec un budget et un temps limités, il peut être plus important de choisir une alternative qui couvre les besoins essentiels et de réduire la charge de travail que de privilégier le plaisir d’une implémentation maison
- Il existe des cas menant à de grandes réussites, comme le TeX de Donald Knuth, mais la plupart des yak shavings peuvent échouer ; si l’on a appris quelque chose au passage, cela a malgré tout de la valeur
Un blog fait maison qui a fini en générateur de site statique
- Sans utiliser de générateur de site statique ou de framework comme Jekyll, Hugo, Gatsby
- Au départ, quelques outils ont été testés, mais leur liberté de personnalisation a été jugée insuffisante, d’où la décision de tout construire soi-même
- Écrire les articles en HTML était peu pratique ; pour y remédier, un système d’écriture basé sur des fichiers JSON a été créé, mais il s’est à nouveau révélé peu naturel pour les textes longs
- Ensuite sont venus un service de conversion de fichiers Markdown en HTML et des outils pour compiler et déployer les fichiers générés ; au final, cela revenait à créer de zéro un générateur de site statique
Sens et origine du yak shaving
- Le yak shaving désigne la situation où, en poursuivant une série de tâches liées à un objectif, on finit par perdre de vue le but initial et par faire quelque chose de totalement différent
- L’exemple de LangDev IRC raconte qu’en voulant couper du bois avec une hache, on cherche d’abord une pierre pour l’aiguiser, puis pour aller dans le village où se trouve une bonne pierre il faut se procurer un yak, dont la toison a trop poussé, ce qui conduit finalement à le tondre
- L’exemple de Seth Godin commence par un lavage de voiture, puis enchaîne avec un tuyau, Home Depot, un E-ZPass, l’E-ZPass du voisin, un problème d’oreiller emprunté, pour finir par une tonte de yak au zoo
- L’expression a été inventée par Carlin Vieri au MIT AI Lab
- Vieri jouait au hockey tard le mardi soir, dînait au milieu de la nuit et regardait l’épisode Yak Shaving Day de The Ren & Stimpy Show
- Quelques jours plus tard, en gérant des formalités comme des autorisations administratives, la configuration d’un compte DHL et la recherche d’un bureau de poste, il a dit à un collègue qu’il était en train de faire du yak shaving
- Au fil des mois suivants, l’expression s’est diffusée dans le laboratoire à mesure qu’il continuait à l’employer
Les risques du faire depuis zéro
- L’une des erreurs fréquentes des ingénieurs ou des managers à la tête d’équipes d’ingénierie est de vouloir tout refaire depuis zéro
- Un ingénieur peut ne pas aimer une solution existante ou vouloir prouver ses compétences
- Un client ou un manager peut mal comprendre ce que fait une solution existante, ou juger qu’elle ne répond pas exactement aux besoins
- La plupart des projets, qu’il s’agisse de développement produit ou de projets jouets, sont limités par le budget et le temps
- Dès qu’on commence à tout développer soi-même, il est facile de basculer dans le yak shaving ; une fois lancé, on ne sait plus vraiment où cela s’arrêtera, et l’on peut même finir par abandonner l’objectif initial
- Dans ce genre de situation, il est souvent plus judicieux de chercher une alternative couvrant l’essentiel des besoins et de réduire autant que possible le volume de travail
Pourquoi le yak shaving reste amusant malgré tout
- Il est difficile d’interrompre le yak shaving, car il procure le plaisir de construire soi-même quelque chose
- Créer ce qui n’existait pas, repérer puis résoudre des problèmes, et remonter une chaîne de connaissances pour comprendre comment les choses fonctionnent attirent naturellement les ingénieurs
- Même sans être ingénieur, l’idée de fabriquer soi-même ce que l’on veut a quelque chose de séduisant
- Dans The Mythical Man-Month, Frederick P. Brooks Jr. résume ainsi les raisons pour lesquelles programmer est agréable
- le plaisir pur de construire quelque chose
- le plaisir de créer quelque chose d’utile pour les autres
- l’attrait de concevoir un objet complexe, comparable à un puzzle d’engrenages qui s’emboîtent, et de voir ses règles fonctionner au sein de boucles subtiles
- le plaisir d’apprendre en permanence
- le plaisir de travailler avec un médium d’expression souple et facile à manier
TeX, un yak shaving qui a réussi
- TeX est lui aussi né d’un yak shaving
- TeX est un système de composition typographique créé par le professeur de Stanford Donald Knuth ; il désigne l’ensemble complet, incluant le langage de composition et le compilateur qui le traite
- Grâce à sa facilité de saisie des formules, il est largement utilisé en sciences sociales, en sciences et en ingénierie, et la plupart des utilisateurs emploient LaTeX, un ensemble de macros destiné à rendre TeX plus simple à utiliser
- En 1976, alors qu’il préparait la deuxième édition du volume 2 de The Art of Computer Programming, Donald Knuth voulait retrouver la composition au plomb utilisée pour la première édition, mais elle n’était plus disponible
- Insatisfait des alternatives, Knuth a découvert un livre de Patrick Winston sur la composition numérique et a décidé de créer lui-même un système numérique de composition typographique
- Knuth a réalisé la première version de TeX en langage SAIL, puis l’a poursuivie et achevée avec son propre langage WEB
- Le code source WEB mélange documentation et code
- Les programmes Weave et Tangle permettent d’extraire d’un fichier WEB, respectivement, un fichier TeX et un fichier Pascal
- Knuth a appelé ce paradigme de programmation literate programming
- Avec Michael Plass, Knuth a aussi conçu l’algorithme de retour à la ligne de Knuth-Plass, qui détermine où couper les lignes dans un paragraphe
- Il a conçu Computer Modern, la police de caractères pour TeX, créé METAFONT, un langage de définition de graphiques vectoriels, et développé le format DVI pour produire les sorties de TeX sans dépendre d’un périphérique particulier
- Pour écrire un livre, il a en quelque sorte créé un langage de programmation, un paradigme, des algorithmes, des outils et des polices ; la création de TeX a pris près de dix ans, et le livre est sorti avec autant de retard, mais l’effort n’a pas été vain
Entre échec et apprentissage
- TeX est un cas extrême de réussite, et la plupart des yak shavings se soldent par un échec
- Il faudrait savoir s’arrêter au bon moment, mais il est difficile d’abandonner soit parce que le temps déjà investi semble trop précieux, soit parce que le yak shaving lui-même est amusant
- Même lorsqu’il faut aller jusqu’au bout, on peut finir par se demander « Qu’est-ce que je suis en train de faire, au juste ? », perdre l’intérêt, ou voir le projet s’interrompre faute de ressources
- Pour quelqu’un qui cherche à apprendre, le yak shaving peut être extrêmement efficace
- Beaucoup de cours d’informatique exigent, indépendamment de l’intention du professeur, une certaine dose de yak shaving, et il arrive qu’on apprenne davantage en creusant les connaissances périphériques que dans l’énoncé même du devoir
- Construire un système informatique en suivant une logique de yak shaving conduit à étudier la Boolean logic, les circuits logiques, l’architecture des ordinateurs, les langages de programmation et jusqu’aux systèmes d’exploitation
- The Elements of Computing Systems de Noam Nisan et Shimon Schocken suit précisément ce type de démarche
- Même sans aller jusqu’au bout, si l’on a appris quelque chose en tondant le yak, cela en vaut déjà la peine
2 commentaires
Il semble que la version coréenne du billet soit l’original.
https://parksb.github.io/article/32.html
Avis sur Lobste.rs
Le yak shaving est amusant, mais il faut se fixer une certaine profondeur de récursion ou une limite d’effort, puis s’arrêter une fois qu’on l’a atteinte
Je trouve vraiment agaçant d’inventer des expressions que presque personne n’utilise, puis de les employer comme si c’étaient des termes connus de tous. Les utilisateurs de Reddit sont particulièrement doués pour ça, à citer sans arrêt des lois ou principes divers.
J’ai retrouvé la source MIT du terme : https://projects.csail.mit.edu/gsb/old-archive/…
Si on ne découvre jamais ce qui se trouve hors de son horizon, comment pourrait-on l’élargir ?