Live data from Hacker News

But yak shaving is fun (2019)

parksb.github.io

61–70 of 100 posts

Re: But yak shaving is fun (2019)

#61
post #47

Yak-shaving-shaming puts limits on the creativity of talented engineers by constraining them to existing patterns and practices or building on top of abstractions, and practically, that results in engineers and teams with less breadth. In an applied software world that's exploded in framework and library complexity in recent years, I think there are always going to be yaks in dire need of a shave.

This is one of the reasons I’ve never liked the aphorism "make it work, make it right, make it fast." By the time you get to the last point, say, having used Electron to build your graphing calculator, it is far too late to magically make it fast, like trying to make a Boeing 787 into a Cessna.

I like that aphorism. But if it leads you to building a graphing calculator with Electron then I think it doesn't work, it isn't right, and it isn't fast.

There's also the old saying about how a good programmer is lazy. There's two ways to interpret that. Seems we've shifted to the bad kind of lazy (i.e. easy/minimal upfront work)

Re: But yak shaving is fun (2019)

#62
post #54
post #19

I always liked yak shaving, but avoided it because I knew it came with costs and tradeoffs. More recently, with the help of AI, I’ve been doing lots of it, as the costs and tradeoffs have greatly diminished. In fact, I’ve learned that building my own tools and frameworks, when done properly, comes with huge performance benefits and helps me understand the problems I’m trying to solve much more deeply. There has never…

I wonder, how well does Yak-Shaving work for you with AI, how does it look for you specifically and how do you make sure it's not undermining the friction for learning things properly? I want to try some more yak-shaving soon too.

Yak shaving with AI allows me to function more as a systems designer, code reviewer and tester than a coder per se.

AI is great if you simultaneously guide it and let it guide you. I take my time building a very detailed spec for what I want, then run it through the AI looking for contradictions, misconceptions, edge cases, performance bottlenecks, potential optimizations… anything that might cause problems in the future. Usually these discussions lead to multiple spec-improvement journeys, and that’s where the bulk of learning in a project comes from. Sometimes the AI will flag actual issues, while other times I might need to rein in its proposals — mostly in terms of feature creep and finding non-existing problems. I believe this back-and-forth is the most significant aspect of making the best out of yak shaving.

By the time the spec is “final”, it can be quickly implemented by an AI as I watch, review and test, with practically zero code banging on my part. This way, I get to understand precisely how the project works, make it tailored to my needs, and still not waste time, muscles or even mental bandwidth with menial coding.

Re: But yak shaving is fun (2019)

#63
post #55
post #47

Earlier quoted context omitted.

This is one of the reasons I’ve never liked the aphorism "make it work, make it right, make it fast." By the time you get to the last point, say, having used Electron to build your graphing calculator, it is far too late to magically make it fast, like trying to make a Boeing 787 into a Cessna.

It's a bad aphorism if you take it literally and don't think about any nuance, but it's the correct priority . In many cases each of the three steps can take longer than the last, and each step is useless if the previous step isn't possible. The lesson is supposed to be to focus on each step at a time, not to completely ignore the other steps. If you're making a complicated webapp, use your favorite framework to make…

Similarly "move fast and break things" is a great strategy for learning. But it's terrible for creating production grade software. You break things to learn how they work, but then you got to go back and clean everything up or else you're just living in a dumpster. It's quite impressive how proudly people defend their dumpsters and actively criticize anyone who wants to clean it up. "Waste of time!" Cries the programmer struggling to implement a new feature through a mountain of tech debt

Re: But yak shaving is fun (2019)

#64

Does not really feel accurate to how yak shaving was to me. Yak shaving, as I experienced it - is when nothing works unless you do something else first, and something else needs it too. I need to fix a bug, but I have to reproduce it first. I cannot reproduce it, because there is an entire other bug that prevents me from doing it. So I have to take the other route. But the other route does not work because the infras…

That's not yak shaving that's just how working on a complex system that has technical debt is.

Re: But yak shaving is fun (2019)

#65
post #56

My dotfiles in a nutshell. - I want to add a shell function that invoked Claude in a VM via Lima using API keys stored in 1Pass - But that means I need a way of templating the YAML file that will define Claude's VM and a reliable way of syncing state between it and my machine - I could use a templating language like Jinja or Starlark, but that's another dependency for a relatively simple job - Also, what if I want to…

> and a reliable way of syncing state between it and my machine

What was your solution for this? Keeping hosts reliably synced across the network is a perpetual source of frustration for me.

Re: But yak shaving is fun (2019)

#69

When I was in highschool I started writing a game in Qbasic. Along the way, I wanted it to have a console (like Quake) where you could enter commands and modify the game as you were running it. This lead me to create a scripting engine in Qbasic, and long story short, I’ve been on a yak shaving epic quest now for almost 30 years now. No game, but I have a hybrid C / Lua game engine/general purpose application platfor…

> I wanted it to have a console (like Quake) Hah! I couldn't figure out the 3D math for quake, or write a fast texture mapper, so I stuck to working on things like Doom level editors. But, I loved the quake console so I made a similar thing for my editor, basically just a hot key that swung it down and I could change a few hard-coded variables and added some commands like loading/saving files.

Thanks to the flexibility that Quake console provided, we were able to set up a three computer null-modem cable network using an additional serial port card on one computer, and play Quake multiplayer like that. We’d felt like we’d hacked the planet at the time.

Re: But yak shaving is fun (2019)

#70
post #69

Earlier quoted context omitted.

> I wanted it to have a console (like Quake) Hah! I couldn't figure out the 3D math for quake, or write a fast texture mapper, so I stuck to working on things like Doom level editors. But, I loved the quake console so I made a similar thing for my editor, basically just a hot key that swung it down and I could change a few hard-coded variables and added some commands like loading/saving files.

Thanks to the flexibility that Quake console provided, we were able to set up a three computer null-modem cable network using an additional serial port card on one computer, and play Quake multiplayer like that. We’d felt like we’d hacked the planet at the time.

We did that exact setup in college! We ran serial cables out our windows and along the outer wall to the other two rooms. It was triumphant.
Post reply on HN