I’ve been writing code since the 1990s. Back then, tools were slow, documentation was scarce, and you learned by doing - often the hard way. AI feels like another toolchain revolution: promising, occasionally magical, and sometimes deeply frustrating.
This post is for those of us who’ve seen multiple waves of tooling change. It’s short, practical, and opinionated: how to get value from AI, avoid costly mistakes, and make sure you remain the person steering the ship.
The two experiences: delightful and disastrous
I’ve had AI trash a project. I once accepted a larger-than-intended rewrite and trusted the result. Big mistake! I ended up running git reset --hard and painstakingly restoring behavior from older commits and tests. It was a reminder that AI can be disastrous when left to its own devices.
I’ve also had great experiences - but the difference was always the prompt and the workflow. Focused, constrained prompts and small, iterative changes produce reliable outcomes. The human needs to remain the reviewer and the integrator.
Garbage in, garbage out - still true
AI amplifies whatever you feed it. If your prompt is vague, or you ask for sweeping refactors without constraints, expect surprises. Good prompts are explicit about:
- the goal - what should change and why
- the constraints - compatibility, performance, coding standards
- the scope - line range, single method, or a specific file
- the expected deliverable - a patch, a diff, tests, or an explanation
Here is an example of a good, focused prompt:
Refactor the
CalculateTotals()method inCartService.csto remove duplication and make it easier to test. Keep the public API and behavior identical. Show only the changed method and an accompanying unit test that verifies totals for a mixed cart.
That prompt gives the AI a clear target, a guardrail, and asks for a test - which is crucial.
Practical safeguards (treat AI like a junior teammate)
- Use feature branches for anything AI touches. Keep commits small and review diffs before merging.
- Ask the AI to produce unit tests first, then use those tests to validate suggested changes.
- Prefer incremental changes: ask for a single-file or single-method edit rather than massive rewrites.
- Run the CI and tests locally before merging. If something fails, revert the change and inspect the diff; treat it as a learning opportunity.
- Keep a checklist for AI-assisted code:
- Tests exist.
- Behavior is unchanged except where required.
- Performance is sanity-checked.
- Code follows standards.
Prompt hygiene: examples that help
- Give context: “This repository targets .NET 10, uses xUnit, and follows our style guide (use expression-bodied members only where used currently).”
- Ask for limited outputs: “Return only the diff in a unified patch format.” This avoids huge free-form replies.
- Request reasoning: “Explain the change in two sentences and why it is safe.” It helps you review faster.
Why adapt - and fast
If you ignore AI, you won’t be safe from disruption. People who use AI effectively and efficiently will ship faster, produce polished drafts, and move through experiments with lower cost. That doesn’t mean AI replaces you - it replaces people who don’t adapt.
Learning to collaborate with AI is a career multiplier. It increases your output and lets you focus higher-value work: architecture, design tradeoffs, mentoring, and judgment.
Use AI to level up, not to outsource judgment
Treat AI as a capable assistant that needs direction. You remain responsible for correctness, security, and product thinking. Keep these in mind when you use suggestions:
- Validate: tests and CI are your safety net.
- Inspect: always read diffs - don’t merge blindly.
- Iterate: small changes, quick feedback loops.
Further reading
My teammate Barret has an excellent series about building the next generation of agents. It’s a great companion read if you want deeper ideas about agents and workflows.
DeepLearning.ai is what I use for sharpening my AI knowledge. They have a course called AI Prompting for Everyone that can give you more insights on how to write prompts that will help speed up your process while getting quality assistance from AI.
If you’re a .NET developer, Microsoft has a repo on Generative AI for Beginners for .NET!, created by their developer advocates.
Quick checklist before you accept an AI change
- Did it come with tests? - If not, ask for them.
- Is the diff small and reviewable? - Reject or re-scope large rewrites.
- Does CI pass locally? - Run it before merging.
- Can you explain the change in two sentences? - If not, ask the model to summarize.
Final thought
If you were coding in the 90s, you can learn this. The mental models are the same: be skeptical, be curious, and control your tools. AI is another powerful tool - learn to guide it, use version control, and keep the human in the loop. Do that, and you won’t be replaced; you’ll be far more effective than you were before.

