Don't call yourself an artisanal programmer
Posted by emschwartz 6 hours ago
Comments
Comment by jlamberts 2 hours ago
A good engineer will acknowledge this tradeoff between robustness and cost and behave accordingly. For example, if you're working on safety critical or very foundational systems like OSes, medical tech, etc you should bias very heavily in favor of robustness. If you're not, this can easily be an act of overengineering. The engineer's job is to find the right spot along the cost-correctness curve for the thing they are building.
This has always been true, and LLMs just change certain parts of the equation. For example, code writing is far less of a bottleneck than before, so "we can just try with a throwaway impl and see if this works" is suddenly economically viable. It also turns out that many things, in practice, don't need to be as correct as some of us may have believed.
We can still enjoy making quality things, but doing so is often an act of artisanship rather than engineering.
Comment by MrVandemar 2 hours ago
The economic costs of LLM use have been abstracted away, but they're still very much there. The ecological cost of building and running data centres will be a pretty heavy economic cost somewhere in the future. It's not obvious, but it still exists.
(I'm not dumping on LLMs — otherwise I wouldn't even be here. I'm not a glutton for punishment. I know well that HN users excited about LLM use now vocally outweigh, and are pretty intolerant of people who are more on the cautious/negative end of the spectrum. I don't want that trouble in my life).
Comment by globular-toast 1 hour ago
A builder fits that description. Even a cook fits that description.
Engineering is something else. It's hard to describe what it is, probably why it has its own word. Dictionaries probably offer a definition.
> A good engineer will acknowledge this tradeoff between robustness and cost and behave accordingly.
An engineer will never intentionally produce something shoddy for cost reasons. They will simply refuse to do it. What you are getting at it some tasks don't require an engineer at all. You want to build a bridge to span a kilometer of water? You need an engineer. You need to occasionally cross a ditch? Anyone could lay plank across. No engineer required. The author makes this point too, with software craftsmen.
Comment by NegativeLatency 1 hour ago
we built cathedrals without a detailed understanding of load calculations and material properties
Comment by cortesoft 4 hours ago
Comment by jolmg 3 hours ago
>> “artisanal” coders who value the experience of coding over the final product
I don't see "artisanal" as that. It may be more that they value the details rather than the experience of coding. They value the details of the final product. Details that most people will not care about. The details that are present in bespoke clothing but missing in fast fashion, the details that are present in a good restaurant's food but missing from a gas station food item.
Comment by 8note 3 hours ago
an engineer uses tools that represent the current state of the science, while a craftsman uses tools passed down as archaic art that require meticulous skill to use rather than repeatable math
Comment by echelon 3 hours ago
Very little of it lasts for long. And if it does, it's legacy banking or some ossified terrible thing people are afraid to touch - not something revered.
Every piece of software today will be rewritten. By 2100 much of it will be dead and gone. Like punch cards that have rotted away.
Comment by coldbrewed 2 hours ago
Comment by tjwebbnorfolk 2 hours ago
Comment by card_zero 3 hours ago
Comment by purpleflashing 1 hour ago
Comment by OutOfHere 33 minutes ago
Comment by g-b-r 2 hours ago
Comment by qurren 2 hours ago
The actual artisans don't need to advertise themselves as artisans, they just sell shit.
Comment by defrost 2 hours ago
There are always exceptions, of course, and people that seek out crafted goods often want to climb over counters and into workshops .. but the crafting time tends to outweigh the selling time by a magnitude or two.
The true crossovers are the artisans that make crafting a performance and sell by making, eg: Lino Tagliapietra - https://www.youtube.com/watch?v=luU1mlCZc8U
Comment by veqq 1 hour ago
Comment by barrkel 41 minutes ago
You build in safeguards, redundancy, defense in depth, recovery systems. You build models of the system and prove characteristics about it.
Software is fundamentally automation. LLMs enable automating the construction of software itself. They're much faster and cheaper than people, and they're more unreliable. (People are unreliable too!)
The immediate challenge of these times is figuring out how to reliably construct reliable software in the large, over the longer term, reliably. This is an engineering challenge, and the only way we'll get to the other side of it is by trying to do it. Things will be rough, there will be a Cambrian explosion of techniques, most approaches will fail, and many more won't survive as models improve on quality and capability. But we'll figure it out.
Making things by hand, as in the time before agentic coding, can be engineering too, but it is not the core challenge of these times, and it will soon be a hobby, or possibly a kind of luxury good. You will no more want hand-written software than you'll want a hand-made car. It will not have the precision, performance or reliability of machine-made software.
Comment by weitendorf 22 minutes ago
It does require a different kind of ego/abilities than before. My (negative) framing of the whiplash effect is that it’s a reckoning of “process fetishism”/a bad kind of careerism in the tech hiring market (because for the labor market to work, candidates need to be evaluable and sortable by businesses, and many people build an identity/optimize for legibility around “best practices” or very particular “technologies” which might get them a job).
Ultimately, you need to know and learn/be responsible for stuff, and be able to help people with your labor, not be “a type of person” that isn’t effective at the task of helping. But at the same time knowing things and being able to take accountability/help people remains critical, especially because that’s what people will want to pay for even as “time spent typing it in” decreases.
Personally, I think it will be a good thing because software and “tech” will become a more strongly domain-driven/enabling medium for real-world or specialized things. IE it is the end to “software for its own sake” or “willingness to type it in and play with Jira/jenkins/frameworks” and the beginning of something that is more applicable or knowledge-building rather than “being the X for Y at Z”. Harder but more fun :)
Comment by g-b-r 1 minute ago
LLMs have very little to do with engineering, unless you let a pair of dice decide how you build a house.
Cars are not built by AIs, they're built by extremely precise robots, over precise instructions.
I'd VERY much want a hand-made car over an LLM-made car, thank you.
Because I do want the precision, reliability and performance that an LLM-made car won't ever be able to guarantee.
Comment by tibbar 2 hours ago
Comment by spawrks 5 hours ago
Comment by Prydown 5 hours ago
Comment by dar5hak 1 hour ago
Comment by andsoitis 5 hours ago
Comment by g-b-r 2 hours ago
Comment by purpleflashing 1 hour ago
Not a loaded question but a genuine one.
Comment by dwattttt 3 hours ago
Comment by throwy98888 4 hours ago
Bruh
Comment by jaggederest 3 hours ago
The myth that we've been shipping perfect code for years, but you can't trust LLMs, is just subjective blindness. People can't see the issues that they can't see, definitionally.
You can absolutely use the exact techniques we used to use in "the old days" to produce reliable code with LLMs generating most of it. The issue is, it's really not a lot less conceptual and intellectual effort than in "the old days", at root. You speed up the programming part, but the rest is still a hard slog, so nobody is out here doing really thorough testing in ways we used to dream of.
Comment by conradludgate 3 hours ago
Comment by ChrisMarshallNY 2 hours ago
I’m still in the process of revisiting and refining the many hand-coded dependencies that I’ve created, over the years.
Most of the issues found, were corner cases, that would likely never be encountered, but they are issues, nonetheless.
Comment by matheusmoreira 2 hours ago
Comment by al_borland 2 hours ago
This can be seen more clearly with self-driving cars as an example. A self-driving car may be safer than a human driver, but when the self-driving car plows into the side of a semi truck in broad daylight… that’s generally not a mistake a human would make. Humans and AI have different failure modes, so when AI fails where we generally wouldn’t, it really stands out and gets judged harshly.
Comment by bigstrat2003 2 hours ago
Comment by julianlam 1 hour ago
I'm sorry to be the bearer of bad news: human coding has not improved a lick since then.
Comment by jaggederest 2 hours ago
Comment by ChrisMarshallNY 2 hours ago
When I started, I had to review every line, and frequently found bugs, but lately, I’ve been impressed with the quality of the code. I don’t think that I’ve had to make any code-level adjustments, in a while.
Comment by joegibbs 2 hours ago
Comment by conradludgate 3 hours ago
Comment by LastTrain 2 hours ago
Comment by kittikitti 3 hours ago
On the plus side, they're usually promoted very quickly to management and never code again.
Comment by throwy98888 3 hours ago
Comment by smackeyacky 2 hours ago
Comment by perching_aix 2 hours ago
Jokes really do write themselves sometimes...
Comment by dosisking 2 hours ago
Comment by carabiner 3 hours ago
Comment by acedTrex 3 hours ago
Comment by conradludgate 3 hours ago
It's of course impossible to have any nuance or middle ground here where you use LLMs to assist while you still focus on the engineering design decisions and the quality.
Comment by greygoo222 3 hours ago
Holy reach
Comment by Tanjreeve 2 hours ago
"Does it work" is what matters. We already know that "do this make no mistakes" works on some things. And then some things that are very "wide" e g "integrations for lots of different things" you basically write a new layer of software on top of the software in specs and .md and that yields a software project that you can mostly just add features by asking for them. But there's still deep narrow projects where creating that context is way more work than just implementing it. And then you have some projects where you can mix approaches and use the "metasoftware" for all the cicd and boring bits but not the core. I'd argue all of the above it's kind of meaningless to try to distinguish it as even if it's fully handrolled an llms still there as a search engine and task runner.
Comment by dude_ilands 3 hours ago
Comment by Darios_World 4 hours ago