Most conversations about AI in programming revolve around one question: How well can it write code? While I’ve experimented with plenty of AI coding tools, that’s not how I get the most value from them. In fact, I rarely rely on AI to generate production code. I enjoy solving problems myself, and I don’t want to lose that part of the process. What surprised me is that AI has become useful in every other part of my workflow. It helps me think more clearly, work with more confidence, and spend less time on the small tasks that surround development. That’s where it has made the biggest difference for me.
Planning before writing a single line of code
Before the code, there’s the conversation
I’ve found that AI is far more useful before I open my editor than after. Instead of asking it to generate code, I explain the feature I’m about to build and use it as a planning partner. I’ll describe the goal, the expected behavior, any technical constraints, and the overall architecture. Then I ask it to break the work into smaller, manageable tasks or point out anything I might have overlooked.
This helps me think through the implementation before I commit to a particular approach. AI often reminds me to consider edge cases, state management, API interactions, validation, or potential performance issues that weren’t immediately obvious. It doesn’t make the decisions for me, but it gives me a second perspective that helps me organize my thoughts.
Spending five or ten minutes planning usually saves much more time later. I end up writing less throwaway code, making fewer mid-project changes, and starting the implementation with a much clearer idea of what needs to be built.
Reviewing my approach before I implement it
A second opinion that costs nothing
Once I have a rough plan, I like to run my implementation idea past AI before I start writing code. I’m not looking for a ready-made solution. Instead, I want a second opinion on whether my approach makes sense. I’ll explain how I intend to solve the problem and ask if there are any obvious drawbacks, simpler alternatives, or trade-offs I should consider.
This is especially helpful when there are multiple ways to implement the same feature. AI might point out that one approach will be harder to maintain, introduce unnecessary complexity, or create problems as the project grows. Sometimes it suggests a cleaner design that I hadn’t considered, while other times it simply confirms that my original idea is reasonable.
I still make the final decision, but having that quick review gives me more confidence before I commit to an implementation. It has helped me avoid over-engineering a feature and saved me from rewriting code later by choosing a better direction from the start.
Rubber duck debugging that actually talks back
A rubber duck that interrogates you back
Every developer knows the rubber duck trick. You explain your problem out loud to an inanimate object, and halfway through, the answer hits you. The magic is in the explaining, not the duck. AI takes this one step further. It’s a duck that asks questions back.
When I’m stuck with a bug, I describe what’s happening: what I expected, what I’m actually getting, and what I’ve already tried. Just writing it out often clears my head. But instead of staring at me, AI responds. It asks what a certain variable holds, or whether I’ve checked a specific condition.
Those questions push me to look where I haven’t looked before. Often, I find the bug myself while answering them, before AI even offers a fix. I deliberately don’t ask it to solve the problem for me. I ask it to help me think. That keeps the debugging skills mine and stops me from leaning on it as a crutch. The result is faster debugging, without handing over the part of the job I actually want to keep.
Commit messages, edge cases, test cases, documentation
Even after I finish writing the code, AI still has a place in my workflow. This is usually when I let AI coding tools do the small, repetitive tasks that I don’t particularly enjoy. Based on my Git diff, I ask AI for a clean commit message instead of spending time thinking about the right wording. AI also helps with writing documentation by improving structure and making my explanations easier to follow.
I also like asking AI to review the completed feature from a testing perspective. I’ll describe what the feature does and ask it to suggest edge cases or test scenarios I may have missed. It often comes up with unusual inputs, failure conditions, or user behaviors that are easy to overlook when you’ve been focused on building the feature. Having an extra checklist gives me more confidence before I consider the work finished. For me, that’s where AI coding tools provide the most value. It does not replace my coding, but polishes everything around it.
AI doesn’t need to write your code to be worth using
The biggest change AI has made to my coding workflow isn’t writing more code; it’s reducing the mental overhead around development. It helps me think more clearly, validate ideas faster, and spend less time on repetitive tasks. That means I can focus my attention on solving problems instead of constantly switching contexts. I still enjoy the actual process of programming, and I don’t want to hand that over to a model. AI works best as a thoughtful assistant in the background, making each stage of development a little smoother while leaving the most rewarding part of the job in my hands.
