LLMs Force Engineering Discipline We Should Have Had All Along

First published at Thursday, 10 July 2025

LLMs Force Engineering Discipline We Should Have Had All Along

I've been building an MVP for a stealth startup over the past few weeks, coding extensively with LLMs. After managing development teams for years, I can finally articulate what working with Claude, Cursor, and friends actually feels like: like supervising an overeager junior developer (team) on cocaine.

The Documentation We Never Wrote

LLMs require explicit instructions. They can't read your mind, interpret social cues, or adapt to unspoken team conventions. Every architectural decision needs to be documented. Every coding standard must be spelled out. Every business rule requires clear articulation.

This isn't an LLM limitation – it's good engineering practice we've often been too lazy to implement. (And I've been using the em dash since years in manual typing, it's Alt-Gr+- on Linux.)

For my current MVP, I've essentially condensed the best parts of the Qafoo blog about object-oriented PHP principles into a single document. I've written down patterns that I'd normally communicate through code reviews and conversations.

The result? The clearest technical direction I've ever provided to any "team member."

The Coaching We Should Always Do

Here's my current LLM primer: "Be critical about suggestions and don't just agree with me. Really evaluate ideas. Be optimistic, critical and solution oriented."

Sound familiar? That's exactly what I should tell every developer I hire, and basically also in every meeting before we start talking. But I don't (always), because I assume they'll figure it out through context and experience.

With humans, I rely on:

  • Osmosis through pair programming

  • Formal feedbacks in 1:1s and training sessions

  • Learning from failed pull requests

  • Picking up patterns from senior team members

  • Informal feedback during coffee chats

LLMs force me to be explicit about expectations I've always held but never articulated (while we even blogged about them). The result is better guidance for artificial intelligence – and probably better guidance for human intelligence too.

The Standards We Compromise On

Working with LLMs makes errors immediately obvious. A 30-60% failure rate forces you to invest in clear specifications, comprehensive testing, and robust review processes.

With human teams, mistakes are subtler and less frequent. Good developers self-correct. Senior engineers catch issues before they ship. The system works well enough that we don't invest in the infrastructure to make it work excellently.

But what if we applied LLM-level discipline to human teams?

  • Explicit architectural decision records for every major choice

  • Written coding standards instead of a document updated every two years

  • Clear business requirements documents instead of Jira conversations

Human developers are better at filling gaps and working around unclear requirements. This is usually helpful, but it can mask underlying problems with product definition or technical communication and even lead to more subtile bugs.

Scaling Through Documentation

Twenty years of team leadership has taught me that knowledge transfer is the one of the hardest part of scaling engineering organizations. Tribal knowledge lives in senior developers' heads. Context gets lost when people leave. New team members struggle to understand unwritten conventions.

LLMs can't rely on institutional knowledge or social context. They need everything written down clearly. This constraint forces you to create the documentation infrastructure that makes human teams scale better too.

The Uncomfortable Truth

Most engineering teams operate on shared understanding, implicit knowledge, and good intentions. This works until it doesn't – usually around 15-20 people, when informal communication breaks down.

LLMs require the explicit processes that high-performing large teams eventually develop anyway. They just force you to develop them upfront instead of retrofitting them during a scaling crisis.

Maybe the real value of coding with LLMs isn't the code generation. Maybe it's finally building the engineering practices we should have had all along.

The technology is temporary. The discipline is permanent.

Subscribe to updates

There are multiple ways to stay updated with new posts on my blog: