Programming is magic. You’re using symbols to guide a machine. This is not any less remarkable than it was in the 1950s, we just got used to it.
I thought it could be interesting to divide it in four modes:
- Hand coding: you type these symbols yourself, perhaps reading examples from books. This is how it was done before the web. There were many stages to it — there was a time when inputs to machines were not keystrokes, but punched cards.
- Prompt coding: instead of starting with a blank slate, you enter a prompt in a search engine and get code snippets that you copy and paste, then edit. When LLMs appeared in 2022-3, we started sending prompts to chats instead of search engines.
- Agentic coding: instead of writing the code yourself, you ask a LLM-powered agent to code something. You review the work, provide direction, sometimes edit things yourself. But most of the code is written by the agent, not you. This started being possible sometime in 2024.
- Vibe coding: the agent fully writes the code based on your specification. What changes is that you don’t look at the code anymore. You just work with natural language prompts and the system that is built; the code is invisible. This started being possible also sometime in 2024.