How I program in September 2025 augmented by AI

September 22, 2025

Currently, I use AI tools to assist me in writing code, generating ideas, writing LinkedIn/blog posts, and solving problems on a daily basis. These tools have become an integral part of my workflow, helping me to be more productive and creative. I am really amazed at how fast this technology is evolving and having an impact on my daily work. A year ago, I was also using AI tools, but not as extensively as I do now.

AI coding

For new projects, I use a template project (via Vite, Nx, UV, .NET, or Composer) to get started and set up basic AI coding rules for the AI to follow.
Next steps depend on the project, but for bigger tasks or features, I tend to create a planning.md file together with the AI, giving it instructions, let it create implementation phases where each phase has a clear deliverable. After reviewing and making changes, I instruct the AI to implement each phase. Between phases, I review and test the results.

An important part of my workflow is committing often and using branches, not only when coding with AI, this is a best practice anyway.

I also let the AI generate tests for the code it creates, and I review and run them.
For smaller tasks, I just give the AI instructions and let it generate the code, which I then review and test.

Something I think is important is to try out new technologies and libraries yourself, by hand. You can of course let AI help you or explain it to you, but do try it out yourself in a small project and then include it in your main project. Also, be aware that AI/LLMs are trained on data from the past, so they might not be aware of the latest changes in libraries, frameworks, or new technologies.

Another very important thing to be aware of: AI can also remove features or code that you need! The more important your project is, the more tests you should do, preferably automated tests. Always review the code it generates, do not just accept it blindly.

So, is AI perfect? No. I regularly see duplicated types and code. Sometimes it also needs help when it cannot solve a bug. There have been times when I prompted extensively to solve a bug, and the AI confidently claimed it had fixed it, only to be wrong multiple times. After diving into the code myself, I often found the issue quickly and put the AI back on the right track. So it’s not perfect, but it is a great help.

Another nice example was when I wanted it to create a basic Agent setup for PromptToForm. Even though I had given it instructions to make it reusable, it created Agent classes without reusability in mind. After I pointed this out, it created a reusable base class and refactored the code accordingly.

However, I don’t blame the AI for these issues; it’s just a tool. The responsibility lies with me to give it clear instructions, review, and test the code it generates.

The reason why is obvious: no project is the same. Different kinds of organizations and projects require different approaches and architectures. There are a lot of choices to make. So you have to provide the AI with the right context and instructions to get the best results for your project.

Feedback loop with Playwright tests

More recently I had a similar issue, but Cursor was very persistent in not getting the problem fixed and kept insisting that the problems were solved. When testing it myself in the UI, it was very clear that it wasn’t. Since this was my side project (prompttoform), I wanted Cursor to solve it and not step in. But even after a couple days of prompting… the problems was still not fixed. I didn’t want to take over and neither want to switch to Cursor’s Max plan. So I asked Cursor to create playwright tests and use that in it’s feedback loop. After a couple of tries (it added console logs and inspected those during running the playwright tests), it finally got it right and fixed the problems.

I think the unit-test and playwright-test feedback loops are a great addition to the AI coding workflow. It gives the AI eyes so to speak and adjust accordingly.

Claude code

I haven’t tried Claude code yet, because I don’t want to pay for another subscription. I am not a big fan of terminal-based coding, I prefer a GUI. But I might be wrong and just have to try it out. Since Claude code uses Anthropic’s own models, it might be much better then Cursor or GitHub Copilot. But I don’t want to rely on LLMs/coding agents only, I strongly believe that keeping my own skills sharp is important and also helps in being an efficient developer and engineer.

Summary

In summary, I use AI tools extensively in my programming workflow, and they have become an indispensable part of my daily work. Especially in my side projects, I code way less than before. They help me to be more productive and creative, but I still need to review and test the code they generate. The key to success is giving clear instructions and providing the right context for the AI to work effectively.

If you have any questions or feedback, feel free to reach out to me here: maikel@devhelpr.com