Chat is a bad UI pattern for development tools
Natural language vs programming precision
- Many argue natural language is inherently ambiguous; once you must be “careful” and exhaustive, you’ve effectively created a programming/specification language, not everyday speech.
- Others counter that plain English can fully specify complex systems, but only when used in a formal, constrained way (formal specs, legal contracts)—again blurring into a DSL.
- Several comments note that most people cannot naturally write such precise specs; “technical English” is effectively a specialized language requiring expertise.
- This leads to predictions of new, higher-level programming DSLs or subsets of English tailored for AI (“structured prompting,” Gherkin-like behavior specs, pseudo-code that the model turns into code).
Strengths and weaknesses of chat for development
- Critiques: chat is linear, ephemeral, hard to search, and bad as a source of truth; context gets polluted; you must re-explain intent; it’s like building software inside a Slack thread.
- Supporters: for many, chat feels like pair programming or rubber-ducking—excellent for brainstorming, clarifying ideas, doing small refactors, generating boilerplate/tests, and one-off scripts.
- Several note that chat excels at “fuzzy generation” (e.g., image prompts, UI sketches, high-level design), but is poor for precise, large-scale system evolution.
- Some go further: chat (and even Slack/Discord) is a poor UI for any long-lived collaborative artifact compared with documents, tickets, and versioned files.
Documents, specs, and structured interfaces
- Strong thread arguing that software is really built from documents: PRDs, specs, tickets, architecture docs. Using those as primary AI input is seen as more scalable than ad-hoc chat logs.
- People describe workflows where requirements docs, checklists, .cursorrules, architecture.md, or “scratchpads” drive the model; chat then becomes local commentary around these artifacts.
- Others propose declarative pseudo-code or DSL-like specs that AI translates to implementation, with chat only for incremental updates (“make this gradient red,” “add a name field”).
Tooling and alternative UIs
- Experiences with Cursor, Zed, Windsurf, Aider, cline, Continue, etc.:
- Inline diffs, per-hunk approval, and tight git integration reduce the “black box” fear.
- Automatically gathering relevant code context works sometimes but can be flaky.
- Many find autocomplete (“super-completion”) more valuable than chat itself.
- Suggested UI directions: visual sketch-to-code (e.g., tldraw-style), multimodal UIs, block markers in code (named regions the AI edits), hierarchical/threaded chats, voice-driven coding, spec-driven agents, and IDE overlays that feel more like HUDs than chat windows.
Limits of current LLMs
- Complaints that models rarely ask clarifying questions and often confidently produce wrong or context-mismatched code, especially in niche or complex domains.
- Verification often takes as long as (or longer than) just writing the code, especially for developers who “think by coding.”
- Context-window limits, non-determinism, and chat-history pollution are recurring pain points; some tools respond by aggressively pruning context or isolating tasks.
Broader UI and control perspectives
- Several commenters stress that computers should be tools directly operated by users, not semi-autonomous agents you “negotiate” with; chat feels like pleading with “Mr. Computer.”
- Others see chat as just one layer: great for ephemeral dialogue around more durable artifacts (code, docs, diagrams), not a replacement for them.
- Overall sense: chat is useful but fundamentally incomplete; the “next phase” will likely combine structured specs, richer UIs, and more explicit workflows on top of LLMs, with chat as an auxiliary channel rather than the core interface.