Thoughts on Technology Leadership

AI Will Implement Whatever You Give It

Strong software engineers do not just follow instructions. They interrogate them. When handed requirements, they do not rush to implement. They pause to question ambiguity, uncover missing pieces, and identify conflicts with existing systems. They understand a simple truth: it is far cheaper to change requirements than to rewrite code. Asking questions early is not slowing down. It is how good engineering moves fast. This habit matters even more in a world where AI coding agents execute instructions without questioning them.

A trivial example is the following requirement: Write a program that runs on the command line. It prompts the user to enter two numbers. It outputs the result of dividing the first number by the second.

This requirement is not complete How should we handle a situation where one or both entries are not numbers? How do we handle zero being entered as the second entry? Is this limited to integers? Is this limited to positive numbers? After outputting the result, do we exit, start over, ask user if they wish to try again?

Without clarifying these points, an engineer will either make assumptions or ship something incorrect. At best, the behavior will not match expectations. At worst, the program will crash.

The problem is that coding AI agents do not exhibit this questioning behavior, unless explicitly asked. They execute them as written, filling in gaps with assumptions.

How should this be handled? I suggest a two-pronged approach.

The first step is to have a human software engineer review the requirements and work with the author to flesh them out.

The second step is to ask the AI if the requirements are complete, correct, and unambiguous. When I ask my AI agent those questions about the above requirements it highlighted the first three issues of the five above. It also had this to say

“Runs on the command line” sometimes means “arguments: prog a b.” Your text says it prompts for input, which points to interactive prompts, not argv. That’s clear if you keep the prompt wording; if you dropped “prompts,” people might argue about CLI args vs stdin.

The same agent when given the requirements without being asked about their quality created an app. It handled division by zero. It handled entry of non-numbers, but did so by exiting and not by asking the user to try again. It assumed that non-integers and negative numbers were fine.

AI coding agents will faithfully implement whatever they are given. If the requirements are incomplete, the result will be incomplete.

Good engineering does not start with writing code. It starts with asking better questions. That responsibility does not go away with AI. It becomes more important.

Back