If only I got to spend my time writing interesting code and learning interesting things.
The point isn’t that day to day is full of brilliant insight, but that process year over year you become really adept at these things you’re struggling with and you see patterns more clearly and can cut through the struggle faster and focus more on doing cool things with that ambiguity.
Frankly today is better in these respects than it’s ever been. The tooling for insight and debugging is mind bogglingly powerful relative to 30 years ago. But that doesn’t make struggling in your own ignorance without a clear guide through any more fun. That feeling of desperate helplessness and idiocy is the feeling of LEARNING, which is compounded by ambiguity. It’s easy to feel angry with X for not doing Y (I.e., lack of documentation) for your situation, but the right answer is to buckle down and figure it out and focus on developing skills to make it easier next time you have to learn.
What do you think a mechanic does ALL DAY? Very few carpenters start with a raw blank of nice wood and craft something amazing. It's all interpreting plans (poor spec), framing (boiler plate), figuring out an addition (bolting on features to a shaky platform), correcting things that have failed (maintenance), addressing things that were built wrong (bug fixes) or fixing shoddy renovations (tech debt). Sounds EXACTLY like the majority of software development.
Are you implying that they are fixing their tools rather than cars? I don't know any mechanic that would put up with that and would replace their tools with tools that actually work.
It was basically unusable. Fundamentally flawed design. There's no possible way anyone tried it and went "yes, this is fit for purpose". Worse, the complexity of its design which caused so much of the trouble (it had a single-sided blade that could be spun around—the locking mechanism was simply flawed, I didn't get a bad one, it just could not work well) could have been entirely avoided by spending barely more money on manufacturing. I mean it was also very dull but at least it would have been usable, if slow.
I managed one jamb with it, taking probably 10x as long as a version of the tool fit-for-purpose would have, busting up my knuckles plenty, and making an uglier cut besides, so I could move on, and ordered a different one for the rest, since the store didn't have any other models.
That's about the median quality of all tools and libraries I encounter in software, in my estimation. Size of vendor or how "smart" their employees allegedly are (LOL. LMFAO.) doesn't seem to much matter, either. And usually it's like that crappy jamb saw being the only jamb saw available at the store, except there's no option to skip the big box store and look for acceptable ones online, and if there are any other options they're somehow even worse.
Luckily 99% of the tools for "real" work I've bought haven't been anywhere near that bad. Even the cheap ones. Almost all of them are more-or-less sensibly designed and actually do what they're supposed to without causing a huge amount of trouble.
Most of an average day programming, for me, metaphorically, is swearing at this fucking piece of shit jamb saw while my knuckles bleed and I'm fucking around with its brokenness instead of getting anything done that I actually wanted to.
On the other hand the tools are mostly very simple and highly standardized. The simple tools are applied to the problem through a combination of applied experience and constructed jigs. I guess the equivalent in the software world would be classic non-fat Unix as your base tools, and building your own libraries and toolkits as your jigs (no or very limited third party deps), while aggressively avoiding complexity. You’ll get reliability this way; of course, there are serious tradeoffs.
Don’t misunderstand me, though. I agree that the modern software treadmill is horrible and needs to be tamed.
> Yeah, it’s not quite the same.
I actually don't know quite why I wrote what I did, because the concession really isn't true. I can only imagine we were discussing some romanticized view of the subject. My own experience, however, shows that reality is otherwise.
Cheap tools usually don't work well or last; you end up constantly complaining about them and constantly replacing them. This is true whether you're talking about power tools or simple hand tools. (How much do you pay for most of the software and libraries that you use?)
For the hand tools --- some things like hammers basically work, but other things, unexpectedly, do not. Handsaws and handplanes are two good examples of simple tools that are fundamentally broken from the manufacturer, and in many cases simply cannot be fixed due to design. Other tools can be salvaged, but don't work out of the box. You can shell out inordinate amounts of money to a company like Lie Nielson, or hope to get lucky on the purchase of an antique, but the typical products you might expect to work, don't.
For power tools, the cheaper tools might technically do a job, but they often function in ways which are detrimental to the work or to personal safety, and don't last long.
You might think the solution is to spend more money for quality tools, but this doesn't always work out either. I'm thinking of a DeWalt biscuit joiner and a Makita pin-nailer; both are well-respected brands for "real contractors" who rely on their tools and expect them to work. The Makita pin-nailer doesn't load its nails right, so I have to futz with it after every nail --- which kind of defeats the purpose of the tool (it didn't do this originally, but it didn't take much use before the problem developed). The biscuit joiner, despite being a well respected model, cuts slots that have so much slop in them that there's no point in using the tool at all.
Now lets talk about machines briefly. My radial arm saw (no longer a common tool, but once quite common both in homes and on jobsites) cannot be calibrated to proper specifications. One of the adjustments cannot be made to spec and it throws off several of the others. The result is a tool that, while useful, is only half-functional. I have theories, but don't know exactly what is causing the issue (I got it second-hand); I would need to completely tear it down and grok the entire design, then rebuild it, to properly fix the issue. By the way, the calibrations it does have need to be periodically checked and corrected (the RAS takes a lot of flak for this, but I find this is true of any machine with adjustments).
This is usually about the time where the internet gets up in arms and tells you to throw away the RAS and use a table saw, so lets talk about my table saw --- the fence can't be calibrated to lock parallel to the miter slots. I don't think the fence is broken by design, but I don't know exactly what's wrong. The calibration process is logical, it just inexplicably doesn't work. I suspect one of the fence rails may be slightly out of alignment. I could fix this by building my own high-quality fence system --- I have the skills --- but this is analogous to throwing out your third party library or tool and writing your own.
In all of the above cases concerning power tools, the answer is maintenance/repair, but in all cases (aside from building a new fence), it is not the work I want to be doing, nor is it work in which I am experienced, nor is the necessary work obvious through casual investigation.
Of course, I have plenty of tools that work great and never give me trouble, other than periodic maintenance, but it's the problem tools that stand out. Software is the same for me; most of it works fine, some of it breaks down due to bit rot (maintenance required), some of it is broken from the manufacturer (out-of-box repairs required), and some of it is just piss-poor in design (see hand tools above).
I still hate the treadmill just as much as you appear to, but romanticizing the life of a tradesman is probably a mistake. Entropy is everywhere, poor design and unfortunate occurrences are everywhere. I don't know if you have any personal insight into the life of a tradesman, but they deal with all kinds of BS, from all angles, that just isn't commonly discussed outside the field in question.
=== Addendum:
I keep mentioning software libraries, but those really aren't tools. They're more analogous to prefab construction components, so in that case we could talk about items such as pre-hung doors and prefab cabinetry that is supposed to save time and require less skill to install. That's great, until you discover that the item was assembled out of alignment at the factory, defeating the entire purpose. I could go on ad nauseam, but I imagine you probably get the point by now...
God, it's all just miserable and depressing when you really start digging into it, isn't it?