AI Can Write More of the Code. We Still Have to Engineer the System

Hacker News by 8 min read 507x views
AI Can Write More of the Code. We Still Have to Engineer the System

Share Post

When group say AI has transformed application development, I desire to cognize which part they mean. Producing an implementation? Exploring a design? Deciding whether a scheme solves the correct problem?

Those activities are connected, but automating one does not resolve the others. My disagreement is that agents can obtain on additional implementation work, and assistance alongside analysis, design, and testing, during engineers remain liable for deciding what to build and what evidence is adequate to obtain it.

That changes the work. It does not create the responsibilities disappear.

I am wary of describing this as replacing the individual who churns out code. It reduces developers to typing, understates what agents can assistance with, and turns project automation into a assertion concerning jobs. Claims concerning workforce replacement necessitate evidence beyond an notable demonstration.

The applicable inquiry interests me more: how do we use these tools during keeping our decisions apparent and our feedback useful?

Give decisions location to live

A conversation is convenient for exploring options. It is a susceptible location to keep the lone document of an architectural decision.

Model environment is bounded. A lengthy meeting may be summarized, compacted, or resumed alongside selected information. The summary can maintain the decision and endure the circumstance that made it reasonable. “Use a local cache” is distinct from “use a local cache since this display must remain usable without connectivity.”

Anthropic's account of long-running agents describes continuity problems throughout environment windows and an method using incremental activity and persistent advancement artifacts. It additionally reports that compaction can depart unclear instructions. This is a vendor engineering study concerning a particular setup, fairly than a worldwide difference of betterment workflows.

My penchant is to provision durable decisions a small, reviewable home. A PROJECT_GUIDE.md power contain:

  • The product's intent and current scope, including definitive exclusions.
  • The crucial scheme boundaries and the reasons rearward architectural choices.
  • Quality expectations and the commands used to inspect them.
  • Links to deeper decisions whenever those decisions need additional space.

The filename has no particular power. An delegate volition not necessarily burden it automatically. I would nexus it through the tool's supported project instructions or explicitly contain it in the task, afterward inspect the agent's interpretation.

For all increment, I would provision the applicable records and ask for a concise document of the intended change, constraints, and acceptance cases. A paraphrase is an first chance to capture misunderstanding; the implementation motionless has to display compliance.

Simon Willison's June 2025 conversation of environment engineering helps example the issue of choosing data for the next example step. My narrower advice is to create that choice deliberate and inspect its consequences.

Markdown solitary guarantees neither retrieval nor obedience. Sending all document on all project can addition environment and cost. Selective retrieval may decrease input, but maintaining documents, retrieving them, and correcting mistakes additionally consume resources. Any assertion of funds needs a measure of the complete task.

Specify the next behavior

Consider a hypothetical mobile hunt screen. This is an illustration, not a study from a completed project.

The narrative could be: “As a user, I desire to hunt saved items so that I can discover an item without scrolling through the complete collection.” For the archetypal increment, the range is local hunt complete existing items. Remote hunt and changes to persistence are excluded.

Before implementation, I would create these acceptance cases explicit:

  • A matching query displays the expected items.
  • A query alongside no matches displays an bare outcome state.
  • Clearing the query restores the complete collection.
  • If filtering is asynchronous, an older outcome cannot overwrite a newer query's results.

These cases disclose a specialized question: does filtering need asynchronous activity at all? The delegate can assistance measure that decision. We should determine it against the expected data size and responsiveness requirements, fairly than introducing concurrency since a template expects it.

For this example, I power choose unidirectional data flow, definitive UI states, and a separation between filtering logic and rendering. That makes province transitions easier to inspect. Another scheme may validate a distinct structure; this is an engineering choice alongside a purpose.

The project guide should maintain that purpose. Feature-level notes should explain the behavior and any new decision. They do not need to reproduce the complete architecture.

After the increment, I would inspect the diff, run the applicable checks, and exercise the screen. If the delegate rewrote persistence notwithstanding the range restriction, passing tests would not create that enlargement acceptable. If the bare province looks accurate but the hunt matches the incorrect field, a screenshot would not established correctness either.

Make generation answer to verification

Agent output is probabilistic. Acceptance should depend on evidence that we can inspect and, anywhere practical, reproduce.

