I use LLMs mainly for “editing text”. Like if I have to refactor 100 lines of code and it can’t be easily done with a regexp replace I will use LLM to do it. When I have to actually modify some logic I find it easier and faster to just do it than to explain what needs to be done to a LLM and carefully check its response for subtle bugs.
Maybe I’m misunderstanding, but are you saying that you use LLMs as refactoring tools, so things like to move code around, rename stuff, extract functions, and make changes that don’t change the logic?
Or is it something else? Because as far as I know, LLMs are pretty bad at not making random changes, even if told to just reorder stuff, plus we have a lot of deterministic tools for that job, so I guess you probably mean something else. Honest question.
It’s worth noting that good IDE integrated agents also have access to these deterministic tools. In my experience, they use them quite often. Even for minor parts of their tasks that I would typically just type out.
Sometimes refactoring tools are not enough and you have to do the same change in couple of places. Boring, repetitive work. For example last thing I did is that I refactored some code and I had to change the way objects used in tests are initialized. Basically couple hundred lines of just constructors and setters. I knew exactly what needs to be created because tests where there so I feed the expected structure into a LLM and it generated the code. Saved me some boring work and I didn’t have to worry about mistakes because compiler and tests would pick it up.
I use LLMs mainly for “editing text”. Like if I have to refactor 100 lines of code and it can’t be easily done with a regexp replace I will use LLM to do it. When I have to actually modify some logic I find it easier and faster to just do it than to explain what needs to be done to a LLM and carefully check its response for subtle bugs.
Maybe I’m misunderstanding, but are you saying that you use LLMs as refactoring tools, so things like to move code around, rename stuff, extract functions, and make changes that don’t change the logic?
Or is it something else? Because as far as I know, LLMs are pretty bad at not making random changes, even if told to just reorder stuff, plus we have a lot of deterministic tools for that job, so I guess you probably mean something else. Honest question.
It’s worth noting that good IDE integrated agents also have access to these deterministic tools. In my experience, they use them quite often. Even for minor parts of their tasks that I would typically just type out.
Sometimes refactoring tools are not enough and you have to do the same change in couple of places. Boring, repetitive work. For example last thing I did is that I refactored some code and I had to change the way objects used in tests are initialized. Basically couple hundred lines of just constructors and setters. I knew exactly what needs to be created because tests where there so I feed the expected structure into a LLM and it generated the code. Saved me some boring work and I didn’t have to worry about mistakes because compiler and tests would pick it up.