跳到主要内容
知仓学习社ZHICANG

product-requirements

Writes down what is being built so a team can build it and know when they are done — problem and success measure before solution, scope stated by ex…

不碰外部(只输出文字)无严重或高危命中cbrock84/headcount

它会碰到什么

扫了多少1 个文本文件,3 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Product requirements

A specification exists to prevent expensive rediscovery — of decisions already made, of scope

already agreed, and of the edge cases that are found either now on a page or later in production.

Lead with the problem and the number, not the solution

Open with who has the problem, what it costs them today, and what you expect to change if this

ships — expressed as a measure with a target and a date. A document that starts with a solution

invites the team to optimize the wrong thing and gives you no way to tell afterward whether it

worked.

Decide the success measure before building, not at launch. A number chosen afterward is chosen

to be met.

State scope by exclusion

Everyone reads what is in scope and assumes the rest is coming. An explicit "not in this" list is

the cheapest thing in the document and prevents most scope arguments — including the ones that

arrive as clarifications rather than as requests.

Say what is deferred versus what is rejected. Those are different, and conflating them means the

rejected thing comes back.

Describe behavior, not implementation

Write what the user experiences and what the system guarantees. Leave the how to the people who

will own it — a specification that dictates implementation gets a worse implementation and blurs

who is accountable for it.

The states nobody writes down are where the rework comes from. Empty, loading, error,

partial, permission-denied, offline, and the first-run case with no data. Also: what happens to

records that already exist, what happens at the limits, and what happens when two people do it at

once. Most "that wasn't what I meant" traces back to one of these.

Make acceptance criteria testable

Each one should be a statement someone can evaluate as true or false without asking you. "Fast" and

"intuitive" are not criteria; a response-time budget and a task someone completes unaided are.

If a criterion cannot be tested, it is either a principle — say so and move it — or it is not

finished being thought about.

Name the open questions and who owns them

Every specification has unknowns. Listing them, with an owner and a date needed by, is what

separates a document that is honestly incomplete from one that is quietly wrong. Buried

uncertainty gets resolved by whoever hits it first, usually at the least convenient moment and

without anyone noticing a decision was made.

Keep it alive, or state that it is frozen

A specification that diverges from what was built becomes a trap for the next person. Either update

it as decisions change, or mark it as-of-a-date and point at wherever the truth now lives. The

worst outcome is a document that looks current and is not.

Never

  • Open with a solution and leave the problem implied.
  • Ship a specification with no explicit out-of-scope list.
  • Write an acceptance criterion that requires asking you whether it passed.
  • Leave an unresolved question inside the body where it reads as a decision.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。