A local verification command can run formatting checks, fixed analysis, compilation, and focused tests. These checks answer distinct questions. A formatter checks conventions; a compiler checks tongue and category rules; tests measure selected behavior under selected conditions. None establishes that we chose the correct merchandise behavior.

Controlled verification additionally needs controlled inputs. Tool versions, fixtures, and implementation conditions matter. Tests involving timing, devices, networks, or external services may be flaky. Calling a test suite deterministic does not create it so.

Even a absolutely repeatable inspect can verify the incorrect thing. A hunt test power province that several outcome appears without checking which outcome it is. A generated test can faithfully encode the identical misunderstanding as the generated implementation. I would assessment the assertion against the acceptance case and use deliberately chosen examples, including a nonaccomplishment case.

Running the app adds another benevolent of evidence: whether the behavior makes awareness through the genuine interface. When achievement matters, define the measure before declaring success—device, dataset, scenario, and threshold. A quick belief of responsiveness is helpful feedback, but it is not a latency result.

Hooks can create local checks convenient and capture mistakes earlier. Their safety depends on what triggers them and whether they can be bypassed. Where a squad requires enforcement, server-side checks and repository protections need their own configuration. A local hook is not equal to an enforced distant policy.

The engineer motionless decides whether the evidence supports acceptance, revision, or rejection. An delegate can assistance collect that evidence; it cannot create an incomplete test suite complete by announcing success.

Documentation has to acquire its maintenance

I rotate into skeptical whenever a small alter requires a lengthy sequence of generated documents before anyone can see operating behavior. Each document becomes item to review, reconcile, and keep current. Producing content cheaply does not create understanding it cheap.

That is a criticism of proportion and feedback cadence. Spec-driven betterment has multiple meanings. Birgitta Böckeler's 2025 inspection of Kiro, spec-kit, and Tessl distinguishes approaches that compose details first, keep them during maintenance, or treat them as the chief source. Those differences matter whenever discussing expenses and control.

François Zaninotto's critique of document-heavy workflows raises concerns concerning assessment overhead and education following through reported examples. Those cases are helpful prompts for investigation. They do not established that details mostly logic worse outcomes.

An incremental specification can assistance fast feedback. Agile does not average avoiding documentation: its principles emphasis common operating software, specialized excellence, and adaptation. A abbreviated acceptance case can assist those aims; so can a detailed scheme whenever the hazard warrants it.

Stronger details can be precious for safety constraints, regulated work, community interfaces, immigration compatibility, and coordination throughout teams. In those settings, a concise guide is an admission item to the necessary detail. It cannot substitute that detail.

My test for a document is practical: what decision, implementation, or verification does it support, and who volition keep it? I would keep the clarification of a compatibility constraint equal if it takes multiple pages. I would eliminate repeated prose that neither changes a decision nor helps person measure the work.

Matt Pocock's collection of engineering skills offers another example of packaging direction into adaptable, composable pieces. I discover that direction useful. Its stated scheme goals are not evidence that a gathering of skills outperforms another workflow.

Keep the acceptance decision explicit

A small increment can motionless merge a bad assumption. Its advantage is that it gives us an earlier, additional bounded chance to detect one.

The iteration I would protagonist is straightforward: define the next behavior, provision the environment it needs, inspect the interpretation, inspect the change, collect evidence, and decide whether to obtain it. Update durable direction whenever a decision changes. If assessment becomes unmanageable, decrease the increment or enhance the checks before asking the delegate to create more.

This method has limits. It depends on the engineer's understanding, the norm of the evidence, and the disbursal of keeping direction current. This part presents a operating position, not a controlled study or a demonstrated efficiency gain. Establishing specified a acquire would necessitate comparable tasks and accounting for review, rework, defects, and maintenance—not fair generation time.

I am comfortable delegating additional of the activity whenever I can explain what was requested, what changed, and why the evidence supports accepting it. That is the engineering norm I desire to transport into AI-assisted development.

Which decisions in your workflow remain apparent following the conversation ends—and what evidence tells you that the delegate respected them?


Authorship note: The first outline was generated alongside AI aid from Armando Picón's arguments and a origin review. Armando reviewed the part and approved publication. The Spanish translation was produced alongside AI assistance. The mobile example is hypothetical.

Other Article Hacker News
↑
Close Right Ads
Close Left Ads