Coding with LLMs

I’ve been coding a lot with LLMs this week. For some problems they are extremely helpful, but for others they completely miss the point. Here is my current heuristic:

  • If you are confident in your approach and would like some help speeding up implementation, LLMs are great.
  • If, on the other hand, you are struggling with something and really need to try new approaches and don’t immediately know which way to go, then LLMs really struggle. They need a lot of hand-holding and can keep you in cul-de-sacs longer than you might otherwise remain.

What I think has happened is that LLMs are by-and-large trained on specific answers to discrete problems (think Stack Overflow answers to specific questions), which the internet is full of. Bite sized approaches and solutions to bite sized problems are the internet’s sweet spot.

What the internet is not full of is people describing different approaches they tried, failed at, and then the ultimate choice they went with and why. Writing the long painful way that most non-trivial problems are solved is difficult and time consuming, so there’s not as much of it out there for an LLM to train on.

Can LLMs overcome this garbage-in garbage-out problem? I don’t know. I’ve been surprised enough by their advancement since the world noticed ChatGPT to not count them out. Maybe tools like Rewind, Limitless, and Recall will one day be able to gather data that could train models with higher level problem solving based on observing people work instead of relying on what they post online. The expansion of the available data for AI training beyond the public web could increase capability, while simultaneously introducing privacy concerns that will make previous privacy scares seem quaint.

For now, LLMs give you an average of the internet, which is good and bad.