Coding with LLMs in the summer of 2025 (an update).
When Salvatore Sanfilippo writes about coding (writes about anything tbh) you should read carefully. He’s one of the most famous and smart programmers in the world, so his take and embrace of AI-assisted coding is to be taken seriously:
LLMs are great teachers especially if you approach them as your partner:
Engage in pair-design activities where your instinct, experience, design taste can be mixed with the PhD-level knowledge encoded inside the LLM. In this activity, the LLM will sometimes propose stupid paths, other times incredibly bright ideas: you, the human, are there in order to escape local minimal and mistakes, and exploit the fact your digital friend knows of certain and various things more than any human can.
while LLMs can write part of a code base with success (under your strict supervision, see later), and produce a very sensible speedup in development (or, the ability to develop more/better in the same time used in the past — which is what I do), when left alone with nontrivial goals they tend to produce fragile code bases that are larger than needed, complex, full of local minima choices, suboptimal in many ways.
This has been my experience with Claude Code lately. It works wonders with very well-defined tasks and under at least some supervision, but leave it alone with complex features and it will most-definitely go down the wrong path and end up in a rabbit hole.
the ability to communicate efficiently is a key factor in using LLMs.
Hard to argue with this. AI-coding tools turn you into an engineering manager, and great managers are great communicators. Many problems with LLMs are due to bad prompting (and increasing with bad “contxt engineering”). The good news are that you can become a better communicator by using the LLMs but don’t delegate your thinking entirely to them.
Which brings us to the last, and most important, point:
Always be part of the loop by moving code by hand from your terminal to the LLM web interface: this guarantees that you follow every process. You are still the coder, but augmented.
I am not sure if copy/pasting everything is the best workflow, depends on what you’re after. But you should at least read everything the LLMS touches and understanding before accepting any changes. “Vibe coding”, we’re seeing can go wrong very fast.