How to develop software with AI in 2025

On this page

Since December 2022, I’ve been experimenting with AI for coding. The first tools were clunky and required copy‑pasting between a chatbot and an editor. Then GitHub Copilot and similar products brought AI into editors like VSCode. That in‑editor experience feels like pair programming with a remote teammate—except your partner is a prediction engine (LLM).

In 2025, “vibe coding” is a real trend: assembling software with AI in the loop. Agentic tools like Claude Code, Codex, and Amp CLI are becoming common. Living in the San Francisco Bay Area over the past three years, I’ve seen this shift up close.

I use AI in three practical modes:

  1. AI as a co‑pilot
  2. AI as a debugger
  3. AI as a time saver

This post covers how I use each mode and the pitfalls to avoid. I won’t get into topics like what your CLAUDE.md should look like—that’s for another time.

AI as a Co-pilot🔗

A co‑pilot assists the captain with takeoff and landing, monitors conditions, and communicates with controllers. Similarly, AI can share the workload for parts of a codebase and utility work. But as the captain, you still need to confirm:

  1. Is the output acceptable quality?
  2. Does it follow existing paradigms and dependencies?
  3. Is it secure?
  4. Could it lead to destructive operations?

Current AI systems are weak at reasoning about second‑ and third‑order consequences. That responsibility stays with you, and it’s the core skill of effective AI‑assisted development.

Tips for reviewing AI work as a co‑pilot🔗

  • Look for inefficient operations.
  • Look for dangerous operations.
  • Look for new dependencies.

AI as a Debugger🔗

AI is excellent at debugging unfamiliar code or configuration. Humans debug sequentially—one issue at a time. AI can scan a problem and surface multiple issues in one pass. That’s where it delivers the most value.

It’s also a learning opportunity. I keep a journal of issues AI finds and fixes, then slow down to understand the root cause before moving on.

Tips while using AI as a debugger🔗

  • Slow down.
  • Understand the conditions that led to failure.

AI as a Time Saver🔗

AI saves time on workflows that are slow to set up but easy to abandon. Examples include switching laptops, rebuilding dev environments, or repeating tasks (Dockerfiles, GitHub Actions, shell scripts). I used AI to create a Docker image for an Ubuntu dev box with all the right tools—something that would have taken much longer manually.

It also speeds up comprehension of a new codebase. What used to take days can be accelerated by loading a project into context and asking targeted questions. This use case is underrated.

What does AI do?🔗

  • Drafts Dockerfiles, shell scripts, and other repetitive tasks.
  • Helps you map and understand large codebases.

How can you save time?🔗

  • Delegate repetitive setup and scripting tasks (Dockerfiles, CI, shell scripts).
  • Use AI to summarize projects and draft design docs before you refine them.

Working in these three modes keeps you sharp and engaged, while still sharpening your ability to observe change.

There are a few things one must not forget while developing code with AI:

  • Always run sensitive operations in a containerized sandbox.
  • Never share personal information with AI (easy to slip into debugging logs).
  • Reverse‑delegate tasks from AI back to yourself to practice coding.

Finally, I don’t use AI as a replacement for myself. It lacks business context and emotion, and can lead me down the wrong path if it takes full control.

People may think that in 2025 AI usage is radically different, but the fundamentals remain. The principles above stay true no matter how powerful the tools get.

Thanks for reading this human‑written article!

References🔗