This is a very good description of the modern issues with slop "content" and advertising plaguing everything they touch. (including human-made slop, as the author correctly identifies)
But I disagree on LLMs being "worse than useless".
Sure, "vibe coding" an entire app from a short prompt will always give you fragile, subtly broken nonsense. *Code is the spec*. In most cases, you can't meaningfully "compress" your requirements into a short informal prompt. We need better formal languages for expressing requirements concisely and declaratively! Think: Prolog, Haskell...
LLMs are good at small tasks that you can review much quicker than doing it yourself. Something tedious, like doing some local refactoring, writing ad-hoc Bash scripts, SQL queries, FFmpeg commands. I use Bash and SQL regularly, but somehow I always have to google the exact syntax. I already use ShellCheck, by the way. It's a must, and it helps a lot when reviewing LLM output.
I like the autocomplete feature too. It often saves time when writing repetitive or obvious code. `if bad_stuff {` usually autocompletes `return Err(BadStuff)` for me. `MyStruct {` initializer usually autocompletes the list of fields for me. I know that incorrect suggestions piss off some people and make it a net-negative for them. Incorrect suggestions are common, but they don't bother me in practice.
But I disagree on LLMs being "worse than useless".
Sure, "vibe coding" an entire app from a short prompt will always give you fragile, subtly broken nonsense. *Code is the spec*. In most cases, you can't meaningfully "compress" your requirements into a short informal prompt. We need better formal languages for expressing requirements concisely and declaratively! Think: Prolog, Haskell...
LLMs are good at small tasks that you can review much quicker than doing it yourself. Something tedious, like doing some local refactoring, writing ad-hoc Bash scripts, SQL queries, FFmpeg commands. I use Bash and SQL regularly, but somehow I always have to google the exact syntax. I already use ShellCheck, by the way. It's a must, and it helps a lot when reviewing LLM output.
I like the autocomplete feature too. It often saves time when writing repetitive or obvious code. `if bad_stuff {` usually autocompletes `return Err(BadStuff)` for me. `MyStruct {` initializer usually autocompletes the list of fields for me. I know that incorrect suggestions piss off some people and make it a net-negative for them. Incorrect suggestions are common, but they don't bother me in practice.
UPDATE: I've turned this comment into a blog post. https://home.expurple.me/posts/my-take-on-llms-for-coding/