AI-Powered Developer Workflows: How LLMs Are Reshaping the Engineering Day
← Back to blogAI/DevOps

AI-Powered Developer Workflows: How LLMs Are Reshaping the Engineering Day

J
Jason Miller
· 10 min read

Two years ago, "AI for developers" meant a slightly smarter autocomplete. Today, teams that have actually integrated LLMs into their workflows report something more significant: the texture of the engineering day is changing. The grind work — reading unfamiliar codebases, writing boilerplate, hunting down the right Terraform argument, drafting that runbook nobody ever has time for — is shrinking.

This post isn't about hype. It's about what's working, what isn't, and how to think about integrating AI tooling into a real engineering team without turning it into a productivity theater exercise.

The Gap Between "AI Demo" and "AI in Production"

The typical AI demo shows a model generating a working React component in seconds. The typical engineering problem looks nothing like that. It involves a codebase with 12 years of accumulated decisions, a deployment pipeline with three different config systems, a service dependency graph nobody has fully mapped, and a bug that was introduced during a migration six months ago.

The demos aren't lying — LLMs really can generate useful code fast. But the gap is integration: how do you get the LLM to understand your codebase, your architecture, your conventions, so the output is actually useful rather than plausible-but-wrong?

The teams seeing real productivity gains have solved this gap. Here's how.

What's Actually Working

Code Review First-Pass

One of the highest-ROI uses isn't code generation — it's code review augmentation. Before a PR goes to human review, running it through an LLM with context about the codebase standards catches:

  • Missing error handling on new API calls
  • N+1 query patterns (when the model has been primed with your ORM patterns)
  • Functions that duplicate existing utilities
  • Incomplete tests that test the happy path only

This isn't replacing human review. It's making human review faster by eliminating the mechanical catches, so reviewers spend their attention on architecture and intent.

The key insight: LLMs are good at applying a rule consistently. Humans are good at knowing which rules matter here. Play to both strengths.

Documentation Generation — With a Catch

LLMs can generate documentation from code. This is obviously useful. But the catch teams discover quickly: the documentation is syntactically correct and logically plausible, and about 15% of it is subtly wrong in ways that only become obvious when someone follows it and hits an error.

The workflow that works: generate documentation, then have the author of the code do a targeted review pass focused only on correctness, not polish. This is faster than writing from scratch. The author doesn't have to overcome blank-page inertia — they're editing, not writing.

For runbooks and incident response playbooks specifically, this workflow is transformative. Runbooks are chronically underdocumented because writing them during or after an incident feels like punishment. Having an LLM generate a first draft from the incident timeline and Slack thread, then having the on-call engineer spend 20 minutes correcting it, produces dramatically better runbooks than the alternative (which is usually nothing).

Context-Aware Debugging

The headline use case for AI in debugging is "tell the LLM your error and it fixes it." That works for simple, self-contained errors. For production bugs in complex systems, it doesn't — the error message alone is nowhere near enough context.

What does work: structured context injection. Before asking the LLM for debugging help, provide:

  • The error and full stack trace
  • The function or service that produced it, with surrounding code
  • The relevant configuration (sanitized of secrets)
  • Recent changes in the area (a focused git log and diff)
  • What you've already tried

With this context, LLMs become genuinely useful debugging partners — not because they know your system, but because they're very good at pattern matching against common failure modes and reasoning about causality.

Some teams have built internal tooling that automatically assembles this context bundle from their observability stack when a bug is being investigated. This is worth doing once you've validated the pattern manually.

Infrastructure-as-Code Generation

Terraform, Helm, and Kubernetes manifests are an area where LLMs punch above their weight. The reason: these configs are largely declarative and well-structured, LLMs have seen enormous volumes of them in training, and the failure mode (a bad config) is usually caught at plan/apply time rather than silently.

Generating a first-pass Terraform module for a standard pattern — VPC with public/private subnets, RDS with appropriate security groups, an EKS cluster with managed node groups — saves the 30–60 minutes of reading docs and cross-referencing examples. The LLM output still needs review (resource naming conventions, tagging standards, security hardening), but you're reviewing rather than authoring.

The workflow that doesn't work: asking the LLM to "write me the Terraform for our production database." The output is plausible but generic. The workflow that does work: asking for a specific module with specific parameters, then reviewing against your organization's standards.

Onboarding Acceleration

