Introduction
Using AI in programming is no longer just a side experiment or a faster way to write code. For me, AI has become part of the development workflow itself, but not in the traditional way of asking one tool to build an entire system from start to finish.
I treat artificial intelligence as a team, not as a single tool that does everything. The core idea is to distribute roles between multiple AI assistants so I can benefit from the strengths of each one, reduce token usage, and still maintain project quality and continuity of context.
Why I Do Not Rely on One AI Tool Only
In large projects, relying on one AI assistant for planning, implementation, and review inside one long conversation often creates many problems. The conversation grows, context becomes mixed, old decisions overlap with new changes, and tokens get consumed quickly in implementation details that could have been separated.
That is why I prefer to deal with AI as a software production line. One role plans, another executes, and another reviews and fixes. This makes the implementation less random and prevents each AI tool from starting from zero every time.
The First Step: Understanding the Product Before Writing Code
My first step is not writing code. I start by clearly explaining the idea of the system or website, the business goal behind it, the users, the problem it is supposed to solve, and the value it should deliver.
This part is very important because if AI does not understand the product, it will suggest generic solutions. When the product context is clear from the beginning, technical decisions become connected to the real project instead of being based on ready-made patterns.
Inspecting the Current Project Before Suggesting an Implementation
After explaining the idea, I do not ask Codex to start implementing immediately. The first request is usually to inspect the current project as it is. It should read the files, database, documentation, routes, technologies, and code organization.
The goal is to make the plan based on reality, not on general assumptions. Many mistakes happen because AI suggests a solution that is theoretically good but does not fit the existing project structure or conflicts with files that already exist.
Using Codex as a Software Architect
After the inspection, I use Codex as a software architect. Its role at this stage is not to write a large amount of code, but to analyze requirements and make correct decisions.
I ask it to analyze the requirements, suggest the right architecture, define the modules, explain the relationships between them, organize priorities and dependencies, and detect risks or conflicts before any code is written.
This stage reduces many future problems because architectural mistakes are expensive if they are discovered after a large amount of code has already been implemented.
Breaking the Project Into Small Parts
Instead of implementing the entire project at once, I split it into small and clear parts. Each part has a specific goal, expected files, acceptance criteria, and required tests or verification commands.
This makes every task easier to review and measure. If one part fails, it becomes easier to identify and fix the issue instead of dealing with one large block of unclear changes.
Writing a Precise Implementation Prompt
After defining the required part, I ask Codex to write a complete implementation prompt for the current stage. This prompt is usually in English and ready to copy and paste into another AI tool.
The prompt is not a generic description. It includes the current project state, related files and paths, architectural constraints, business rules, edge cases, security and permission requirements, tests and verification commands, and the things that must not be changed outside the task scope.
This way, I do not let the executing AI decide everything from scratch. It receives a clear task, clear boundaries, and a clear goal.
AI for Implementation and Codex for Planning and Review
After preparing the prompt, I send it to another AI assistant to write the code. In this setup, the second AI is the executor, while Codex remains the planner, reviewer, and keeper of the project context.
This is very useful for reducing token usage. The most token-heavy part is usually writing a large amount of code, so I give that part to the executing AI while keeping Codex for tasks that require deep understanding of the project and careful decisions.
After Implementation: Review Is Not Just a List of Notes
When the implementation is done, I do not treat the result as the final version. The first implementation is a working draft that needs review and strengthening.
I go back to Codex with the implementation summary or the actual changes and ask it to review and fix issues. For me, review does not mean just a code review or a list of comments. It is a practical review that includes inspecting the real code, comparing the implementation with the prompt and plan, finding bugs and vulnerabilities, reviewing permissions and data isolation, reviewing the database and relationships, validating business rules, checking edge cases, and running available tests.
If a problem can be fixed directly, I ask it to fix it instead of only pointing it out.
Tracing Problems From the Real Source
When an error appears, I do not rely only on the error message. I ask Codex to trace the real path inside the project: from the UI or route, to the controller, action, or service, then to the database and tests.
This approach helps reveal the real cause of the problem instead of only treating the visible symptom. Sometimes the issue is in the UI, sometimes in permissions, sometimes in a database query, and sometimes in a wrong assumption inside the business logic.
Building the Next Prompt Based on the Actual Project State
After the current part succeeds, I do not simply return to the old plan. I ask Codex to write the prompt for the next part based on the actual project state after implementation and review.
This makes every stage connected to what has actually been completed, not only to what was expected at the beginning. Over time, the project becomes a clear cycle: planning, implementation prompt, execution by another AI, review and fixes by Codex, verification and tests, then the next prompt.
Setting General Project Rules From the Beginning
To avoid repeating the same instructions every time, I define general project rules from the beginning. These rules include the required technologies and versions, code organization style, where business rules should live, security and permission standards, UI and UX rules, language and design direction, testing requirements, avoiding old APIs, and not modifying anything outside the task scope.
I also always emphasize preserving the current behavior of the project unless I explicitly ask to change it. This rule prevents many side effects that may look small but can break other parts of the system.
The Right Implementation Order for Large Projects
In large projects, I prefer implementation to start from the foundations. I begin with product and requirements analysis, then database design, users and permissions, backend and business rules, admin panel and internal operations, reports, and then public-facing interfaces at a later stage.
This order helps the system grow on a strong foundation. The UI is important, but it should not come before understanding the data, permissions, and core business logic.
What Problems Does the Review Cycle Reveal?
The review cycle after implementation reveals many issues that may not appear at first glance. For example, an implementation may look correct but violate business rules. Permissions may be applied only in the UI. Queries may fail to isolate organization data properly.
Other issues may include side effects outside the task scope, code that only works in the ideal case, missing tests, usage of old APIs, or a mismatch between the implementation and the current project structure.
That is why I do not treat the first AI output as a final version. Quality comes from the full cycle: implementation, review, fixes, and verification.
The Importance of Having a Source of Truth Inside the Project
One of the most important rules I follow is keeping a source of truth inside the project. This can be documentation files, a database schema, a module plan, or a decision log.
However, documentation should not be updated before confirming that the implementation is correct. It is better to update documentation after the code works and has been reviewed, so the project is not built on beautiful documents that do not reflect reality.
The Benefits of This Workflow
This workflow gives me four main benefits. First, higher quality because planning, execution, and review are separated. Second, lower token usage because heavy tasks are distributed intelligently. Third, the ability to replace the executing AI without losing project context. Fourth, the ability to build a large system step by step without turning the conversation into a huge, tangled set of instructions.
The biggest advantage is that every AI works in its proper role. Codex is not consumed by writing every code detail, and the executing AI does not decide the project architecture from scratch. I remain responsible for directing the cycle and making the final decisions.
Conclusion
I do not simply ask AI to build a system for me. That approach often leads to random results or code that is difficult to maintain.
Instead, I build a software production line based on role separation: an architect plans, an executor writes the code, and a reviewer tests and fixes. Between each stage, there is verification, documentation, and an update to the actual project state.
This makes AI a real partner in building software, not just a tool that writes code quickly. The secret is not using one powerful AI tool, but designing a smart workflow where every tool works in the right place.


