Why AI Software Is Different
The one thing that changes everything: an AI application’s output is less predictable than ordinary software. When you send text to a large language model, you cannot know in advance exactly what it will say back.
Deterministic vs. Probabilistic
Traditional code is deterministic — the same input always produces the same output. A language model is probabilistic — the same input can produce different output each time.
Uncertainty Is the Constraint
Because you cannot fully know how the system will behave in advance, you cannot fully plan the build in advance. This uncertainty is not a bug to remove — it is the defining condition you engineer around.
The Old Plan Breaks
Waterfall-style, plan-it-all-up-front development assumes the pieces are predictable. With unreliable components, a plan made once is quickly wrong.
- Hard to estimate — you can’t size work you can’t predict
- Edge cases you can’t enumerate — the inputs are open-ended
- Behavior drifts — it can change with the model or its version
Why the Skill Matters
This is exactly why the skill of deciding what to do next matters so much — and the good news is that it’s learnable. Instead of planning everything up front, you work in a loop: build, inspect, decide.
Build It
How to implement: take any small task you’d give an AI — say, “summarize this note” — and run it three times on the same input. Note how the outputs differ. That variance is the thing you’ll engineer around.
- Weekly AI Tasks tracker — turning a free-text message into a structured task is exactly this kind of unpredictable output, so it will need checking, not trusting.
- Personal brand site — generated copy can vary and can be wrong, so you’ll ground it in real material and verify it.
What you learned
AI software is probabilistic, not deterministic — the same input can give different output. That uncertainty breaks plan-it-all-up-front development, which is why the learnable skill of build, inspect, decide is the heart of this course.