How I program with LLMs

When to Use LLMs & How to Trust Them

  • Strong theme: only use LLMs where you can verify or test the output.
  • One camp: “don’t use them for what you don’t know how to do”; others soften this to “don’t use them where you can’t validate.”
  • Many treat LLMs like a fast “intern”: good for drafts, but everything must be reviewed, tested, and often rewritten.
  • High‑risk domains (security, crypto, infra config, auth) are widely seen as inappropriate for blind LLM use.

Coding Workflows: Autocomplete, Search, Chat-Driven

  • Autocomplete: some claim 2–3x productivity, especially for boilerplate and repetitive patterns; others find it distracting or error‑prone and turn it off.
  • Search: LLM chat used as “smart Stack Overflow,” especially for error messages, obscure APIs, and navigating large/complex docs; many say web search has worsened.
  • Chat-driven programming works well for prototypes, glue code, and unfamiliar SDKs, but often degenerates into messy, redundant, or subtly buggy code that needs cleanup.

Tooling & IDE Integration

  • Tools like Cursor, Aider, Continue, Codeium, Copilot, and editor plugins (VS Code, JetBrains, Emacs) are heavily discussed.
  • Desiderata:
    • Tight integration with VCS (per-command commits, easy rollback).
    • Clear diffs and multi-file “agent mode” review workflows.
    • Ability to run tests/linters automatically and feed failures back to the model.
  • Some prefer using LLMs only in the browser/scratch files to keep interactions bounded and explicit.

Security, Privacy & IP

  • Some companies have strict “no AI” policies over fears of code exfiltration, regulatory/contractual breaches, and licensing contamination.
  • Others note enterprises already trust many SaaS vendors with source, and LLM vendors offer non-training, “enterprise” or self‑hosted options.
  • There is concern about models regurgitating GPL or proprietary code and about competitors learning from leaked “secret sauce.”

Effects on Skills, Juniors & Learning

  • Worry: juniors may copy LLM code without real understanding, leading to fragile systems and unspotted security issues.
  • Counterpoint: LLMs are powerful tutors; they can accelerate learning of languages, libraries, and concepts when users actively interrogate and verify.
  • Several note that effective use correlates with strong communication skills and existing domain expertise.

Effectiveness, Limits & Domains

  • Works best for: glue code, wrappers, scripting, types, boilerplate, tests, CLI utilities, one‑off tools, and exploring new APIs.
  • Struggles with: large legacy codebases, complex refactors, novel algorithms, performance-sensitive or concurrent code, and big-context reasoning.
  • Context window limits and hallucinations remain major pain points; careful prompting, decomposition, and documentation for the LLM help but don’t eliminate issues.

Future Directions & Open Questions

  • Hoped-for advances: whole‑codebase refactoring, better handling of huge contexts, integrated test‑/model‑checking, and domain‑specific models (e.g. per language or SDK).
  • Some foresee more DSLs and language experimentation; others expect adoption barriers for languages underrepresented in training data.
  • Overall sentiment: big productivity gains for certain workflows, but far from a universal or fully trustworthy replacement for experienced engineers.