← Noesa

The app you didn't write

For Someone shipping real software with AI doing most of the typing — who has been surprised by their own codebase, and may not know what language it is in. · 21 days · Tech

A 21-day course
One short lesson a day · go at your own pace
Log in to start
Download as a skill — teach your own AI these checks
The days
  1. 0Find out what you are actually holdingBy the end you can say what your project is built from, where it starts, and which files are really yours.
  2. 1A comment is not a mechanismBy the end you can find a place where one fact is worked out twice, and delete one of them.
  3. 2Every number needs a rulerBy the end you can name what a number is measured against, and refuse one that has no answer.
  4. 3Your check is blind in the same direction as your bugBy the end you can say what a check cannot see, before you decide what its green result proves.
  5. 4Verify one layer closer to the userBy the end you can tell "the file was found" from "the thing draws", and check the second one.
  6. 5Structure you can read, behaviour you meantBy the end you can name the cases where a condition is true and the behaviour you meant does not follow.
  7. 6What are all the ways this ends?By the end you can list every way a stored choice stops applying, including the times it is abandoned.
  8. 7Silence is not successBy the end you can make an empty result announce itself, instead of letting it pass for a real answer.
  9. 8One identifier, derive the restBy the end you can make a mismatched pair impossible to save, rather than something you find and correct later.
  10. 9A finding from an impossible inputBy the end you can demand a real, concrete path to a number before you act on it.
  11. 10Show me the measurement before you change anythingBy the end you can demand the number behind a request as its own separate, checkable step.
  12. 11Validate the instrument against the whole setBy the end you can refuse a number whose measuring tool has never itself been checked.
  13. 12A checker in the maker's hands becomes a targetBy the end you can say why handing your check to the thing being checked destroys the check.
  14. 13Everything not named is protected. So name it, and rank itBy the end you can write down the set of things that must not change, plus this round's single priority.
  15. 14Edit a good one. Replace a bad one. Never rework a bad oneBy the end you can tell when to re-specify from scratch instead of correcting, and when that rule does not apply.
  16. 15Which tool, for which jobBy the end you can route work by a tool's characteristic failure rather than its reputation.
  17. 16A bridge that returns nothingBy the end you can reason about a boundary between two technologies where nothing comes back.
  18. 17Server-held, cached, or goneBy the end you can say, for a synced feature, what the server owns, what is kept locally, and what happens offline.
  19. 18Read the version out of the artifactBy the end you can verify what you actually shipped, rather than what you think you built.
  20. 19Write the test against the pattern, not the instanceBy the end you can shape a check like the whole class of mistake, rather than like the one time it caught you out.
  21. 20Make the repo argue with youBy the end you can write the record of your own work so that you, or an AI, can check its reasoning later.