technology

Coding With AI: What Actually Works

A practical guide to the workflows, habits, and mindset that make AI your best pair programmer

Sathyan··8 min read

We've been here before.

When autocomplete first showed up in IDEs, people dismissed it. Real programmers type their own code. Then everyone quietly started hitting Tab and never looked back.

When frameworks arrived — Rails, Django, Spring — the same crowd pushed back. Writing your own HTTP parser builds character. Then everyone quietly adopted frameworks and started shipping in weeks instead of months.

When CI/CD became standard, when containers replaced "works on my machine," when cloud replaced racking servers — every single time, the same pattern. Resistance. Adoption. Wondering how we ever lived without it.

AI-assisted engineering is the next one. And it follows the exact same arc.

How We Got Here

Software engineering has always been about raising the floor. Every generation of tooling takes something that used to require deep expertise and makes it accessible, so engineers can spend their energy on harder problems.

Assembly gave way to high-level languages. Manual memory management gave way to garbage collection. Hand-rolled servers gave way to serverless. Each step felt like cheating to the previous generation. Each step was just progress.

AI fits right into that line. It takes the mechanical parts of engineering — the syntax, the boilerplate, the "I know the pattern but I need to type it out" work — and compresses them. What's left is the thinking, the design, the decisions. The parts that actually need a human.

Every generation of tooling lets engineers spend less time on mechanics and more time on meaning. AI is the latest step, and it follows the same pattern as every one before it.

The Shift

I used to write code. Now I describe what I want and review what comes back.

The shift happened gradually — a Copilot suggestion here, a Claude conversation there — until one day I realized my entire workflow had changed. I was shipping faster, thinking clearer, and building things I wouldn't have attempted before.

The loop used to be: think, type, debug, repeat.

Now it's: describe, review, refine.

You spend more time articulating intent and less time remembering API signatures. More time on architecture and less time on boilerplate. The keyboard shortcut you reach for most is the prompt.

AI handles the mechanical parts of coding — the parts that slow you down without making you smarter. What remains is the thinking. And that's where your time should have been going all along.

What the Numbers Say

The data is in, and it tells a layered story.

GitHub's controlled study found developers using Copilot completed tasks 55.8% faster — a statistically significant result across a randomized experiment. McKinsey's developer lab saw up to 2x speed on routine tasks like documentation and code generation, though gains shrank to under 10% on complex work.

At the enterprise level, the numbers are staggering. Sundar Pichai revealed during Google's Q3 2024 earnings call that over 25% of all new code at Google is now AI-generated, reviewed and accepted by engineers. Accenture's GitHub Copilot deployment hit a 96% adoption success rate, with 90% of developers saying they felt more fulfilled at work.

The 2025 Stack Overflow Developer Survey shows 84% of developers now use or plan to use AI tools, with 51% using them daily.

And then the caveats.

METR's rigorous 2025 study of experienced open-source developers found AI tools made them 19% slower on real-world tasks — while the developers themselves believed they were 20% faster. That perception gap matters. Google's DORA report found that despite 90% AI adoption, teams saw a 7.2% decrease in delivery stability. And GitClear's analysis of 211 million lines of code found AI driving a 4x growth in code duplication.

The pattern is clear: AI dramatically accelerates routine engineering work. The gains collapse — or reverse — when engineers stop reviewing, stop thinking, and let speed replace rigor. The tool amplifies whatever habits you already have.

Across the Entire Engineering Lifecycle

This goes beyond writing code. AI changes how you approach engineering as a whole.

Development. Scaffolding, CRUD endpoints, config files, refactoring — the stuff that's necessary but repetitive. AI compresses hours into minutes. You describe the module, review the output, refine until it fits.

Testing and QA. Describe the behavior you want to verify and AI writes tests that cover the happy path, edge cases, and failure modes you'd overlook on a Friday afternoon. Feed it your code and ask "what did I miss?" — it'll find the null check you forgot, the race condition you didn't consider, the boundary your unit tests don't cover. QA engineers using AI can generate regression suites, explore edge cases systematically, and spend their expertise on the exploratory testing that machines genuinely can't do.

Debugging. Paste an error and the relevant code, ask what's wrong. AI is remarkably good at pattern-matching errors to causes — especially the kind of bugs where you've been staring at the screen for thirty minutes and missed something obvious.

Documentation and reviews. AI can draft PR descriptions, summarize complex diffs, and generate documentation from code. It handles the tedious writing so engineers can focus on the substance.

How to Keep the Human in the Loop

The engineers who get the most out of AI treat it like a brilliant junior — fast, eager, productive, and absolutely in need of supervision.

Read every line. If you can't explain what a piece of AI-generated code does, you have no business shipping it. This is the single most important habit.

Iterate on output. First generation is a draft. "Extract this validation into a pure function." "Handle the timeout case." "This works, now make it readable." You're the editor, not the audience.

Own the architecture. AI can list tradeoffs between PostgreSQL and DynamoDB. The decision still requires understanding your system, your team, your roadmap, and your constraints. Let AI inform your thinking. Don't let it do your thinking.

Review for security. AI will generate code with SQL injection, hardcoded secrets, or missing auth checks if you let it. Review AI output with the same rigor you'd review anyone else's pull request.

The engineer who reviews AI output carefully ships faster than the engineer who accepts it blindly. Every single time.

Stay specific. "Write a function that validates emails" produces generic code. "Write a TypeScript function that validates email addresses per RFC 5322, returns a discriminated union with the error reason, and handles plus addressing" produces something you can actually use.

How to Get It Wrong

AI makes bad engineering easier too. Here's what to watch for.

Copy-paste engineering. Accepting generated code without reading it. Your codebase fills up with patterns you didn't choose, dependencies you didn't vet, and logic you can't explain. When it breaks — and it will — you're debugging someone else's thinking.

The most dangerous AI-generated code is the kind that's confidently mediocre. It compiles. It passes tests. And it introduces patterns you'd never choose if you were paying attention.

Skipping the learning. Using AI to avoid understanding a language, a framework, or a concept means you can't debug it, extend it, or teach it to someone else. Use AI to learn faster, not to skip learning entirely.

Over-generating. Prompting AI to write an entire module from scratch and dropping it in. The best results come from tight, focused prompts — a function, a test, a refactor. Keep the scope small enough that you can review it properly.

Ignoring your QA process. AI-generated code needs the same testing pipeline as human-written code. Probably more. The speed of generation can outpace the speed of verification if you let it.

The Real Superpower

Here's what nobody tells you about coding with AI:

The superpower is ambition.

Before AI, there were projects I wouldn't start because the setup cost was too high. A Chrome extension? I'd need to learn the manifest format, the messaging API, the content script lifecycle. A data pipeline? I'd need to remember the Pandas API, figure out the database connector, write the migration scripts.

Now I just start. The friction is gone. The gap between "I have an idea" and "I have a working prototype" collapsed from days to hours.

That changes what you attempt. It changes what you think is possible on a Tuesday evening after work.

AI made me a more prolific builder. The ideas that used to sit in a notes app now sit in production. That's the real shift.

Start Here

Next time you write a test, describe the behavior to an AI and see what comes back. Next time you hit an error, paste it in. Next time you need boilerplate, prompt instead of typing.

We didn't resist autocomplete forever. We didn't resist frameworks forever. We adopted them, got better, and moved on to harder problems.

This is the same moment. The tools changed. The craft didn't.

The code is still yours. The architecture is still yours. The judgment, the taste, the engineering — still yours.

AI just raised the floor again.

Related Articles

More from Narchol