One underappreciated use case: helping new engineers get up to speed on an unfamiliar codebase. Instead of waiting for context transfer from a senior engineer, a new team member can use an LLM to:

  • Get plain-English explanations of unfamiliar code patterns
  • Understand why a particular architectural decision was made (by asking the model to reason about the trade-offs between alternatives)
  • Generate a map of how data flows through a service

This doesn't replace mentorship — it removes the friction that makes mentorship hard. The senior engineer's time is better spent on design decisions and code review rather than explaining what a function does.

What Isn't Working (Yet)

Autonomous Code Changes in Production Codebases

The tooling for agentic coding is improving rapidly, but autonomous agents making changes across a large production codebase remain risky. The current failure mode: the agent completes the narrow task it was given while introducing subtle regressions in related code it didn't fully understand.

The safe zone today: agentic coding in tightly scoped, well-tested areas where any breakage is immediately visible in CI. The pattern that's gaining traction is "agent proposes, human reviews, CI validates" — not "agent ships."

Replacing Architectural Judgment

LLMs will confidently explain why microservices are the right architecture for your use case and equally confidently explain why a monolith is the right architecture for your use case. They're not making a judgment — they're generating plausible responses based on the framing you provided.

Architectural decisions depend on organizational context, team capabilities, operational maturity, and business constraints that are genuinely hard to communicate in a prompt. Use LLMs for research and option generation, not for making architectural choices.

Security-Sensitive Code

LLMs trained on public code have learned the patterns of common code, which means they've also learned the patterns of common security mistakes. Using LLM-generated code for authentication, authorization, and cryptography without careful expert review is a meaningful risk. The code looks correct. It often isn't.

Building the Infrastructure for AI-Assisted Development

If you want to move beyond ad-hoc LLM usage to a systematic productivity improvement, there's infrastructure to build.

A Shared Context Library

The biggest variable in LLM output quality is context. Teams that maintain a shared library of context snippets — architecture overviews, coding standards, common patterns, security requirements — can inject this context into prompts systematically. This is the difference between getting generic advice and getting advice that fits your organization.

Some teams maintain this as a set of Markdown files in the repo. Others build lightweight tooling that assembles context bundles based on which files are being worked on. Either approach beats starting from scratch every time.

Prompt Standards

Without standards, every engineer evolves their own prompting style. With standards, the team accumulates institutional knowledge about what works. Document prompt patterns that have worked well for your common use cases — debugging, code review, documentation generation, IaC — and make them easy to reuse.

Guardrails

Define explicitly what AI-assisted work looks like in your team's process. Which outputs go through automated linting? Which require human review before merge? Are there categories of code (authentication, payment processing, PII handling) where AI assistance is prohibited or requires senior review?

The teams that have done this intentionally have fewer incidents than the teams that leave it to individual judgment. Not because the rules prevent mistakes — because writing the rules forces the team to think through where the risks actually are.

The Productivity Measurement Problem

A common question from engineering leaders: how do I know if this is actually working? The honest answer is that it's hard to measure, and the measurements that are easiest to collect (lines of code generated, PRs per engineer per week) are the ones most likely to be misleading.

Better signal: cycle time on specific types of tasks before and after adoption. If writing a new service from a golden-path template used to take two days and now takes four hours, that's meaningful. If the time from "bug reported" to "fix deployed" has dropped, that's meaningful.

Also meaningful but harder to capture: engineer satisfaction. The parts of the job that LLMs are genuinely good at eliminating — reading docs, writing boilerplate, formatting and polishing — are often the parts engineers find least rewarding. That matters beyond productivity numbers.

The Honest Assessment

LLMs are not going to replace software engineers. They are going to change what software engineering looks like. The engineers who thrive in this environment won't be the ones who resist the tools — they'll be the ones who figure out which parts of their judgment are genuinely irreplaceable and focus their energy there.

The irreplaceable parts: understanding what the system should do and why, making architectural trade-offs, recognizing when something is wrong in a way a diff doesn't show, building trust with stakeholders, and knowing when to slow down and when to ship.

The parts that are becoming table stakes for a tool: context assembly, pattern application, first drafts, mechanical review, research.

If you're leading an engineering team and you haven't thought systematically about how AI tooling fits into your workflow, now is the time. Not because the tools are perfect — they're not — but because the gap between teams that integrate them thoughtfully and teams that ignore them is starting to compound.


Thought Parameters helps engineering teams adopt new tooling and practices without disrupting delivery. If your team is figuring out how to make AI tooling systematic rather than ad-hoc, start a conversation.

Working on something similar?

We help engineering teams implement the practices covered in this post. First call is free.

Start a conversation →