There's more than one way to use LLMs for coding
I have heard this sentiment that developers fail to realize productivity gains from LLMs, because they don't know how to use them. The idea is that a new tool is being handed to developers without giving them training to use it properly. And the implication is that such training should be provided. The catch, I think, is that there are now several approaches to using LLMs in software development and nobody knows which one is right.
I am trying to keep track of how people use LLMs for development. Partly because I am still figuring out my own workflow and partly because I am developing my own LLM tool llobot. I read articles and blog posts by developers who detail their workflow. I mostly use Hacker News to discover articles on this topic.
So far, there seem to be at least three ways to employ LLMs to write serious amounts of code:
- Vibe coding: The idea of vibe coding is that full responsibility for the code is transferred to the LLM and the developer acts as a manager, interfering minimally in technical matters and mostly just communicating requirements and bug reports to the LLM. People had some success vibe coding toy projects, but nobody dares to do this on a large and important project.
- Spec-review sandwich: Many professional developers have discovered that LLMs benefit from a reasonably detailed specification and reasonably thorough code review. Larger tasks give the LLM enough freedom to realize meaningful productivity gains. Meanwhile, the rigor of specification and code review ensures that LLM's outputs can be trusted.
- Interactive: Not everyone is writing specifications though. Many developers issue numerous requests, each only 1-2 sentences long, and wait for the LLM to respond. IDE plugins encourage this workflow. This is expensive on large projects and likely unproductive, but it's excellent for learning and prototyping when you aren't quite sure what you want yet.
The above three options cover only coding agents. Developers also use LLMs in less conventional ways:
- Learning: People use LLMs for learning, usually via ordinary chat interface.
- Planning: Some developers are trying to involve LLMs in planning and spec writing.
- Artifacts: Smaller vibe coding projects can be completed directly in the chat interface (Claude Artifacts, ChatGPT Canvas).
- Snippets: Some developers refrain from using coding agents, but they will still ask for isolated code snippets via chat.
It's not at all clear which approach is the best one. It is very much possible we will continue to use a mix of different workflows for years before things settle. Personally, I mostly use the spec-review sandwich on broad and shallow tasks, which mostly works for me.