Avatar

Learning by reviewing

Is it really true that developers no longer need to write code?

Over the past few months, I’ve heard this idea repeatedly. The hypothesis here is that developers no longer need to write code since LLMs do a decent job at generating code, especially when ”properly“ prompted. So a human developer should instead learn how to prompt and how to the review generated code.

This sounds to me a lot like asking someone to learn Japanese purely by using Google translate. Google translate is a life saver when answering a quick email in foreign language or while on holiday. However, when I lived and worked in Japan for a couple of years, there wasn’t a way in the world I could’ve managed without actually knowing Japanese. And the only way to learn Japanese, was, drumroll.., to practice Japanese. And over a period of time, I was able to learn enough Japanese to better articulate what I needed and in general be a part of the Japanese life.

Fluency in a language comes from building mental models by expressing ideas in that language. Language encodes ideas so efficiently that people who speak different languages actually process information differently. And so much is lost in translation that in many cases, it’s impossible to truly express an idea in one language in another.

This deep bond between language and thinking is also true for programming languages. Learning Go or TypeScript or SQL requires thinking in Go/TypeScript/SQL. Coding by prompting, in contrast, uses natural language (mostly english) to describe the problem and the solution, which largely trains the natural language part of the brain. While this is a necessary skill for programming (especially in system design), natural language thinking doesn’t help us get better at the target language say, Go/TypeScript/SQL.

Reading is a great way to learn and it’s an extremely valuable part of the learning toolkit. But no one is making the claim that we can (google) translate our way to linguistic fluency. So why do we simply accept the idea that developers no longer need to write code?

There might come a day where LLMs are so good at generating code that development truly becomes “No Code”. We define systems in natural language and LLMs can generate correct, reliable, consistent and efficient code.

Until that time, knowing how to actually write code is critical for software engineering.