I have an enormous respect for Rich Hickey; I think he’s one of the best thinkers among software developers. When I read his post ‘AI’ is Not a Tool (gist), I initially agreed. It felt like a compelling argument. But the more I thought about it, the more I disagreed.
It still feels right, but it doesn’t hold up to scrutiny as an argument. Which is really interesting to me, someone with conflicted feelings about LLMs but who uses them every day, and who wants to get better at using them.
This has been eating at me. So I need to get some thoughts out.
The post tries to define tools, and seems to try (but ultimately fail) to avoid the trap of definition-based arguments: definitions are impossible to agree on. It’s an epistemological distinction, and ultimately not really a valid argument. For any definition of a tool, I could come up with a counter-example: something that is obviously a tool but doesn’t fit the definition, or something that obviously isn’t a tool but does fit the definition.
I’m not really going to argue with the post’s definitions of tools, which are vague (good) but somewhat circular (bad). Instead, I’m going to say that I see LLMs being used as tools every day, and I use them as tools every day. I see them wielded (sometimes surgically and sometimes horrifically). Some developers are good at using LLMs and some are not; I have improved with how I use them to solve problems. Certainly, by some definition, they could be tools?
Or maybe LLMs are merely “automations” instead, not “real” tools. But here’s the counterexample: if hand saw is a tool, what about a table saw? Table saws are more dangerous and less predictable, and could be similarly described as “automations” rather than tools. But I don’t think anyone would argue they are not tools in some respect.
The post tries to make a distinction without a difference, and ends with this somewhat ominous paragraph:
LLMs are not tools. I know many people use the phrase “just tools” simply to indicate “they are what you make of them”. Except that’s not true. Automation has intrinsic properties and differences from tools that you ignore at your peril.
Based on this post, Rich Hickey clearly doesn’t think highly of LLMs. But the post doesn’t present an actual logical argument. It’s a kind of argument from disgust. And it was disappointing to read from someone whom I respect a great deal.
Among software developers with (strong) opinions on AI coding agents, I see two groups emerging:
- The first group asks, in horror, “how could you trust code that’s generated by an LLM??”
- The second group asks, with curiosity, “how could you trust code that’s generated by an LLM?”
I’m in the second camp, and increasingly so.
(I would have had an easier time getting onboard if AI boosters would stop being so unhinged. But I digress.)
As I’ve written about before, I have a hard time relating to software developers who don’t express curiosity towards LLM-based coding agents. I absolutely relate to having conflicted feelings about them, but I do see an increasing rift here as software developers talk past each other. And I’m not sure what to do about it.