Thank you for another very insightful article. This crystallized a lot of my own thoughts around working with LLMs.
I'm pretty low-level, but I've definitely become a better programmer through learning from LLMs. I find this works best if I go step by step, asking for help with a specific problem at a time, reading through the explanation which they helpfully give, and testing the result, then going on the next step. If I get the LLM to do too much at once, I invariably run into problems and lose the thread of what is going on so it is very hard to fix them. I'm glad I learned the fundamentals of programming long before the era of LLMs started. I don't know how the next generation of programmers will learn.
I appreciate how the LLM enables this learning and levelling up on my ability to code, but I appreciate equally or more that what it is enabling is for me to stand on the shoulders of giants - the many contributers to the online code and documentation that the LLM was trained on.
The disturbing thing is that simultaneously LLMs are in multiple ways plundering, polluting, and damaging this shared commons. It's like killing the goose that laid the golden egg, and the scorpion stinging the fox that was carrying it across the river, all in one. And that could be a whole other post.
I hope many people will read what Akis has written and take it to heart.
I've certainly picked up a few good habits and learned some neat Python tricks and structures while reviewing LLM-generated code. They can be very good for learning, as long as we still spend the time to actually learn. And
I also wonder how the next-gen of software devs are going to learn enough programming that they can later review generated code properly. Worse, how they'd debug code that runs but the logic is faulty.
I suspect we will need much more traceable and reviewable AI-assisted workflows: prompts, tests, intermediate steps, and explanations that can be inspected. Hopefully before we accumulate too much technical debt.
Thank you for another very insightful article. This crystallized a lot of my own thoughts around working with LLMs.
I'm pretty low-level, but I've definitely become a better programmer through learning from LLMs. I find this works best if I go step by step, asking for help with a specific problem at a time, reading through the explanation which they helpfully give, and testing the result, then going on the next step. If I get the LLM to do too much at once, I invariably run into problems and lose the thread of what is going on so it is very hard to fix them. I'm glad I learned the fundamentals of programming long before the era of LLMs started. I don't know how the next generation of programmers will learn.
I appreciate how the LLM enables this learning and levelling up on my ability to code, but I appreciate equally or more that what it is enabling is for me to stand on the shoulders of giants - the many contributers to the online code and documentation that the LLM was trained on.
The disturbing thing is that simultaneously LLMs are in multiple ways plundering, polluting, and damaging this shared commons. It's like killing the goose that laid the golden egg, and the scorpion stinging the fox that was carrying it across the river, all in one. And that could be a whole other post.
I hope many people will read what Akis has written and take it to heart.
Thanks for the comment, Fiona!
I've certainly picked up a few good habits and learned some neat Python tricks and structures while reviewing LLM-generated code. They can be very good for learning, as long as we still spend the time to actually learn. And
I also wonder how the next-gen of software devs are going to learn enough programming that they can later review generated code properly. Worse, how they'd debug code that runs but the logic is faulty.
I suspect we will need much more traceable and reviewable AI-assisted workflows: prompts, tests, intermediate steps, and explanations that can be inspected. Hopefully before we accumulate too much technical debt.