Skip to main content
Plan/Chapter 6 · NFRs

The Hidden Requirements

Share

Share this page

Pass it to someone who needs it.

Your user stories say what the software does. They say nothing about how well it has to do it: how fast, how reliably, how safely, for how many people. Those quality bars are non-functional requirements, the part most tutorials skip and serious engineers pin down early, because they quietly decide your architecture and stack long before you write a single feature. This chapter gets you a short list of measurable targets, set now, while changing them is still cheap.

1.6.1What it does vs. how well it does it

A functional requirement is a thing the software does. A non-functional requirement is a standard it must meet while doing it.

FunctionalNon-functional
A shopper can pay for a cartCheckout completes in under 3 seconds
A user uploads a photoThe site handles 500 people uploading at once
An admin views a reportThe report is available 99.9% of the time

The functional side is the feature. The non-functional side is the quality bar that feature is held to.

1.6.2Set a number, never an adjective

"Fast" and "secure" cannot be tested. A number can. Every target you write should be something you or your agent can measure and get a clear yes or no on.

Walk these five categories. For each, turn the vague wish into a number a test can check:

CategoryVague (won't do)Measurable target
Performance"fast"A page loads in under 2 seconds
Availability"reliable"Up 99.9% of the time
Security"secure"Passwords encrypted, login enforced on private data
Scale"handles growth"10,000 users and 1 GB of data in year one
Accessibility"usable by all"Works by keyboard and screen reader, meets WCAG AA

1.6.3Write them down for your AI before it builds

These are not paperwork, they are the most important thing you decide in this part. Your objective, whether you need raw speed, tight accuracy, or a set number of users, decides how the whole app is put together.

A "handle 500 uploads at once" target changes your database and hosting from day one. Bolt scale or accessibility on after launch and you are usually rewriting the foundation.

Hand these targets to your AI before it designs anything, and it builds the structure to hit them. You are not implementing any of it yet, a later part covers how. Here you just set the bars, so every choice downstream has something to aim at.

Example: 95% of pages load in under 2 seconds on a mobile connection, and the app is available 99.9% of the time.

This prompt proposes your targets, tuned to your goal:

Act as a senior engineer setting my non-functional targets.
For my app, propose one measurable target in each of:
performance, availability, security, scale, accessibility.
Every target must be a number a test could check, and must
fit my real objective, not generic best practice. Save them
in my specs folder.

My app, and my main objective (speed, accuracy, scale...):

Do this now: paste the prompt with your objective, let your agent propose the five measurable targets into your specs folder, and adjust any number that does not match your goal.

Discussion

Questions, ideas, and feedback on this chapter.

Mahmoud Zalt

Mahmoud Zalt

Software engineer, 16+ yrs · built Sistava.com in 3 months, idea to production, using these methods

ExploreBook a call
Companion RepoContribute
Support me

Support my work

A small tip keeps the free work coming.

© 2026 Mahmoud Zalt. Free to read, not to republish. Copyright & license