Comment by drcxd
5 days ago
> Software engineers are the translators.
True, recently I started feeling that part of what I had been doing is simply translating natural language to programming languages. Though coding also involves things such as algorithm and data structures, context and background knowledge, but these can all be done in natural language. Once the natural language description is given, what remains is only translation. LLMs have good knowledge of almost anything, though they are currently weak on inference or derivation, but this already makes them good on the two end of software engineering -- context knowledge and translation.
I understand those people who hate LLMs for coding, I partly share the feeling, because I enjoy typing on a keyboard, editing part of the code, reading the characters, I am an Emacs user. If LLMs can do the work, even if just save the typing and editing part, some of the fun has been eliminated for me.
Think about chess and Go, though AI can easily beats human now, people are still playing it. For programming, if one day AI can do 80% of the programming work, I guess only few of programmers today can keep doing it as a job. Just like few people can play chess and Go as their job.
I don't think that's a fair characterisation. I gave these tools the benefit of the doubt and many genuine tries, and still do occasionally. My judgment that they're unfit for the task is based on finding that they objectively don't help me work. There are studies showing that LLM use slows experienced developers down, even as they believe the opposite. I used to be the only one in my immediate work environment who thought LLMs are of jack use in my development work. Over the past year, most devs who used LLMs heavily have now switched over to my view.
Translation is natural language in, natural language out. That has very little to do with programming. Dijkstra knew back in the 70s that the very concept of natural language programming was bullshit, and that fancy new tech is never going to change the fundamental issues with the idea. In my opinion, his argument is as valid as ever.
Edit: I wasn't trying to imply that natural to natural language translation is trivial. The best LLM tools can be pretty shit at that even today, too. Tried using localised Microsoft developer documentation lately. It's unintelligible.
Thanks for you opinion. I agree with your opinion that current LLMs are less helpful to senior/experienced developers. Of course LLMs can't solve complicated, advanced problems, otherwise we would see great advance in science and technology now.
However, there are a lot of trivial work in software development. For example, the behavior of a button, or editable text. Same to any kind of art, most developers in the industry are doing trivial or ordinary work, and few are solving challenging problems. What I mean is that those who do trivial work will be culled, or liberated, from doing that as a job, while the elite could remain there to solve unique, challenging problems.
Recently I have been working with coding agent to fix bugs and implement new features. I implemented my solution first and let coding agent come up with its own solution. Most of the time, the coding agent came up a better solution than mine. Most of the time, its solution was not worse than mine, and I would keep most of its code and only do some minor improvement. Most probably, I am not an experienced/advanced developer, since I seldom deal with advanced math/algorithms/architecture in my day-to-day work. Thus, it would be natural that we have different feeling to the same thing.
I am interested in Dijkstra's idea about natural language programming you mentioned, is that EWD667?
https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667...