> If you’re a programmer, you might think that the fiddliness of programming is a special feature of programming, but really it’s that everything is fiddly, but you only notice the fiddliness when you’re new, and in programming you do new things more often.
I think I'm drawn to programming because the fiddliness is tractable, and fixable.
In which other domain can I:
* introspect the relevant processes/state, step by step
* snapshot/undo
* fix niggles, once and for all, and for everyone; and get their fixes too
* probe and test my inputs and outputs, checking for quality. Get notified if a part changes in a way that breaks me.
And the only tool I need is a commodity general purpose PC.
When I try woodwork, or even electronics, I'm struck by much friction is in even simple tasks: tools, parts, lead time, safety, space, physical effort, cost, ...
(2017) with a few significant past discussions:
https://news.ycombinator.com/item?id=16184255 - Jan 19, 2018
https://news.ycombinator.com/item?id=22020495 - Jan 11, 2020
https://news.ycombinator.com/item?id=29429385 - Dec 3, 2021
https://news.ycombinator.com/item?id=38407851 - Nov 24, 2023
https://news.ycombinator.com/item?id=43087779 - Feb 21, 2025
One thing he didn't mention is getting the first and last steps to be the same vertical distance as the others. Nothing will trip you up (literally!) so easily as a final step that is a different height than the other steps.
I thought of this because this morning I was putting a small fence around some plants we want to protect from deer. The fence consisted of 20 sections (bought on Amazon), each about 24 inches wide. Our ground is like rock, and the fence was not that sturdy, so I had to pound a heavy spike into the ground to the depth of the fence posts, then pull the spike out and put each section's legs in, leaving room for the next section's leg to go into the same spike hole. I wanted to be sure I was putting each section in at the right position, lest I end up with a 12 inch gap and have to go back and adjust lots of sections. Long story short, I pretty much succeeded, although when it cools down I may adjust a few sections. But the problem was sort of like the stairs: I wanted an integer number of fence sections, each the same length, to exactly fit around the bushes---just like you want an integer number of vertical steps in a diagonal stair, each of the same (more or less standard) height.
Yes but what about AI? (Perhaps the most annoying words written in the last few years mostly on LinkedIn).
But actually in the years since this was written, I do think the world has shifted. Doing things on a computer used to be really hard. Even just installing a framework or getting >python to call the right python on windows. Then install Django and get Django to work with nginx etc. It was just a lot of thankless, frustrating work to get from zero to 1%.
Aside from AI, the tools and packages and culture of computing has gotten better. But AI means you just get all the trivial but difficult stuff for free. And I think a lot of people who would have given up now make it through to see something work and they’ll feel the thrill of building something. It’s just better and easier now.
> Surprising detail is a near universal property of getting up close and personal with reality.
> As you learn, notice which details actually change how you think.
Lovely article. The older I get the more I appreciate this.
One point worth making: in many cases, after learning to see & appreciate the details, you gain the power to ignore the details that don't matter to you. This can be quite freeing.
Related, amazing read about Meccano teaching you reality-based work, in contrast with Lego:
https://contraptions.venkateshrao.com/p/truth-in-inconvenien...
I have read this article already and "reality has a surprising amount of detail" has become a phrase for me. But, I read it again today because the writing is so good. This guy is a gifted writer.
I think we have all written some code that looks bulletproof to us. We run a set of tests with all the inputs we can think of, and it passes with flying colors (after several iterations of course).
Then we give it to someone else and it fails on their first or second attempt. They simply tried to use it in a way that we did not anticipate. It doesn't mean that we are dumb for not thinking of those possibilities; it just means that we did not think of every one of them.
Reality does not have amount of details, it is infinite in all directions. Its only that we perceived certain amount of details, some more some less. One can spend their whole life mastering a single aspect and there always will be room to improve.
This sentence is the exact reason laying people off and replacing them with AI doesn’t work.
This is exactly why I stick to programming computers and building "things" using it.
Lovely article!
Contemplating the details of a thing is really satisfying. At times I find myself sitting there and trying to decompose the astonishing amount of work, research, both evolutionary and revolutionary progress that has gone into reaching the current level of something. Buying myself a coffee and stare at the local ferry and acknowledge that someones life's work went into figuring out how to make the paint stick to metal.
Naturally the other point also sticks.. I too often get stuck on the details. :P
Really generally shitty collision detection and detail. It's just that when you notice, it rolls back and adds resources until you think it's fine.
Tell me about it, I maintain an open source project in the civil engineering space and it's ... detailed.
Such a great read. This sentence is particularly chilling:
> you could be intellectually stuck right at this very moment, with the evidence right in front of your face and you just can’t see it.
This hits for to me because I'm currently adding on to my house. Or rather, paying professionals to add on to my house, because I actually want it to get finished.
I visit every couple of days. It's REMARKABLE how fast things get done. One day, there were no walls. The next day, almost all of the walls were in place!
... and yet, at the same time, things take a long amount of time because reality has a surprising amount of detail. I haven't taken into account how much you have to do to frame a house. So incredible amounts of work get done, day after day, but 3/4 of them are things I had no idea needed to get done! Gazing up into the roof, the detail is incredible. The PSL beams, the brackets, the joists, the trusses, just.. EVERYTHING!
I thought the structural engineer's plans had an incredible amount of detail on them, and they do, but they also don't really say anything about _how_ to build the thing. How to put up the walls, how to hold them together temporarily, how to lift beams into place. In what order things can and should be done. That all just takes experience.
My favorite post on HN. Upvote it everytime. Use this phrase so often now.
This has always been the fun part of programming to me. I know most people hate it, but I really don’t mind being on-call (ok I hate being woken up) and fixing weird bugs that users run into. All these small edge cases that people run into because reality is odd. Of course I’m in scientific programming so that probably colors my view.
It’s always a little disappointing to me when I think I’ve run into something unique but it ends up being user error or something.
One of my favourite essays. xkcd has a good take too 1741-Work
Based on what is the level of detail to reality suprising? To me suprising means mysteriously or improbably unexpected. Why should we expect reality to be simple. Note complex and simple are somewhat subjective. The human brain evolved to just sufficient baseline level be able to handle the level of complexity of reality. So why would it be unexpected that humans find realty complex when our brains are calibrated just enough to handle it.
An ancient article that now looks even cheesier. It's so hard to make those goddamn stairs. So complex, such wisdom.
The first time I built a freestanding bookshelf, I put a lot of effort into making the feet level and the back straight and at a right angle to the feet. Once I put it up against the wall I'd built it for, I realized I'd solved completely different problem than the problem I really had. I needed crooked bookshelf, since the wall was totally tilted.
In the end I screwed some wall shelves in and called it good enough.