Aber yak shaving macht Spaß
(parksb.github.io)- Beim Versuch, einen Blog frei zu individualisieren, führte der Weg über das Schreiben von HTML, das Verfassen in JSON und die Umwandlung nach Markdown bis hin zum Bau von Tools für Kompilierung und Deployment — und endete schließlich in der eigenen Implementierung eines Static Site Generators
- yak shaving bezeichnet eine Kette von Aufgaben für ein Ziel, die sich immer weiter vom ursprünglichen Zweck entfernt; der Ausdruck wurde von Carlin Vieri am MIT AI Lab geprägt
- Ingenieure und Manager geraten leicht in die Falle, von Grund auf neu zu bauen, wenn ihnen bestehende Lösungen nicht gefallen oder nicht zu ihren Anforderungen zu passen scheinen
- Bei begrenztem Budget und knapper Zeit kann es wichtiger sein, Alternativen zu wählen, die die Kernanforderungen erfüllen, und den Arbeitsumfang zu reduzieren, statt die Freude an der Eigenimplementierung auszuleben
- Es gibt Fälle wie Donald Knuths TeX, die zu großen Erfolgen führen, doch die meisten Fälle von yak shaving können scheitern — wenn man dabei etwas gelernt hat, hat es trotzdem Wert
Ein selbst gebauter Blog führte zu einem Static Site Generator
- Es wurden keine Static Site Generatoren oder Frameworks wie Jekyll, Hugo oder Gatsby verwendet
- Anfangs wurden einige Tools ausprobiert, doch die Freiheit zur Anpassung erschien unzureichend, also fiel die Entscheidung, alles selbst zu bauen
- Das Schreiben von Texten direkt in HTML war unpraktisch; um das zu lösen, wurde ein auf JSON-Dateien basierendes Schreibsystem entwickelt, das sich für längere Texte jedoch ebenfalls wieder sperrig anfühlte
- Danach kamen noch ein Dienst zur Umwandlung von Markdown-Dateien in HTML sowie Tools zum Kompilieren und Deployen der Ausgabedateien hinzu, sodass am Ende praktisch ein Static Site Generator von Grund auf entstand
Bedeutung und Herkunft von yak shaving
- yak shaving bezeichnet eine Situation, in der man für ein bestimmtes Ziel immer weiter zusammenhängenden Aufgaben folgt, dabei das ursprüngliche Ziel aus den Augen verliert und schließlich an etwas ganz anderem arbeitet
- Das Beispiel aus LangDev IRC beschreibt den Ablauf so: Man will mit einer Axt einen Baum fällen, sucht dann einen Stein zum Schärfen der Axt, braucht ein Yak, um in ein Dorf mit guten Steinen zu gelangen, stellt fest, dass das Yak zu langes Fell hat, und schert am Ende das Yak
- Seth Godins Beispiel beginnt mit einer Autowäsche und führt über einen Schlauch, Home Depot, E-ZPass, den E-ZPass des Nachbarn und ein geliehenes Kissen schließlich zum Scheren von Yakhaaren im Zoo
- Der Ausdruck wurde von Carlin Vieri am MIT AI Lab geprägt
- Vieri spielte an einem späten Dienstagabend Hockey, aß danach mitten in der Nacht zu Abend und sah die Episode Yak Shaving Day aus The Ren & Stimpy Show
- Einige Tage später erledigte er Papierkram wie Verwaltungsgenehmigungen, die Einrichtung eines DHL-Kontos und die Suche nach einer Postfiliale und sagte dabei zu einem Kollegen, er sei gerade beim yak shaving
- In den folgenden Monaten verwendeten die Leute im Labor den Ausdruck immer wieder, wodurch er sich verbreitete
Die Risiken des Bauens von Grund auf
- Einer der häufigen Fehler von Ingenieuren oder Managern, die Engineering-Teams führen, ist es, von Grund auf neu zu bauen
- Ingenieure mögen bestehende Lösungen womöglich nicht oder wollen ihre eigenen Fähigkeiten unter Beweis stellen
- Kunden oder Manager können missverstehen, was bestehende Lösungen leisten, oder urteilen, dass sie die Anforderungen nicht exakt erfüllen
- Die meisten Projekte — ob Produktentwicklung oder Toy-Projekt — haben begrenzte Budgets und Zeitfenster
- Wer einmal mit einer Eigenimplementierung beginnt, gerät leicht ins yak shaving; ist man erst einmal drin, ist unklar, wo es endet, und womöglich gibt man das ursprüngliche Ziel ganz auf
- In solchen Situationen ist es oft angemessener, nach Alternativen zu suchen, die den Kern der Anforderungen erfüllen, und die Arbeitsmenge so weit wie möglich zu reduzieren
Warum yak shaving trotzdem Spaß macht
- yak shaving lässt sich schwer abbrechen, weil es Freude macht, selbst etwas zu bauen
- Der Prozess, etwas zu erschaffen, das es vorher nicht gab, Probleme zu entdecken und zu lösen und sich über eine Kette von Wissen immer tiefer in das Verständnis von Funktionsweisen einzugraben, übt auf Ingenieure große Anziehungskraft aus
- Auch für Nicht-Ingenieure hat die Idee, das Gewünschte selbst zu bauen, einen eigenen Reiz
- Frederick P. Brooks Jr. fasst in The Mythical Man-Month die Gründe zusammen, warum Programmieren Spaß macht
- die pure Freude daran, etwas zu erschaffen
- die Freude, etwas zu bauen, das für andere nützlich ist
- die Faszination, ein komplexes, puzzleartiges Gebilde zu schaffen, dessen ineinandergreifende Regeln in subtilen Kreisläufen funktionieren
- die Freude am ständigen Lernen
- die Freude an der Arbeit mit einem flexiblen und gut handhabbaren Ausdrucksmedium
TeX als erfolgreiches yak shaving
- TeX ist ebenfalls ein Beispiel dafür, was aus yak shaving hervorgehen kann
- TeX ist ein von Stanford-Professor Donald Knuth geschaffenes Satzsystem und bezeichnet das gesamte System, in dem das Programm läuft, einschließlich der Satzsprache und des Compilers, der sie verarbeitet
- Weil sich Formeln leicht eingeben lassen, wird es in Sozialwissenschaften, Naturwissenschaften und Technik breit eingesetzt; die meisten Nutzer verwenden LaTeX, eine Makrosammlung, die die Nutzung von TeX erleichtert
- 1976 bereitete Donald Knuth die zweite Auflage von Band 2 von The Art of Computer Programming vor und wollte den Bleisatz aus der ersten Auflage wiederverwenden, doch dieser stand nicht mehr zur Verfügung
- Da ihn keine Alternative zufriedenstellte, sah Knuth ein Buch über digitalen Satz von Patrick Winston und beschloss, selbst ein digitales Satzsystem zu bauen
- Knuth entwickelte die erste Version von TeX in der Sprache SAIL und vollendete das System später mit der von ihm selbst entwickelten Sprache WEB
- WEB-Quelltexte mischen Dokumentation und Code in einer gemeinsamen Form
- Mit den Programmen Weave und Tangle lassen sich aus WEB-Dateien jeweils TeX-Dateien und Pascal-Dateien extrahieren
- Knuth nannte dieses Programmierparadigma literate programming
- Gemeinsam mit Michael Plass entwickelte Knuth außerdem den Knuth-Plass-Zeilenumbruchalgorithmus, der bestimmt, an welchen Stellen Zeilen in einem Absatz umbrochen werden
- Er entwarf mit Computer Modern auch die Schrift für TeX, schuf mit METAFONT eine Sprache zur Definition von Vektorgrafik und entwickelte zudem das DVI-Format, um TeX-Ausgaben unabhängig von einem bestimmten Gerät auszugeben
- Im Grunde schuf er zum Schreiben eines Buchs eine Programmiersprache, ein Paradigma, einen Algorithmus, Werkzeuge und Schriftarten; die Entwicklung von TeX dauerte fast zehn Jahre und verzögerte das Buch entsprechend, doch die Mühe war nicht vergebens
Zwischen Scheitern und Lernen
- TeX ist ein extremes Erfolgsbeispiel, doch die meisten Fälle von yak shaving scheitern
- Man sollte an einem geeigneten Punkt aufhören, doch oft fällt das schwer, weil die bereits investierte Zeit zu schade erscheint oder weil das yak shaving selbst Spaß macht
- Selbst wenn man weitermachen muss, kann irgendwann der Gedanke aufkommen: „Was mache ich hier eigentlich gerade?“, das Interesse kann nachlassen oder die für das Projekt vorgesehenen Ressourcen können aufgebraucht sein, sodass es abgebrochen wird
- Für Lernende kann yak shaving sehr effektiv sein
- Viele Informatikveranstaltungen verlangen, unabhängig von der eigentlichen Absicht des Dozenten, ein gewisses Maß an yak shaving, und nicht selten gewinnt man mehr daraus, sich in das Umfeld eines Projekts zu vertiefen als nur in die eigentliche Aufgabenstellung
- Wer nach der Methode des yak shaving ein Computing-System bauen will, muss bis hin zu Boolean logic, Logikschaltungen, Computerarchitektur, Programmiersprachen und Betriebssystemen lernen
- The Elements of Computing Systems von Noam Nisan und Shimon Schocken folgt genau diesem Prozess
- Selbst wenn man es nicht bis zum Ende schafft: Wenn man beim Scheren des Yaks etwas gelernt hat, ist schon das für sich genommen wertvoll
2 Kommentare
Die koreanische Version des Beitrags scheint das Original zu sein.
https://parksb.github.io/article/32.html
Lobste.rs-Kommentare
Yak Shaving macht Spaß, aber man sollte eine gewisse Rekursionstiefe oder Aufwandsgrenze festlegen und aufhören, wenn man dort angekommen ist
Es nervt mich wirklich, wenn Leute einen Ausdruck prägen, den fast niemand benutzt, und ihn dann so verwenden, als wäre er ein Begriff, den alle kennen. Reddit-Nutzer sind darin besonders gut und zitieren ständig irgendwelche Gesetze.
Ich habe die MIT-Quelle für diesen Begriff gefunden: https://projects.csail.mit.edu/gsb/old-archive/…
Wie soll man seinen Horizont erweitern, wenn man nie mit Dingen außerhalb des eigenen Horizonts in Berührung kommt?