Move from Tactical Programming to Strategic Programming
Core Idea
Agentic engineering changes where human effort produces the most leverage. Tactical programming includes the immediate work of writing code, handling syntax, investigating routine bugs, creating commits, and making local implementation changes. Strategic programming concerns the longer-term shape of the system: how the codebase should be organized, how work should be divided, which interfaces should exist, how quality should be verified, and how engineering velocity can improve over time.
A productive operating assumption is to treat AI agents as a large supply of tactical implementers. Under that model, the human's central responsibility is not to compete with the agent on keystrokes. It is to decide what should be built, design the difficult parts, create conditions in which implementation is straightforward, and determine whether the result is correct and useful.
How It Works
Delegating to an AI agent follows many of the same principles as delegating to a junior or mid-level developer. The delegate needs a coherent task, understandable boundaries, access to the relevant parts of the system, and a way to know when the work is complete.
Strategic preparation includes several activities:
- Design the hard parts before implementation begins. Resolve the architectural decisions that will
constrain the rest of the work.
- Scope tasks tightly. A task should be small enough that the agent can complete it without
inventing major product or architecture decisions.
- Define module interfaces. The agent should know how the component it changes interacts with the
rest of the codebase.
- Establish tests and acceptance conditions. The agent needs objective signals that distinguish a
completed change from a plausible-looking change.
- Provide enough documentation to direct navigation. The documentation does not need to explain
everything, but it should point the agent toward the correct files, modules, and conventions.
- Preserve the roadmap and product intent at the human level. The agent may implement a task, but
the human remains responsible for deciding whether that task advances the larger mission.
This division of labor avoids two opposite errors. The first is micromanaging every tactical detail, which wastes the agent's implementation capacity. The second is delegating strategic thinking, which leaves the agent to make decisions it does not have the real-world context to make reliably.
Why It Matters
More implementation capacity does not automatically produce better software. A poorly scoped fleet of agents can create more code, more quickly, in the wrong direction. Strategic discipline converts raw implementation throughput into useful progress.
The human is also needed to define what a good outcome means. An agent can execute a goal with the tools it has been given, but it still needs an external standard for success. Someone must judge whether the change is appropriate for the product, whether the risks are acceptable, whether the architecture remains coherent, and whether the result should be released.
The practical advantage therefore belongs to engineers who can oversee systems, not merely produce isolated code. Strong strategic programmers can delegate more because they can specify more clearly, detect deeper mistakes, and integrate a larger volume of work without losing direction.
Practical Application
Use the following workflow before assigning implementation to an agent:
- State the mission. Describe the real outcome the work is intended to produce, not merely the file
that should change.
- Identify consequential decisions. Separate decisions that require product, security, or
architectural judgment from decisions that are routine implementation details.
- Resolve the hard decisions. Decide the intended boundaries, interfaces, and validation approach
before asking the agent to write code.
- Create a task packet. Include the objective, relevant context, in-scope and out-of-scope areas,
expected interfaces, tests, and completion criteria.
- Choose the interaction mode. Keep planning, ambiguous work, and complicated decisions
human-in-the-loop. Delegate well-scoped implementation to an away-from-keyboard agent when appropriate.
- Review against the mission. Do not limit review to whether the code runs. Check whether the
result solves the intended problem and fits the roadmap.
For example, a request such as "build the application" transfers too much strategy to the agent. A stronger sequence is to define the user problem, choose the first useful capability, decide the system boundaries, specify a small implementation task, and then delegate that task.
Trade-Offs and Limitations
A stronger model may discover issues that were not included in the assignment. That is useful, but it does not eliminate the need for strategic control. Unexpected discoveries still require a human to decide their importance, validate the proposed response, and determine whether the surrounding process should change.
Strategic control also does not mean that the human must inspect or author every line. The purpose is to retain ownership of direction, constraints, and judgment while allowing the agent to handle tactical work at high speed.
Key Takeaway
Use agents as tactical implementers, but keep architecture, task design, product direction, and final judgment under deliberate human control.