Discussion about this post

User's avatar
Thomas's avatar

Do you think there’s any place for LLMs in coding? I agree that it’s not useful for me personally for building whole features or applications - that involves giving up too much control that I want to keep to have the code look and work exactly how I want it to.

But there are definitely places where LLMs save me a massive amount of time - line autocomplete, creating sample data for testing, adding missing unit test cases, etc.

Oliver Batchelor's avatar

I'm on the fence with this; it can be really good, but it can also be trouble. It's great for prototyping new ideas from scratch, but it gets difficult when you get more code; it tends to make a mess of everything.

So you have to:

a) know what you want - recognise the right solution when you see it (which requires still understanding the domain)

b) have good processes in place, such as integration testing (which can also help to write to some degree)

For example, with programming, if you're using Python, it can really pay off to use a type-checked subset of the language and have a significant amount of testing in place. I think a lot of people are waking up to this and realising that they were lax on this to begin with - we've been spending quite a bit of time on this.

It's also really addictive and becomes a crutch; if it fails to converge on a solution, then it's tempting just to keep hoping that it will fix everything for you... kind of like if you're gambling and you just keep going thinking that eventually your luck will change. It somewhat discourages you from understanding the details, which can impair you. Mind you coders do this all the time even without AI coding, there's some problem you can either a) knuckle down and understand deeply what's wrong or b) randomly prod things and hope you get lucky!

On the flip side, you can get a lot of productivity out of it - but you really have to tidy up the mess, and I don't believe vibe-coding is effective in the long run (yet!?). I've heard a lot of people talk about it as a productivity multiplier, for people who are very capable it can reduce the burden of writing a lot of boilerplate so they can have time to focus on details which matter - but for those with less discipline it can lead to a giant mess.

.. and I fully agree with your sentiment on "The Art of Language" - I haven't seen any of these systems produce code which I would describe as elegant, you can get there but it currently needs a person to drive it, to setup all the abstractions and figure out the details - and even then you'll see that these LLMs always like to take the easy way out, do things the nasty way - cheat the tests etc. etc.

I also dislike this "chasing the new thing", so I'm not up there with the cool kids using the tools from 2 weeks ago.

It's hard to know if it actually makes someone more effective or not. I use it quite a lot, but I'm quite pedantic, so that I won't accept junk code - but even then it slips past you now and then! My workmate doesn't use it at all, and he's quite effective. And we have had juniors use it for things in not-so-good ways, where we've become quite exasperated and thrown it away and started again.

No posts

Ready for more?