Yak Shaving: Warum du dich auf das richtige Problem konzentrieren solltest.
Im Engineering-Kiosk-Adventskalender 2025 sprechen befreundete Podcaster⋅innen und wir selbst, Andy und Wolfi, jeden Tag kurz & knackig innerhalb weniger Minuten über ein interessantes Tech-Thema.
Unsere aktuellen Werbepartner findest du auf https://engineeringkiosk.dev/partners
Das schnelle Feedback zur Episode:
Anregungen, Gedanken, Themen und Wünsche
Dein Feedback zählt! Erreiche uns über einen der folgenden Kanäle …
- EngKiosk Community: https://engineeringkiosk.dev/join-discord
- LinkedIn: https://www.linkedin.com/company/engineering-kiosk/
- Email: stehtisch@engineeringkiosk.dev
- Mastodon: https://podcasts.social/@engkiosk
- Bluesky: https://bsky.app/profile/engineeringkiosk.bsky.social
- Instagram: https://www.instagram.com/engineeringkiosk/
Unterstütze den Engineering Kiosk
Wenn du uns etwas Gutes tun möchtest … Kaffee schmeckt uns immer
- Buy us a coffee: https://engineeringkiosk.dev/kaffee
Links
- Herkunft von Yak Shaving: https://en.wiktionary.org/wiki/yak_shaving
- Ren & Stimpy, Yak Shaving Day: https://en.wikipedia.org/wiki/The_Boy_Who_Cried_Rat!
- Am I Yak-Shaving or Bikeshedding?: https://kau.sh/blog/yak-shaving-bike-shedding/
- Don’t Shave That Yak!: https://seths.blog/2005/03/dont_shave_that/
- yak shaving: http://www.catb.org/~esr/jargon/html/Y/yak-shaving.html
- Parkinsonsche Gesetze: https://de.wikipedia.org/wiki/Parkinsonsche_Gesetze
- "Jeremy H. Brown" to: all-ai@ai.mit.edu: https://projects.csail.mit.edu/gsb/old-archive/gsb-archive/gsb2000-02-11.html
- Stack Exchange “What exactly is Yak Shaving?”: https://softwareengineering.stackexchange.com/questions/388092/what-exactly-is-yak-shaving
- History of Apache Maven: https://maven.apache.org/background/history-of-maven.html
- Slack (software): https://en.wikipedia.org/wiki/Slack_(software)
Hosts
- Wolfgang Gassler (https://gassler.dev)
- Andy Grunwald (https://andygrunwald.com/)
Community
Diskutiere mit uns und vielen anderen Tech-Spezialist⋅innen in unserer Engineering Kiosk Community unter https://engineeringkiosk.dev/join-discord
Transkript
Wolfi Gassler (00:00:16 - 00:00:38)
Willkommen zum Engineering Kiosk Adventkalender oder für unsere deutschen Hörerinnen Adventskalender. So viel Zeit muss ja noch sein, vor allem in dieser ruhigen Adventszeit. Da haben wir Zeit für Wissen, Sinnvolles, aber auch weniger Sinnvolles. Und was sich Andi für dieses Türchen ausgedacht hat, mit welchem Wissen er jetzt um die Ecke biegen wird, das hört ihr gleich. Also zurücklehnen, Lausche auf und los geht's.
Andy Grunwald (00:00:40 - 00:12:11)
Heute sprechen wir mal ein bisschen über den Begriff Yak Shaving. Nehmen wir den Begriff einfach mal auseinander. Was ist ein Yak? Ein Yak ist eine Rinderart. Man könnte das Tier auch tibetischer Grundochse nennen, weil ab und zu macht er halt mal so Grunzlaute. Normalerweise kommt dieses Tier im Himalaya, in der Mongolei oder in Sibirien vor. Und das Tier ist relativ nützlich, liefert Milch, Fleisch, Leder, Haar und Wolle. Der Kot dient sogar als Brennmaterial und die Menschen nutzen das Yak auch noch als Last und Reittier. Shaving bedeutet rasieren. Also rasieren wir eigentlich ein Rind. Was heißt denn jetzt aber Yakshaving im Ganzen? Es hat nicht wirklich was mit dem Tier selbst zu tun. Also was ist es? Yakshaving ist scheinbar jede sinnlose Aktivität, die tatsächlich notwendig ist, um ein Problem zu lösen, das wiederum ein Problem löst, das nach mehreren Rekursionsstufen das eigentliche Problem löst, an dem du arbeitest. Hä? Was heißt das denn? Jetzt lass uns mal mit einem Beispiel kommen. Und zwar stell dir vor, du startest deinen Arbeitstag mit dem Ziel, dass du einen Bug in deiner Datenbank API fixen möchtest. Du startest deine IDE, willst den Code bauen, doch irgendwie wirft die Bildpipeline einen Fehler. Offenbar ist irgendein Plugin veraltet, Also fängst du an, das Plugin zu aktualisieren. Du willst den Code wieder bauen und irgendwie kompiliert der Code nicht mehr, weil sich ein Config Parameter geändert hat. Also was machst du? Du passt die Config Datei an, also Änderung gemacht, commit. In der Bild Pipeline laufen die Tests und auf einmal merkst Alle Tests schlagen Fehler. Du guckst da rein Ah, die Testing Library ist alt, OK. Also updatest du die Test Library, was wiederum dazu führt, dass du den Linter neu konfigurieren musst, weil dieser mit der neuen Test Library kollidiert. Ende vom Lied. Es ist Nachmittag. Du hast keine einzige Zeile Code an deiner Datenbank API geändert und eigentlich nicht den Bugfix. Das nennt man Yak Shaving, also eine scheinbar endlose Kette von Nebenaufgaben, die erledigt werden müssen, bevor man die eigentliche Aufgabe weitermachen kann. Und wenn du dir das mal ansiehst, jede dieser kleinen Aufgaben wirkt für sich genommen gerechtfertigt. Also ich mein, Dependencies updaten ist immer eine gute Sache. Wenn sich Config Parameter ändern, sollte man die auch anpassen, damit die Bildpipeline wieder funktioniert. Das macht ja alles irgendwie Sinn. Doch am Ende hat man sich so weit vom ursprünglichen Ziel entfernt, dass man sich fragen könnte, was war denn jetzt der eigentliche Nutzen? Weil dein Ziel war ja, den Bug in der Database API zu fixen. Im übertragenen Sinne steht das Yak, also das Rind, für das arme Tier, das man am Ende rasiert, obwohl man eigentlich ganz was anderes ist, erreichen wollte. Doch wo kommt dieser Begriff eigentlich her? Weil irgendwie was hat ein Rind mit endlosen, nutzlosen Aufgaben zu tun? Der Begriff selbst kommt von Karl Vieri, ist inzwischen ein Staff Hardware Engineer bei Google. Der hat in den er Jahren am MIT AI Lab gearbeitet und ihr könnt euch vorstellen, wenn man sich ein tausend neun hundert neunzig ein tausend neun hundert drei und neunzig ein tausend neun hundert acht und neunzig mit AI beschäftigt hat, dann kann man da ziemlich viele Rabbit Holes runtergehen. Auf jeden Fall hat Kalining eine Serie geguckt. Ren Stimpy heißt die. Ren Stimpy ist eine amerikanisch animierte Comedy Serie. In einer Episode wird der sogenannte Yak Shaving Day gefeiert. Der Yak Shaving Day ist ein weihnachtsähnlicher Feiertag, an dem Windeln aufgehangen werden, Socken mit Krautsalat gefüllt werden und den Himmel nach einem legendären rasierten Yak in einem fliegenden Kanu abgesucht wird. Klingt ziemlich weird und ich glaube, das ist auch der Comedy Anteil in dieser Serie. Auf jeden Fall stammt da der Begriff Yak Shaving her. Im MIT AI Lab wurde dieser dann gecoined und seitdem gibt es diesen Begriff. Jetzt könnte man sagen, ist Yakshaving negativ behaftet. Yakshaving gilt generell als Anti Pattern, Denn in meinem Beispiel oben mit der Datenbank API, Ich mein, du hättest den Bugfix auch ohne die großen Updates durchführen können. Vielleicht unsauber, aber schnell. Also es wäre möglich gewesen. Stattdessen hast du die Toolchain perfektioniert und kamst irgendwie keinen Schritt voran mit deinem eigentlichen Ziel. Ein anderes populäres Beispiel, was im Yakshaving oft genannt Du willst eigentlich nur dein Auto wachsen, merkst aber, dass dein Wasserschlauch kaputt ist, also musst du erstmal zum Baumarkt. Also steigst du ins Auto und merkst scheiße, der Tank ist leer, also willst du tanken. Zum Tanken brauchst du aber deine Tankkarte und die musst du erst suchen. Du findest deine Tankkarte nicht und dann kommt dir die Hey, ich kann mir doch die Tankkarte vom Nachbarn leihen. Du gehst also zu deinem Nachbarn Hey, kann ich mal deine Tankkarte leihen? Der gibt seine Tankkarte aber erst raus, wenn er von dir das geliehene Kissen zurückbekommt. Merkst du am Ende stehst du da und rasierst einen Yak, obwohl du eigentlich nur dein Auto polieren wolltest. Jagd Shaving kann aber auch Stress erzeugen. Also ich kann das ganze Team frustrieren, weil jeder vielleicht auf das wichtige Feature wartet und du dich mit Nebenkriegsschauplätzen irgendwie beschäftigt. Es verleitet aber auch zur Prokrastination. Das bedeutet, du erledigst eigentlich lieber ein hundert kleine Aufgaben, die vielleicht irgendwie was mit dem Projekt zu tun haben, anstatt die eigentliche schwere Aufgabe anzupacken. Aber es ist ja nicht immer alles negativ, weil viele negative Sachen haben auch was Positives. Also die Kann Yak Shaving auch positiv sein? Ja, kann es. Denn ich mein, am Ende des Tages, wenn die Aufgabe trotzdem fertig ist, also wenn du jetzt trotzdem den Bug in deiner Datenbank API gefixt hast und die Nebenaufgaben wirklich notwendig waren, dann ist es ja auch irgendwie ein positiver Outcome, oder? Ein weiteres Beispiel ist, dass Yak Shaving auch mal innovative Lösungen fordern kann. Zum Beispiel werden oft super viele kleine Skripte, sogenannte Helferlein, beim Yak Shaving erzeugt und die sind natürlich nicht nur für dich hilfreich, sondern vielleicht auch fürs ganze Team, wenn diese adaptiert werden. Oder bekannte Projekte wie Apache Maven, das ist ein Bild Tool für Java Projekte, ist so entstanden, weil Entwickler müde waren, bei jedem Projekt die gleiche Setup Arbeit zu wiederholen. Ein anderes sehr bekanntes Beispiel ist Slack, der Kommunikationsmessenger, würde ich mal sagen, der in vielen Firmen genutzt wird. Slack selbst wurde als internes Kommunikationstool beim Entwickeln eines Spiels gebaut. Zugegeben, das Spiel selbst hat es leider nicht geschafft bzw. War nicht erfolgreich. Und dann hat der Gründer sich gedacht ach komm, dieses Kommunikationstool, dann ziehe ich das mal raus und mache das als eigenes Produkt. Also theoretisch könnte man sagen, Slack ist durch Yakshaving entstanden. Und wenn du jetzt noch einen Grund suchst, warum du Yakshaving machen solltest, dann könnte man auch sagen, dass es um Expertenwissen geht. Denn wer sich tief in Details eingräbt, also kräftig am Jack rumrasiert, kann am Ende ein viel besseres Verständnis für das große Ganze erlangen. Weil ich meine, du beschäftigst dich natürlich mit dem Hasenbau, der dahinter steckt, aber du merkst schon, ob das Argument wirklich so valide ist, weiß ich nicht. Man balanciert hier auf einem schmalen Grat. Was ich nur sagen mö Jack Shaving ist nicht per se böse. Wo Yuckshaving aber böse werden kann, ist beim Gruppeneffekt. Und zwar ist Yakshaving eigentlich ein individuelles Phänomen. Für den einen mehr, für den anderen weniger. Aber was passiert denn, wenn ein ganzes Team in den Yag Shaving Modus verfällt? In der Gruppe potenzieren sich oft diese Neigung, vom Kurs abzukommen. Also zum Beispiel könnte ein Team entscheiden, sich vom eigentlichen Feature Launch erstmal die Competitive ICD Pipeline neu aufzusetzen, dann das halbe Projekt auf ein neues Framework umzustellen, weil das schon lange mal gemacht werden musste. Plötzlich arbeiten fünf Leute zwei Wochen lang an Infrastruktur aufräumarbeiten, während das Feature halt immer noch nicht live ist. Genau wie beim individuellen Yakshaving ist es so, dass jedes Teammitglied seinen Teil der Aufgabe irgendwie als berechtigt ansieht. Also ich meine, die ICD Pipeline, die müsste halt generell mal neu aufgesetzt werden, das Framework Upgrade sowieso, das macht ja auch alles Sinn. Doch das Gesamtbild ist ein kolossales Yak Shaving, das vom Management irgendwann nur noch mit Kopfschütteln betrachtet wird, weil ich mein, man wollte das als Feature launchen, aber ein Team kann sich auch selbst schützen. Gute Teams entwickeln dann eigentlich sogenannte Catchphrases, um solche Situationen mehr oder weniger humorvoll zu entschärfen. Du könntest zum Beispiel in einem Meeting Ich sehe deine Argumente und jedes Argument klingt an sich auch vernünftig. Aber sind wir hier möglicherweise gerade dabei, uns so weit vom eigentlichen Ziel zu entfernen? Also sind wir alle am Yaven? Ich würde mal sagen, die gemeinschaftliche Achtsamkeit kann hier helfen, Jack Shaving frühzeitig zu erkennen und abzubrechen bevor das Yak zum Beauty Salon eskortiert wird. Also das bedarf aber auch die Kraft von jedem. Wenn du dich also nächste Mal wieder mit einer Aufgabe beschäftigst und kurz davor bist, einen Rabbit Hole runterzugehen, hier mal ein paar Tipps, wie du Yak Shaving vermeiden kannst. Definiere erstmal ein klares Ziel und Scope, also was willst du erreichen und was nicht. Wenn Unteraufgaben auftauchen, frag dich wirklich Muss ich die jetzt wirklich machen oder bringen die mich nur vom Kurs ab? Für gegebenenfalls eine Not to do Liste, also alles, was mit der eigentlichen Aufgabe nichts zu tun hat, was du aber bei der Lösung der Aufgabe entdeckst, Schreib die auf den Zettel und da kümmerst du dich einfach mal später drum. Oder von mir aus noch besser erstellen ordentliches Backticket oder Short Ticket oder Cleanup Ticket für euren Backtracker. Setz dir ein Zeitlimit Timeboxing zum Beispiel. Versuch einfach mal eine Stunde lang den Bug zu fixen und wenn du es in dieser Zeit nicht hinbekommst, brichst du einfach ab. Gehst noch mal zwei Schritte zurück und fragst dich Ist das jetzt hier die richtige Lösungsweg? So eine feste Deadline kann dich halt vor dem Jagdstrudel beschützen. Der vierte Tipp wäre Priorisierung und Iteration. Versuch den Perfektionismus mal zur Seite zu legen. Bau lieber erstmal eine funktionierende Lösung, die das Hauptproblem löst und verbessere diese später iterativ ganz nach dem Make it work, make it fast, make it beautiful. Und zu guter Zieh dein Team zu Hilfe. Das bedeutet, scheu dich mal nicht, einen Kollegen oder eine Kollegin drüber schauen zu lassen. Oft hilft ein frischer Blick und entlarvt dann vielleicht dein Yakshaving, dass du den Rasierer schon in der Hand hast. Gute Kollegen stellen oft die Muss das jetzt sein oder gibt es hier ein Workaround? Denk immer Softwareentwicklung ist ein Teamsport. Und zu guter Letzt, wenn man mal ein bisschen über Yag Shaving spricht oder ein bisschen recherchiert, dann fällt der Begriff Bikeshäding oft auch Jetzt fragt man Wo ist denn der Unterschied zwischen Yakshaving und Bikeshäding? Beide Begriffe haben was mit ineffektivem Arbeiten zu tun. Yag Shading ist meist eine individuelle Tunnelvision, bei der man einer Kette vielleicht legitimer, aber ablenkender Aufgaben von Bike Shading ist häufig eine Gruppendiskussion über triviale Details und Bikeshading geht auf das Parkinson Gesetz der Trivialität zurück. Das Gesetz Die auf einem Tagesordnungspunkt verwendete Zeit ist umgekehrt proportional zu den jeweiligen Kosten. Nehmen wir mal ein Du hast eine Gruppe von Experten und deren Aufgabe ist es, ein Kernkraftwerk zu planen. Ich glaube, wir sind uns alle einig, die Planung eines Kernkraftwerks ist jetzt keine leichte Aufgabe. Angesichts der Größe und der Komplexität dieser Aufgabe verbrachte aber diese Gruppe aus Experten die meiste Zeit damit, den Fahrradunterstand außerhalb des Kernkraftwerks zu planen. Das wäre jetzt Bike Shading. Beim Bike Shading hingegen verzettelt man sich oft im Team in wirklich belanglosen Kleinigkeiten, die kaum Einfluss auf das große Projekt haben. Und beim Yakshaving geht es um die Aufgaben, die zwar nicht direkt zur Lösung der eigentlichen Aufgabe helfen, aber irgendwie notwendig oder nützlich sind. Das war es von mir, eine kleine Episode zum Thema Yakshaving und ein kleiner Ausflug zum Thema Bikeshading. Im Endeffekt liegt es an dir, ob du den Rasierer in der Hand und das Rind vor dir hast oder ob du das eigentliche Problem löst. Ich würde mich auch gerne mal über die ein oder andere Yakshaving Story von dir freuen. Komm einfach in unsere Discord Community. Ich würde mich freuen. Bis zum nächsten Mal und tschüss.
Wolfi Gassler (00:12:11 - 00:12:48)
Das war das heutige Türchen im Engineering Kiosk Adventkalender. Ich hoffe, ihr konntet wieder etwas mitnehmen, zum Nachdenken, schmunzeln oder auch direkt ausprobieren. Wenn euch die Episode gefallen hat, erzählt es gern weiter an Kolleg Innen oder eure Lieblings Nerds. Abonniert den Podcast und eine Bewertung wär natürlich auch super cool. Ihr kennt ja das ganze Spiel. Wenn ihr noch mehr Lust auf Austausch habt, kommt gerne in unserer Engineering Kiosk Discord Community vorbei. Dort tummeln sich Entwickler innen, Datenmenschen und auch alles andere, was Rang und Namen hat im Tech Universe. Für heute machen wir das Türchen mal wieder zu. Aber keine Sorge, das nächste wartet schon. Frohe Adventszeit in der Zwischenzeit. Bleibt offen für Neues und bis zur nächsten Episode.