---
id: "concept-tactical-vs-strategic-programming"
type: "concept"
source_timestamps: ["00:00:42", "00:02:52"]
tags: ["software-design", "career-development"]
related: ["claim-ai-eaten-tactical", "claim-skills-are-ceiling", "entity-a-philosophy-of-software-design", "entity-john-ousterhout"]
definition: "The distinction between day-to-day coding (tactical) and long-term codebase architecture and planning (strategic)."
---
# Tactical vs. Strategic Programming

## Origin

This distinction comes from [[entity-john-ousterhout]]'s book [[entity-a-philosophy-of-software-design]]. [[entity-matt-pocock|Matt Pocock]] adopts it as the framing device for how AI changes the developer's role.

## The two modes

**Tactical programming** is the day-to-day, on-the-ground work:
- Writing syntax.
- Fixing immediate, localized bugs.
- Memorizing API surfaces.
- Making feature-level changes to get something working.

**Strategic programming** is about *winning the war, not the battle*:
- Long-term codebase architecture.
- Defining module interfaces and boundaries.
- Planning for future velocity.
- Designing for testability and observability.
- Anticipating change.

## Pocock's bold claim

Pocock makes the assertion that **AI has effectively "eaten" tactical programming** — see [[claim-ai-eaten-tactical]] and [[quote-ai-eaten-tactical]]. LLMs are now better, faster, and cheaper at writing syntax and fixing localized bugs than humans.

Consequently, the value of a human developer has shifted entirely to the strategic realm. To leverage an "infinite fleet of tactical programmers" (AI agents), a developer must excel at strategic design. If a developer's strategic skills are poor, the AI will simply generate a massive amount of poorly architected code, hitting a hard ceiling on productivity — this is the basis for [[claim-skills-are-ceiling]] and [[quote-skills-are-ceiling]].

## Implications

- **For seniors**: massive leverage (~10x) by directing AI fleets.
- **For juniors**: existential risk if they stop at tactical mastery; see [[prereq-strategic-programming]].
- **For training**: shift curricula toward system design, scoping, interface design, and testing strategy.
- **For careers**: the action is [[action-shift-to-strategic]].

## Nuance

The enrichment notes that "eaten" is rhetorical overstatement. Tactical programming includes nuanced debugging, performance tuning, and context-sensitive edge cases that current agents still struggle with. Pocock's tooling ([[entity-sandcastle]], [[entity-matt-pocock-skills]]) exists precisely because those gaps still require human-designed scaffolding.
