@shaykec/bridge 0.4.24 → 0.4.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/journeys/ai-engineer.yaml +34 -0
- package/journeys/backend-developer.yaml +36 -0
- package/journeys/business-analyst.yaml +37 -0
- package/journeys/devops-engineer.yaml +37 -0
- package/journeys/engineering-manager.yaml +44 -0
- package/journeys/frontend-developer.yaml +41 -0
- package/journeys/fullstack-developer.yaml +49 -0
- package/journeys/mobile-developer.yaml +42 -0
- package/journeys/product-manager.yaml +35 -0
- package/journeys/qa-engineer.yaml +37 -0
- package/journeys/ux-designer.yaml +43 -0
- package/modules/README.md +52 -0
- package/modules/accessibility-fundamentals/content.md +126 -0
- package/modules/accessibility-fundamentals/exercises.md +88 -0
- package/modules/accessibility-fundamentals/module.yaml +43 -0
- package/modules/accessibility-fundamentals/quick-ref.md +71 -0
- package/modules/accessibility-fundamentals/quiz.md +100 -0
- package/modules/accessibility-fundamentals/resources.md +29 -0
- package/modules/accessibility-fundamentals/walkthrough.md +80 -0
- package/modules/adr-writing/content.md +121 -0
- package/modules/adr-writing/exercises.md +81 -0
- package/modules/adr-writing/module.yaml +41 -0
- package/modules/adr-writing/quick-ref.md +57 -0
- package/modules/adr-writing/quiz.md +73 -0
- package/modules/adr-writing/resources.md +29 -0
- package/modules/adr-writing/walkthrough.md +64 -0
- package/modules/ai-agents/content.md +120 -0
- package/modules/ai-agents/exercises.md +82 -0
- package/modules/ai-agents/module.yaml +42 -0
- package/modules/ai-agents/quick-ref.md +60 -0
- package/modules/ai-agents/quiz.md +103 -0
- package/modules/ai-agents/resources.md +30 -0
- package/modules/ai-agents/walkthrough.md +85 -0
- package/modules/ai-assisted-research/content.md +136 -0
- package/modules/ai-assisted-research/exercises.md +80 -0
- package/modules/ai-assisted-research/module.yaml +42 -0
- package/modules/ai-assisted-research/quick-ref.md +67 -0
- package/modules/ai-assisted-research/quiz.md +73 -0
- package/modules/ai-assisted-research/resources.md +33 -0
- package/modules/ai-assisted-research/walkthrough.md +85 -0
- package/modules/ai-pair-programming/content.md +105 -0
- package/modules/ai-pair-programming/exercises.md +98 -0
- package/modules/ai-pair-programming/module.yaml +39 -0
- package/modules/ai-pair-programming/quick-ref.md +58 -0
- package/modules/ai-pair-programming/quiz.md +73 -0
- package/modules/ai-pair-programming/resources.md +34 -0
- package/modules/ai-pair-programming/walkthrough.md +117 -0
- package/modules/ai-test-generation/content.md +125 -0
- package/modules/ai-test-generation/exercises.md +98 -0
- package/modules/ai-test-generation/module.yaml +39 -0
- package/modules/ai-test-generation/quick-ref.md +65 -0
- package/modules/ai-test-generation/quiz.md +74 -0
- package/modules/ai-test-generation/resources.md +41 -0
- package/modules/ai-test-generation/walkthrough.md +100 -0
- package/modules/api-design/content.md +189 -0
- package/modules/api-design/exercises.md +84 -0
- package/modules/api-design/game.yaml +113 -0
- package/modules/api-design/module.yaml +45 -0
- package/modules/api-design/quick-ref.md +73 -0
- package/modules/api-design/quiz.md +100 -0
- package/modules/api-design/resources.md +55 -0
- package/modules/api-design/walkthrough.md +88 -0
- package/modules/clean-code/content.md +136 -0
- package/modules/clean-code/exercises.md +137 -0
- package/modules/clean-code/game.yaml +172 -0
- package/modules/clean-code/module.yaml +44 -0
- package/modules/clean-code/quick-ref.md +44 -0
- package/modules/clean-code/quiz.md +105 -0
- package/modules/clean-code/resources.md +40 -0
- package/modules/clean-code/walkthrough.md +78 -0
- package/modules/clean-code/workshop.yaml +149 -0
- package/modules/code-review/content.md +130 -0
- package/modules/code-review/exercises.md +95 -0
- package/modules/code-review/game.yaml +83 -0
- package/modules/code-review/module.yaml +42 -0
- package/modules/code-review/quick-ref.md +77 -0
- package/modules/code-review/quiz.md +105 -0
- package/modules/code-review/resources.md +40 -0
- package/modules/code-review/walkthrough.md +106 -0
- package/modules/daily-workflow/content.md +81 -0
- package/modules/daily-workflow/exercises.md +50 -0
- package/modules/daily-workflow/module.yaml +33 -0
- package/modules/daily-workflow/quick-ref.md +37 -0
- package/modules/daily-workflow/quiz.md +65 -0
- package/modules/daily-workflow/resources.md +38 -0
- package/modules/daily-workflow/walkthrough.md +83 -0
- package/modules/debugging-systematically/content.md +139 -0
- package/modules/debugging-systematically/exercises.md +91 -0
- package/modules/debugging-systematically/module.yaml +46 -0
- package/modules/debugging-systematically/quick-ref.md +59 -0
- package/modules/debugging-systematically/quiz.md +105 -0
- package/modules/debugging-systematically/resources.md +42 -0
- package/modules/debugging-systematically/walkthrough.md +84 -0
- package/modules/debugging-systematically/workshop.yaml +127 -0
- package/modules/demo-test/content.md +68 -0
- package/modules/demo-test/exercises.md +28 -0
- package/modules/demo-test/game.yaml +171 -0
- package/modules/demo-test/module.yaml +41 -0
- package/modules/demo-test/quick-ref.md +54 -0
- package/modules/demo-test/quiz.md +74 -0
- package/modules/demo-test/resources.md +21 -0
- package/modules/demo-test/walkthrough.md +122 -0
- package/modules/demo-test/workshop.yaml +31 -0
- package/modules/design-critique/content.md +93 -0
- package/modules/design-critique/exercises.md +71 -0
- package/modules/design-critique/module.yaml +41 -0
- package/modules/design-critique/quick-ref.md +63 -0
- package/modules/design-critique/quiz.md +73 -0
- package/modules/design-critique/resources.md +27 -0
- package/modules/design-critique/walkthrough.md +68 -0
- package/modules/design-patterns/content.md +335 -0
- package/modules/design-patterns/exercises.md +82 -0
- package/modules/design-patterns/game.yaml +55 -0
- package/modules/design-patterns/module.yaml +45 -0
- package/modules/design-patterns/quick-ref.md +44 -0
- package/modules/design-patterns/quiz.md +101 -0
- package/modules/design-patterns/resources.md +40 -0
- package/modules/design-patterns/walkthrough.md +64 -0
- package/modules/exploratory-testing/content.md +133 -0
- package/modules/exploratory-testing/exercises.md +88 -0
- package/modules/exploratory-testing/module.yaml +41 -0
- package/modules/exploratory-testing/quick-ref.md +68 -0
- package/modules/exploratory-testing/quiz.md +75 -0
- package/modules/exploratory-testing/resources.md +39 -0
- package/modules/exploratory-testing/walkthrough.md +87 -0
- package/modules/git/content.md +128 -0
- package/modules/git/exercises.md +53 -0
- package/modules/git/game.yaml +190 -0
- package/modules/git/module.yaml +44 -0
- package/modules/git/quick-ref.md +67 -0
- package/modules/git/quiz.md +89 -0
- package/modules/git/resources.md +49 -0
- package/modules/git/walkthrough.md +92 -0
- package/modules/git/workshop.yaml +145 -0
- package/modules/hiring-interviews/content.md +130 -0
- package/modules/hiring-interviews/exercises.md +88 -0
- package/modules/hiring-interviews/module.yaml +41 -0
- package/modules/hiring-interviews/quick-ref.md +68 -0
- package/modules/hiring-interviews/quiz.md +73 -0
- package/modules/hiring-interviews/resources.md +36 -0
- package/modules/hiring-interviews/walkthrough.md +75 -0
- package/modules/hooks/content.md +97 -0
- package/modules/hooks/exercises.md +69 -0
- package/modules/hooks/module.yaml +39 -0
- package/modules/hooks/quick-ref.md +93 -0
- package/modules/hooks/quiz.md +81 -0
- package/modules/hooks/resources.md +34 -0
- package/modules/hooks/walkthrough.md +105 -0
- package/modules/hooks/workshop.yaml +64 -0
- package/modules/incident-response/content.md +124 -0
- package/modules/incident-response/exercises.md +82 -0
- package/modules/incident-response/game.yaml +132 -0
- package/modules/incident-response/module.yaml +45 -0
- package/modules/incident-response/quick-ref.md +53 -0
- package/modules/incident-response/quiz.md +103 -0
- package/modules/incident-response/resources.md +40 -0
- package/modules/incident-response/walkthrough.md +82 -0
- package/modules/llm-fundamentals/content.md +114 -0
- package/modules/llm-fundamentals/exercises.md +83 -0
- package/modules/llm-fundamentals/module.yaml +42 -0
- package/modules/llm-fundamentals/quick-ref.md +64 -0
- package/modules/llm-fundamentals/quiz.md +103 -0
- package/modules/llm-fundamentals/resources.md +30 -0
- package/modules/llm-fundamentals/walkthrough.md +91 -0
- package/modules/one-on-ones/content.md +133 -0
- package/modules/one-on-ones/exercises.md +81 -0
- package/modules/one-on-ones/module.yaml +44 -0
- package/modules/one-on-ones/quick-ref.md +67 -0
- package/modules/one-on-ones/quiz.md +73 -0
- package/modules/one-on-ones/resources.md +37 -0
- package/modules/one-on-ones/walkthrough.md +69 -0
- package/modules/package.json +9 -0
- package/modules/prioritization-frameworks/content.md +130 -0
- package/modules/prioritization-frameworks/exercises.md +93 -0
- package/modules/prioritization-frameworks/module.yaml +41 -0
- package/modules/prioritization-frameworks/quick-ref.md +77 -0
- package/modules/prioritization-frameworks/quiz.md +73 -0
- package/modules/prioritization-frameworks/resources.md +32 -0
- package/modules/prioritization-frameworks/walkthrough.md +69 -0
- package/modules/prompt-engineering/content.md +123 -0
- package/modules/prompt-engineering/exercises.md +82 -0
- package/modules/prompt-engineering/game.yaml +101 -0
- package/modules/prompt-engineering/module.yaml +45 -0
- package/modules/prompt-engineering/quick-ref.md +65 -0
- package/modules/prompt-engineering/quiz.md +105 -0
- package/modules/prompt-engineering/resources.md +36 -0
- package/modules/prompt-engineering/walkthrough.md +81 -0
- package/modules/rag-fundamentals/content.md +111 -0
- package/modules/rag-fundamentals/exercises.md +80 -0
- package/modules/rag-fundamentals/module.yaml +45 -0
- package/modules/rag-fundamentals/quick-ref.md +58 -0
- package/modules/rag-fundamentals/quiz.md +75 -0
- package/modules/rag-fundamentals/resources.md +34 -0
- package/modules/rag-fundamentals/walkthrough.md +75 -0
- package/modules/react-fundamentals/content.md +140 -0
- package/modules/react-fundamentals/exercises.md +81 -0
- package/modules/react-fundamentals/game.yaml +145 -0
- package/modules/react-fundamentals/module.yaml +45 -0
- package/modules/react-fundamentals/quick-ref.md +62 -0
- package/modules/react-fundamentals/quiz.md +106 -0
- package/modules/react-fundamentals/resources.md +42 -0
- package/modules/react-fundamentals/walkthrough.md +89 -0
- package/modules/react-fundamentals/workshop.yaml +112 -0
- package/modules/react-native-fundamentals/content.md +141 -0
- package/modules/react-native-fundamentals/exercises.md +79 -0
- package/modules/react-native-fundamentals/module.yaml +42 -0
- package/modules/react-native-fundamentals/quick-ref.md +60 -0
- package/modules/react-native-fundamentals/quiz.md +61 -0
- package/modules/react-native-fundamentals/resources.md +24 -0
- package/modules/react-native-fundamentals/walkthrough.md +84 -0
- package/modules/registry.yaml +1650 -0
- package/modules/risk-management/content.md +162 -0
- package/modules/risk-management/exercises.md +86 -0
- package/modules/risk-management/module.yaml +41 -0
- package/modules/risk-management/quick-ref.md +82 -0
- package/modules/risk-management/quiz.md +73 -0
- package/modules/risk-management/resources.md +40 -0
- package/modules/risk-management/walkthrough.md +67 -0
- package/modules/running-effective-standups/content.md +119 -0
- package/modules/running-effective-standups/exercises.md +79 -0
- package/modules/running-effective-standups/module.yaml +40 -0
- package/modules/running-effective-standups/quick-ref.md +61 -0
- package/modules/running-effective-standups/quiz.md +73 -0
- package/modules/running-effective-standups/resources.md +36 -0
- package/modules/running-effective-standups/walkthrough.md +76 -0
- package/modules/solid-principles/content.md +154 -0
- package/modules/solid-principles/exercises.md +107 -0
- package/modules/solid-principles/module.yaml +42 -0
- package/modules/solid-principles/quick-ref.md +50 -0
- package/modules/solid-principles/quiz.md +102 -0
- package/modules/solid-principles/resources.md +39 -0
- package/modules/solid-principles/walkthrough.md +84 -0
- package/modules/sprint-planning/content.md +142 -0
- package/modules/sprint-planning/exercises.md +79 -0
- package/modules/sprint-planning/game.yaml +84 -0
- package/modules/sprint-planning/module.yaml +44 -0
- package/modules/sprint-planning/quick-ref.md +76 -0
- package/modules/sprint-planning/quiz.md +102 -0
- package/modules/sprint-planning/resources.md +39 -0
- package/modules/sprint-planning/walkthrough.md +75 -0
- package/modules/sql-fundamentals/content.md +160 -0
- package/modules/sql-fundamentals/exercises.md +87 -0
- package/modules/sql-fundamentals/game.yaml +105 -0
- package/modules/sql-fundamentals/module.yaml +45 -0
- package/modules/sql-fundamentals/quick-ref.md +53 -0
- package/modules/sql-fundamentals/quiz.md +103 -0
- package/modules/sql-fundamentals/resources.md +42 -0
- package/modules/sql-fundamentals/walkthrough.md +92 -0
- package/modules/sql-fundamentals/workshop.yaml +109 -0
- package/modules/stakeholder-communication/content.md +186 -0
- package/modules/stakeholder-communication/exercises.md +87 -0
- package/modules/stakeholder-communication/module.yaml +38 -0
- package/modules/stakeholder-communication/quick-ref.md +89 -0
- package/modules/stakeholder-communication/quiz.md +73 -0
- package/modules/stakeholder-communication/resources.md +41 -0
- package/modules/stakeholder-communication/walkthrough.md +74 -0
- package/modules/system-design/content.md +149 -0
- package/modules/system-design/exercises.md +83 -0
- package/modules/system-design/game.yaml +95 -0
- package/modules/system-design/module.yaml +46 -0
- package/modules/system-design/quick-ref.md +59 -0
- package/modules/system-design/quiz.md +102 -0
- package/modules/system-design/resources.md +46 -0
- package/modules/system-design/walkthrough.md +90 -0
- package/modules/team-topologies/content.md +166 -0
- package/modules/team-topologies/exercises.md +85 -0
- package/modules/team-topologies/module.yaml +41 -0
- package/modules/team-topologies/quick-ref.md +61 -0
- package/modules/team-topologies/quiz.md +101 -0
- package/modules/team-topologies/resources.md +37 -0
- package/modules/team-topologies/walkthrough.md +76 -0
- package/modules/technical-debt/content.md +111 -0
- package/modules/technical-debt/exercises.md +92 -0
- package/modules/technical-debt/module.yaml +39 -0
- package/modules/technical-debt/quick-ref.md +60 -0
- package/modules/technical-debt/quiz.md +73 -0
- package/modules/technical-debt/resources.md +25 -0
- package/modules/technical-debt/walkthrough.md +94 -0
- package/modules/technical-mentoring/content.md +128 -0
- package/modules/technical-mentoring/exercises.md +84 -0
- package/modules/technical-mentoring/module.yaml +41 -0
- package/modules/technical-mentoring/quick-ref.md +74 -0
- package/modules/technical-mentoring/quiz.md +73 -0
- package/modules/technical-mentoring/resources.md +33 -0
- package/modules/technical-mentoring/walkthrough.md +65 -0
- package/modules/test-strategy/content.md +136 -0
- package/modules/test-strategy/exercises.md +84 -0
- package/modules/test-strategy/game.yaml +99 -0
- package/modules/test-strategy/module.yaml +45 -0
- package/modules/test-strategy/quick-ref.md +66 -0
- package/modules/test-strategy/quiz.md +99 -0
- package/modules/test-strategy/resources.md +60 -0
- package/modules/test-strategy/walkthrough.md +97 -0
- package/modules/test-strategy/workshop.yaml +96 -0
- package/modules/typescript-fundamentals/content.md +127 -0
- package/modules/typescript-fundamentals/exercises.md +79 -0
- package/modules/typescript-fundamentals/game.yaml +111 -0
- package/modules/typescript-fundamentals/module.yaml +45 -0
- package/modules/typescript-fundamentals/quick-ref.md +55 -0
- package/modules/typescript-fundamentals/quiz.md +104 -0
- package/modules/typescript-fundamentals/resources.md +42 -0
- package/modules/typescript-fundamentals/walkthrough.md +71 -0
- package/modules/typescript-fundamentals/workshop.yaml +146 -0
- package/modules/user-story-mapping/content.md +123 -0
- package/modules/user-story-mapping/exercises.md +87 -0
- package/modules/user-story-mapping/module.yaml +41 -0
- package/modules/user-story-mapping/quick-ref.md +64 -0
- package/modules/user-story-mapping/quiz.md +73 -0
- package/modules/user-story-mapping/resources.md +29 -0
- package/modules/user-story-mapping/walkthrough.md +86 -0
- package/modules/writing-prds/content.md +133 -0
- package/modules/writing-prds/exercises.md +93 -0
- package/modules/writing-prds/game.yaml +83 -0
- package/modules/writing-prds/module.yaml +44 -0
- package/modules/writing-prds/quick-ref.md +77 -0
- package/modules/writing-prds/quiz.md +103 -0
- package/modules/writing-prds/resources.md +30 -0
- package/modules/writing-prds/walkthrough.md +87 -0
- package/package.json +5 -3
- package/src/server.js +17 -7
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# User Story Mapping Quiz
|
|
2
|
+
|
|
3
|
+
## Question 1
|
|
4
|
+
|
|
5
|
+
What is the "backbone" in a user story map?
|
|
6
|
+
|
|
7
|
+
A) The technical architecture that supports the product
|
|
8
|
+
B) The high-level user activities, ordered left-to-right (top row)
|
|
9
|
+
C) The most critical user stories for the release
|
|
10
|
+
D) The dependencies between development teams
|
|
11
|
+
|
|
12
|
+
<!-- ANSWER: B -->
|
|
13
|
+
<!-- EXPLANATION: The backbone is the top row of the map—high-level user activities in sequence (e.g., Browse, Add to cart, Check out). It represents the user's journey at a coarse level. The "body" is the tasks stacked under each activity. -->
|
|
14
|
+
|
|
15
|
+
## Question 2
|
|
16
|
+
|
|
17
|
+
What is a "walking skeleton" release?
|
|
18
|
+
|
|
19
|
+
A) A release that includes all planned features
|
|
20
|
+
B) The thinnest end-to-end path that delivers user value
|
|
21
|
+
C) A prototype with no backend
|
|
22
|
+
D) The first sprint in an agile project
|
|
23
|
+
|
|
24
|
+
<!-- ANSWER: B -->
|
|
25
|
+
<!-- EXPLANATION: A walking skeleton is the minimum set of tasks that lets the user complete the main journey from start to finish. It's a horizontal slice across the map—the smallest viable release. It enables learning and iteration. -->
|
|
26
|
+
|
|
27
|
+
## Question 3
|
|
28
|
+
|
|
29
|
+
When building the backbone, activities should be:
|
|
30
|
+
|
|
31
|
+
A) Technical components (e.g., "API," "Database")
|
|
32
|
+
B) User actions or goals (e.g., "Search," "Book," "Track")
|
|
33
|
+
C) Screens or pages (e.g., "Homepage," "Settings")
|
|
34
|
+
D) Developer tasks (e.g., "Implement auth," "Add tests")
|
|
35
|
+
|
|
36
|
+
<!-- ANSWER: B -->
|
|
37
|
+
<!-- EXPLANATION: The backbone reflects the user's journey. Activities are what the user does—verbs like search, compare, book. Technical components, screens, and dev tasks belong elsewhere; the map stays user-centered. -->
|
|
38
|
+
|
|
39
|
+
## Question 4
|
|
40
|
+
|
|
41
|
+
How do you "slice" releases from a story map?
|
|
42
|
+
|
|
43
|
+
A) Vertically—each column is a release
|
|
44
|
+
B) Horizontally—draw a line; above = Release 1, below = later
|
|
45
|
+
C) Randomly—stories are shuffled into sprints
|
|
46
|
+
D) By team—each team takes a section
|
|
47
|
+
|
|
48
|
+
<!-- ANSWER: B -->
|
|
49
|
+
<!-- EXPLANATION: Slicing is horizontal. The most important tasks sit at the top of each activity column. You draw a line: everything above is Release 1 (MVP), the next band is Release 2, etc. This keeps each release a coherent slice of the journey. -->
|
|
50
|
+
|
|
51
|
+
## Question 5
|
|
52
|
+
|
|
53
|
+
Which is a common mistake when story mapping?
|
|
54
|
+
|
|
55
|
+
A) Starting with user activities
|
|
56
|
+
B) Making the map too granular too early—listing every tiny task before understanding the flow
|
|
57
|
+
C) Walking the map to validate the sequence
|
|
58
|
+
D) Including designers and developers in the workshop
|
|
59
|
+
|
|
60
|
+
<!-- ANSWER: B -->
|
|
61
|
+
<!-- EXPLANATION: Adding too much detail too early makes the map unwieldy and loses the big picture. Start with activities and a few key tasks. Add granularity when slicing releases. Walking the map (C) and including the team (D) are good practices. -->
|
|
62
|
+
|
|
63
|
+
## Question 6
|
|
64
|
+
|
|
65
|
+
What does "walking the map" mean?
|
|
66
|
+
|
|
67
|
+
A) Physically moving around the room during the workshop
|
|
68
|
+
B) Reading the map left-to-right as a story to validate flow and find gaps
|
|
69
|
+
C) Deleting low-priority tasks
|
|
70
|
+
D) Merging similar activities
|
|
71
|
+
|
|
72
|
+
<!-- ANSWER: B -->
|
|
73
|
+
<!-- EXPLANATION: Walking the map means reading it as a narrative: "The user first does X, then Y, then Z." This helps spot missing steps, wrong order, or tasks that don't fit. It's a validation and sense-check step. -->
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# User Story Mapping — Resources
|
|
2
|
+
|
|
3
|
+
## Videos
|
|
4
|
+
|
|
5
|
+
- [User Story Mapping — Jeff Patton](https://www.youtube.com/watch?v=O7wLoFWE5HU) — 15 min, Agile Alliance. Overview of the method and why it works.
|
|
6
|
+
- [Story Mapping in a Nutshell](https://www.youtube.com/watch?v=srQ2sRCNepo) — ~10 min. Quick visual walkthrough of backbone, body, and slicing.
|
|
7
|
+
|
|
8
|
+
## Articles and Readings
|
|
9
|
+
|
|
10
|
+
- [User Story Mapping](https://www.nngroup.com/articles/user-story-mapping/) — Nielsen Norman Group. UX perspective on story mapping and journey visualization.
|
|
11
|
+
- [How to Use User Story Mapping](https://www.atlassian.com/agile/project-management/user-stories/user-story-mapping) — Atlassian. Practical guide with examples.
|
|
12
|
+
- [Story Mapping 101](https://www.jpattonassociates.com/user-story-mapping/) — Jeff Patton's site. Core concepts and links to the book.
|
|
13
|
+
- [Building a Story Map](https://www.smashingmagazine.com/2017/08/story-mapping-agile/) — Smashing Magazine. Step-by-step workshop facilitation.
|
|
14
|
+
|
|
15
|
+
## Books
|
|
16
|
+
|
|
17
|
+
- **User Story Mapping** by Jeff Patton — Definitive book on the method. O'Reilly. Covers backbone, body, slicing, workshops, and connecting to agile.
|
|
18
|
+
|
|
19
|
+
## Tools
|
|
20
|
+
|
|
21
|
+
- [Miro](https://miro.com) — Collaborative boards with story mapping templates.
|
|
22
|
+
- [Trello](https://trello.com) — Use boards and lists to model backbone + body; swimlanes for releases.
|
|
23
|
+
- [Figma](https://www.figma.com) — Design tools with FigJam for remote mapping workshops.
|
|
24
|
+
- [Storiesonboard](https://storiesonboard.com) — Purpose-built story mapping tool with release slicing.
|
|
25
|
+
|
|
26
|
+
## Templates
|
|
27
|
+
|
|
28
|
+
- [Story Map Template (Miro)](https://miro.com/templates/user-story-mapping/) — Pre-built structure for mapping.
|
|
29
|
+
- [Jeff Patton's Map Outline](https://www.jpattonassociates.com/the-new-backlog/) — Backlog vs. story map relationship.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# User Story Mapping Walkthrough — Learn by Doing
|
|
2
|
+
|
|
3
|
+
## Before We Begin
|
|
4
|
+
|
|
5
|
+
**Diagnostic:** Whose story is it? When you plan a feature, do you start from the user's journey or from the features you want to build? What's the difference—and why does it matter for prioritization?
|
|
6
|
+
|
|
7
|
+
**Checkpoint:** You can articulate why "user does X, then Y" leads to different decisions than "we need screens A, B, C."
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Step 1: Identify the User and Outcome
|
|
12
|
+
|
|
13
|
+
You're planning a feature: "Users can manage their saved payment methods." Before building a map, you need a clear user and outcome.
|
|
14
|
+
|
|
15
|
+
**Task:** Write down (a) who this map is for (be specific: new shopper, returning customer, B2B admin?), and (b) one sentence describing the outcome they accomplish.
|
|
16
|
+
|
|
17
|
+
**Question:** Why does defining the user matter? What if you had two different users—how might their maps differ?
|
|
18
|
+
|
|
19
|
+
**Checkpoint:** You have a named user and a clear outcome. You understand that different users have different journeys.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Step 2: Build the Backbone (Activities)
|
|
24
|
+
|
|
25
|
+
For your chosen user and outcome, list the high-level activities they perform. Use verbs: browse, compare, add, checkout, track.
|
|
26
|
+
|
|
27
|
+
<!-- hint:diagram mermaid-type="flowchart" topic="Story map structure: backbone (activities) on top, body (tasks) below" -->
|
|
28
|
+
<!-- hint:list style="cards" -->
|
|
29
|
+
|
|
30
|
+
**Task:** Write 4–6 activities in left-to-right order (the natural sequence of the user's journey). Don't add tasks yet—just the backbone.
|
|
31
|
+
|
|
32
|
+
**Question:** How do you know when an activity is "right-sized"? What makes an activity too big or too small?
|
|
33
|
+
|
|
34
|
+
**Checkpoint:** You have a backbone row: activities in sequence. Each activity is a user action, not a technical component or screen name.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Step 3: Add the Body (Tasks)
|
|
39
|
+
|
|
40
|
+
Under each activity, add 2–4 specific tasks. "Check out" might have: Enter shipping address, Choose payment method, Review order, Confirm.
|
|
41
|
+
|
|
42
|
+
**Task:** Add tasks under each backbone activity. Keep them user-centric (what the user does, not how the system does it).
|
|
43
|
+
|
|
44
|
+
**Question:** Where do you draw the line between "task" and "too granular"? When would you stop breaking down?
|
|
45
|
+
|
|
46
|
+
**Checkpoint:** You have a 2D map: backbone on top, body stacked below. Tasks are concrete but not atomically tiny.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Step 4: Walk the Map
|
|
51
|
+
|
|
52
|
+
Read the map left-to-right as a story. "The user first does X, then Y, then Z..."
|
|
53
|
+
|
|
54
|
+
**Task:** Walk your map aloud (or in your head). Note: gaps, wrong order, missing steps, tasks that don't fit.
|
|
55
|
+
|
|
56
|
+
**Question:** What would you do if you found a task that belongs under a different activity? Or an activity that seems out of order?
|
|
57
|
+
|
|
58
|
+
**Checkpoint:** You've validated the flow. You've identified at least one gap or ordering issue and know how to fix it.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Step 5: Slice Release 1 (Walking Skeleton)
|
|
63
|
+
|
|
64
|
+
The walking skeleton is the thinnest path that delivers value. Draw a horizontal line: above = Release 1.
|
|
65
|
+
|
|
66
|
+
<!-- hint:buttons type="single" prompt="How do you decide what goes above the Release 1 line?" options="Everything users might want,Minimum to complete the outcome,Whatever fits the timeline,Whatever engineers can build" -->
|
|
67
|
+
|
|
68
|
+
**Task:** For your map, identify the minimum tasks needed to complete the outcome. Draw your Release 1 line. What's in? What's "later"?
|
|
69
|
+
|
|
70
|
+
**Question:** How do you decide what stays above the line vs below? What's the risk of putting too much in Release 1?
|
|
71
|
+
|
|
72
|
+
**Checkpoint:** Release 1 is a coherent, minimal slice. You can articulate what the user gets and what's deferred.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Step 6: Run a Mini-Workshop
|
|
77
|
+
|
|
78
|
+
Imagine you're facilitating a 30-minute story-mapping workshop with two developers and one designer.
|
|
79
|
+
|
|
80
|
+
<!-- hint:card type="concept" title="Story maps keep the workshop user-centered, not feature- or architecture-focused" -->
|
|
81
|
+
|
|
82
|
+
**Task:** Write a brief agenda: (a) how you'd introduce the user and outcome, (b) how you'd get the backbone and body on the board (who speaks, what order), and (c) how you'd handle the "slice" discussion.
|
|
83
|
+
|
|
84
|
+
**Question:** What could go wrong in the workshop? How would you keep it from becoming a feature list or technical architecture discussion?
|
|
85
|
+
|
|
86
|
+
**Checkpoint:** You have a facilitation plan. You know how to keep the map user-centered and the conversation productive.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Writing PRDs — From Problem to Spec
|
|
2
|
+
|
|
3
|
+
<!-- hint:slides topic="PRD writing: problem-first thinking, JTBD, PRD structure, stakeholder alignment, and common anti-patterns" slides="5" -->
|
|
4
|
+
|
|
5
|
+
## What Is a PRD?
|
|
6
|
+
|
|
7
|
+
A **Product Requirements Document (PRD)** is a living document that defines what you're building, why, and for whom. It bridges the gap between strategy and execution—giving engineering, design, and stakeholders a shared understanding before a single line of code is written.
|
|
8
|
+
|
|
9
|
+
A good PRD answers: *What problem are we solving?* and *How will we know we succeeded?*
|
|
10
|
+
|
|
11
|
+
## Why PRDs Matter
|
|
12
|
+
|
|
13
|
+
Without a PRD, teams often:
|
|
14
|
+
|
|
15
|
+
- Build solutions before validating the problem
|
|
16
|
+
- Scope creep from unclear boundaries
|
|
17
|
+
- Disagree on "done" because success was never defined
|
|
18
|
+
- Waste cycles re-explaining the same context
|
|
19
|
+
|
|
20
|
+
A well-crafted PRD aligns everyone, reduces ambiguity, and makes prioritization decisions traceable.
|
|
21
|
+
|
|
22
|
+
## PRD Structure
|
|
23
|
+
|
|
24
|
+
A typical PRD includes these sections:
|
|
25
|
+
|
|
26
|
+
| Section | Purpose |
|
|
27
|
+
|---------|---------|
|
|
28
|
+
| **Problem Statement** | Clear description of the user/customer pain |
|
|
29
|
+
| **Goals & Non-Goals** | What we will and won't do (prevents scope creep) |
|
|
30
|
+
| **User Stories / Use Cases** | Who does what and why |
|
|
31
|
+
| **Success Metrics** | Measurable outcomes (quantified) |
|
|
32
|
+
| **Scope** | In/out of scope, phased approach |
|
|
33
|
+
| **Timeline** | High-level milestones |
|
|
34
|
+
| **Open Questions** | Known unknowns, risks, dependencies |
|
|
35
|
+
|
|
36
|
+
## Writing Effective Problem Statements
|
|
37
|
+
|
|
38
|
+
A problem statement is **not** a solution in disguise. It focuses on the pain, not the fix.
|
|
39
|
+
|
|
40
|
+
**Weak:** "Users need a dark mode toggle."
|
|
41
|
+
|
|
42
|
+
**Strong:** "Users report eye strain when using the app for extended sessions in low-light environments, leading to reduced engagement after 30+ minutes."
|
|
43
|
+
|
|
44
|
+
The **Jobs To Be Done (JTBD)** framework helps: *When [situation], I want to [motivation], so I can [outcome].*
|
|
45
|
+
|
|
46
|
+
Example: *When I'm reviewing a long PR diff, I want to quickly spot high-risk changes, so I can focus my review time where it matters.*
|
|
47
|
+
|
|
48
|
+
## Defining Measurable Success Criteria
|
|
49
|
+
|
|
50
|
+
Vague metrics ("improve user satisfaction") are hard to act on. Make them **SMART**:
|
|
51
|
+
|
|
52
|
+
- **Specific:** Which metric (e.g., NPS, retention, task completion)?
|
|
53
|
+
- **Measurable:** Can we track it in our systems?
|
|
54
|
+
- **Achievable:** Is it realistic given scope?
|
|
55
|
+
- **Relevant:** Does it tie to the problem?
|
|
56
|
+
- **Time-bound:** By when?
|
|
57
|
+
|
|
58
|
+
**Example:** "Reduce time-to-first-value for new users from 14 days to 7 days within Q2, measured by cohort analysis."
|
|
59
|
+
|
|
60
|
+
## JTBD Framework
|
|
61
|
+
|
|
62
|
+
Jobs To Be Done reframes features as outcomes:
|
|
63
|
+
|
|
64
|
+
| Element | Example |
|
|
65
|
+
|---------|---------|
|
|
66
|
+
| **Job** | Get my team aligned on the sprint |
|
|
67
|
+
| **Situation** | End of planning, many opinions |
|
|
68
|
+
| **Motivation** | Capture decisions and next steps |
|
|
69
|
+
| **Outcome** | Everyone leaves with clarity on who does what |
|
|
70
|
+
|
|
71
|
+
Using JTBD in your PRD keeps the focus on user value, not feature lists.
|
|
72
|
+
|
|
73
|
+
## Common PRD Anti-Patterns
|
|
74
|
+
|
|
75
|
+
1. **Solution-first thinking** — Starting with "We need a search bar" instead of "Users can't find what they need."
|
|
76
|
+
2. **Vague success metrics** — "Improve engagement" with no baseline or target.
|
|
77
|
+
3. **Missing non-goals** — Stakeholders assume everything is in scope.
|
|
78
|
+
4. **No open questions** — Pretending uncertainty doesn't exist.
|
|
79
|
+
5. **Waterfall rigidity** — Treating the PRD as unchangeable instead of iterative.
|
|
80
|
+
|
|
81
|
+
## PRD Lifecycle: Problem → Build
|
|
82
|
+
|
|
83
|
+
```mermaid
|
|
84
|
+
flowchart LR
|
|
85
|
+
A[Problem] --> B[Research]
|
|
86
|
+
B --> C[PRD]
|
|
87
|
+
C --> D[Review]
|
|
88
|
+
D --> E[Build]
|
|
89
|
+
E -.->|feedback| B
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
1. **Problem** — Identify the pain point or opportunity.
|
|
93
|
+
2. **Research** — User interviews, data, competitive analysis.
|
|
94
|
+
3. **PRD** — Document findings, goals, and scope.
|
|
95
|
+
4. **Review** — Stakeholder alignment, design/engineering input.
|
|
96
|
+
5. **Build** — Execution with feedback loops back to research.
|
|
97
|
+
|
|
98
|
+
## Templates
|
|
99
|
+
|
|
100
|
+
Use a consistent template so your PRDs are comparable and complete. A minimal template:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
# [Feature Name]
|
|
104
|
+
|
|
105
|
+
## Problem
|
|
106
|
+
[1–2 paragraphs: who has the problem, what it is, why it matters]
|
|
107
|
+
|
|
108
|
+
## Goals
|
|
109
|
+
- [Goal 1]
|
|
110
|
+
- [Goal 2]
|
|
111
|
+
|
|
112
|
+
## Non-Goals
|
|
113
|
+
- [What we're explicitly NOT doing]
|
|
114
|
+
|
|
115
|
+
## Success Metrics
|
|
116
|
+
- [Metric]: [Baseline] → [Target] by [Date]
|
|
117
|
+
|
|
118
|
+
## User Stories
|
|
119
|
+
- As a [persona], I want [action], so that [outcome]
|
|
120
|
+
|
|
121
|
+
## Scope
|
|
122
|
+
- In scope: ...
|
|
123
|
+
- Out of scope: ...
|
|
124
|
+
- Phase 2 considerations: ...
|
|
125
|
+
|
|
126
|
+
## Open Questions
|
|
127
|
+
- [Question 1]
|
|
128
|
+
- [Question 2]
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
PRDs are communication tools. A great PRD doesn't have to be long—it has to be **clear**. When in doubt, start with the problem statement and success metrics. Everything else supports those two.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Writing PRDs — Exercises
|
|
2
|
+
|
|
3
|
+
## Exercise 1: Problem vs Solution
|
|
4
|
+
|
|
5
|
+
**Task:** For each statement, label it as a **problem** or **solution**. If it's a solution, rewrite it as a problem statement.
|
|
6
|
+
|
|
7
|
+
1. "We need a search bar in the header."
|
|
8
|
+
2. "Users spend 5+ minutes trying to find the export option, often giving up."
|
|
9
|
+
3. "Add a dark mode toggle to settings."
|
|
10
|
+
4. "New users abandon the onboarding flow at step 3 at a 40% rate."
|
|
11
|
+
|
|
12
|
+
**Validation:**
|
|
13
|
+
- [ ] Problems focus on pain, context, and impact
|
|
14
|
+
- [ ] Solutions are rewritten to describe the underlying problem
|
|
15
|
+
- [ ] No solution language in problem statements (no "we need," "add," "implement")
|
|
16
|
+
|
|
17
|
+
**Hints:**
|
|
18
|
+
1. Problem = who, what pain, why it matters
|
|
19
|
+
2. Solution = the proposed fix (feature, button, page)
|
|
20
|
+
3. "Users can't find X" is problem; "We need search" is solution
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Exercise 2: Write a JTBD
|
|
25
|
+
|
|
26
|
+
**Task:** Pick a feature you know (real or hypothetical). Write a Jobs To Be Done statement using: *When [situation], I want to [motivation], so I can [outcome].*
|
|
27
|
+
|
|
28
|
+
**Validation:**
|
|
29
|
+
- [ ] Situation is specific (context, circumstance)
|
|
30
|
+
- [ ] Motivation is the goal or need
|
|
31
|
+
- [ ] Outcome is the benefit or result
|
|
32
|
+
- [ ] The statement is about the user, not the system
|
|
33
|
+
|
|
34
|
+
**Hints:**
|
|
35
|
+
1. Start with "When I..." — the situation grounds the job
|
|
36
|
+
2. "So I can" ties the action to value
|
|
37
|
+
3. Avoid feature names; describe the job in user terms
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Exercise 3: Make Metrics SMART
|
|
42
|
+
|
|
43
|
+
**Task:** These metrics are vague. Rewrite each as a SMART metric (Specific, Measurable, Achievable, Relevant, Time-bound). Include baseline, target, and timeframe where possible.
|
|
44
|
+
|
|
45
|
+
1. "Improve user satisfaction"
|
|
46
|
+
2. "Reduce time to complete onboarding"
|
|
47
|
+
3. "Increase engagement"
|
|
48
|
+
|
|
49
|
+
**Validation:**
|
|
50
|
+
- [ ] Each metric names a specific measure
|
|
51
|
+
- [ ] Baseline and target are included (or justified if unknown)
|
|
52
|
+
- [ ] Timeframe is stated
|
|
53
|
+
- [ ] Metric is actionable (you could track it)
|
|
54
|
+
|
|
55
|
+
**Hints:**
|
|
56
|
+
1. "Improve" → improve what? NPS? CSAT? Task completion?
|
|
57
|
+
2. Add numbers: "from X to Y by [date]"
|
|
58
|
+
3. If baseline is unknown, note "TBD—measure first"
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Exercise 4: Write Non-Goals
|
|
63
|
+
|
|
64
|
+
**Task:** For a feature you're familiar with (e.g., "user profile export"), write 3–5 non-goals. These are things stakeholders might assume are in scope but are explicitly out.
|
|
65
|
+
|
|
66
|
+
**Validation:**
|
|
67
|
+
- [ ] Non-goals are concrete (not "everything else")
|
|
68
|
+
- [ ] Each is plausible scope creep
|
|
69
|
+
- [ ] Language is clear: "We will NOT..."
|
|
70
|
+
- [ ] At least one addresses "nice to have" vs "must have"
|
|
71
|
+
|
|
72
|
+
**Hints:**
|
|
73
|
+
1. Think: What would stakeholders ask for? "Can we also...?"
|
|
74
|
+
2. Non-goals prevent "while you're at it" creep
|
|
75
|
+
3. "Phase 2" or "Future consideration" can be non-goals
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Exercise 5: Minimal PRD Draft
|
|
80
|
+
|
|
81
|
+
**Task:** Draft a minimal PRD (1–2 pages) for a small feature. Include: Problem, Goals, Non-Goals, Success Metrics, and 2–3 User Stories. Use the PRD structure from the content.
|
|
82
|
+
|
|
83
|
+
**Validation:**
|
|
84
|
+
- [ ] Problem statement is problem-focused, not solution-focused
|
|
85
|
+
- [ ] Goals and non-goals are explicit
|
|
86
|
+
- [ ] Success metrics have baseline/target/timeframe (or TBD noted)
|
|
87
|
+
- [ ] User stories follow "As a / I want / So that" format
|
|
88
|
+
- [ ] Document is readable in under 5 minutes
|
|
89
|
+
|
|
90
|
+
**Hints:**
|
|
91
|
+
1. Start with the problem—everything else supports it
|
|
92
|
+
2. Keep each section concise; 2–3 bullets each
|
|
93
|
+
3. Open questions are fine—list them explicitly
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
games:
|
|
2
|
+
- type: classify
|
|
3
|
+
title: "Requirement Classifier"
|
|
4
|
+
categories:
|
|
5
|
+
- name: "Functional"
|
|
6
|
+
color: "#58a6ff"
|
|
7
|
+
- name: "Non-Functional"
|
|
8
|
+
color: "#3fb950"
|
|
9
|
+
- name: "Out of Scope"
|
|
10
|
+
color: "#8b949e"
|
|
11
|
+
items:
|
|
12
|
+
- text: "Users can reset their password via email link."
|
|
13
|
+
category: "Functional"
|
|
14
|
+
- text: "The app must load the dashboard within 2 seconds on 4G."
|
|
15
|
+
category: "Non-Functional"
|
|
16
|
+
- text: "Add dark mode and a mobile app in phase 1."
|
|
17
|
+
category: "Out of Scope"
|
|
18
|
+
- text: "Users can filter search results by date range and category."
|
|
19
|
+
category: "Functional"
|
|
20
|
+
- text: "The system must support 10,000 concurrent users."
|
|
21
|
+
category: "Non-Functional"
|
|
22
|
+
- text: "Integrate with CRM system X and analytics platform Y."
|
|
23
|
+
category: "Out of Scope"
|
|
24
|
+
- text: "Admins can bulk-export user data as CSV."
|
|
25
|
+
category: "Functional"
|
|
26
|
+
- text: "All user data must be encrypted at rest and in transit."
|
|
27
|
+
category: "Non-Functional"
|
|
28
|
+
- text: "Build an AI recommendation engine for the product catalog."
|
|
29
|
+
category: "Out of Scope"
|
|
30
|
+
- text: "Users receive an in-app notification when their order ships."
|
|
31
|
+
category: "Functional"
|
|
32
|
+
|
|
33
|
+
- type: speed-round
|
|
34
|
+
title: "Problem or Solution?"
|
|
35
|
+
rounds:
|
|
36
|
+
- question: "Users need a faster way to complete checkout on mobile."
|
|
37
|
+
options:
|
|
38
|
+
- "Problem"
|
|
39
|
+
- "Solution"
|
|
40
|
+
answer: 0
|
|
41
|
+
timeLimit: 12
|
|
42
|
+
- question: "We should add a one-click checkout button to reduce cart abandonment."
|
|
43
|
+
options:
|
|
44
|
+
- "Problem"
|
|
45
|
+
- "Solution"
|
|
46
|
+
answer: 1
|
|
47
|
+
timeLimit: 14
|
|
48
|
+
- question: "Support gets too many tickets about password reset confusion."
|
|
49
|
+
options:
|
|
50
|
+
- "Problem"
|
|
51
|
+
- "Solution"
|
|
52
|
+
answer: 0
|
|
53
|
+
timeLimit: 12
|
|
54
|
+
- question: "We need to build a chatbot to answer common support questions."
|
|
55
|
+
options:
|
|
56
|
+
- "Problem"
|
|
57
|
+
- "Solution"
|
|
58
|
+
answer: 1
|
|
59
|
+
timeLimit: 14
|
|
60
|
+
- question: "New users don't understand how to set up their first project."
|
|
61
|
+
options:
|
|
62
|
+
- "Problem"
|
|
63
|
+
- "Solution"
|
|
64
|
+
answer: 0
|
|
65
|
+
timeLimit: 12
|
|
66
|
+
- question: "Let's add an onboarding wizard with 3 steps."
|
|
67
|
+
options:
|
|
68
|
+
- "Problem"
|
|
69
|
+
- "Solution"
|
|
70
|
+
answer: 1
|
|
71
|
+
timeLimit: 14
|
|
72
|
+
- question: "Admins spend 2 hours weekly manually reconciling reports."
|
|
73
|
+
options:
|
|
74
|
+
- "Problem"
|
|
75
|
+
- "Solution"
|
|
76
|
+
answer: 0
|
|
77
|
+
timeLimit: 12
|
|
78
|
+
- question: "We should use React with a component library for the new dashboard."
|
|
79
|
+
options:
|
|
80
|
+
- "Problem"
|
|
81
|
+
- "Solution"
|
|
82
|
+
answer: 1
|
|
83
|
+
timeLimit: 14
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
slug: writing-prds
|
|
2
|
+
title: "Writing PRDs — From Problem to Spec"
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "Learn to write product requirements documents that align teams and clarify scope."
|
|
5
|
+
category: product-management
|
|
6
|
+
tags: [prd, product-management, requirements, specification, documentation]
|
|
7
|
+
difficulty: beginner
|
|
8
|
+
|
|
9
|
+
xp:
|
|
10
|
+
read: 10
|
|
11
|
+
walkthrough: 30
|
|
12
|
+
exercise: 20
|
|
13
|
+
quiz: 15
|
|
14
|
+
quiz-perfect-bonus: 10
|
|
15
|
+
game: 20
|
|
16
|
+
game-perfect-bonus: 10
|
|
17
|
+
|
|
18
|
+
time:
|
|
19
|
+
quick: 5
|
|
20
|
+
read: 15
|
|
21
|
+
guided: 45
|
|
22
|
+
|
|
23
|
+
prerequisites: []
|
|
24
|
+
related: [prioritization-frameworks, user-story-mapping]
|
|
25
|
+
|
|
26
|
+
triggers:
|
|
27
|
+
- "How do I write a PRD?"
|
|
28
|
+
- "What should a product requirements document include?"
|
|
29
|
+
- "How do I define product requirements?"
|
|
30
|
+
- "What's the difference between a PRD and a spec?"
|
|
31
|
+
|
|
32
|
+
visuals:
|
|
33
|
+
diagrams: [diagram-flow, diagram-mermaid]
|
|
34
|
+
quiz-types: [quiz-drag-order, quiz-timed-choice]
|
|
35
|
+
game-types: [classify, speed-round]
|
|
36
|
+
slides: true
|
|
37
|
+
|
|
38
|
+
sources:
|
|
39
|
+
- url: "https://www.lennysnewsletter.com/p/prds-1-pagers-examples"
|
|
40
|
+
label: "Lenny's Newsletter — PRDs & 1-Pagers"
|
|
41
|
+
type: article
|
|
42
|
+
- url: "https://www.svpg.com/revisiting-the-product-spec/"
|
|
43
|
+
label: "SVPG — Revisiting the Product Spec"
|
|
44
|
+
type: article
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# PRD Quick Reference
|
|
2
|
+
|
|
3
|
+
## PRD Sections Checklist
|
|
4
|
+
|
|
5
|
+
| Section | Purpose | Key Questions |
|
|
6
|
+
|---------|---------|---------------|
|
|
7
|
+
| Problem Statement | User pain, not solution | Who? What pain? Why does it matter? |
|
|
8
|
+
| Goals | What we will achieve | What outcomes? For whom? |
|
|
9
|
+
| Non-Goals | What we won't do | What's out of scope? |
|
|
10
|
+
| Success Metrics | Measurable outcomes | Baseline? Target? Timeframe? |
|
|
11
|
+
| User Stories | Use cases | As a / I want / So that |
|
|
12
|
+
| Scope | In/out, phases | What's in v1? What's later? |
|
|
13
|
+
| Open Questions | Known unknowns | What do we still need to learn? |
|
|
14
|
+
|
|
15
|
+
## Problem vs Solution
|
|
16
|
+
|
|
17
|
+
| Problem ✓ | Solution ✗ |
|
|
18
|
+
|-----------|-----------|
|
|
19
|
+
| "Users can't find key actions" | "We need a search bar" |
|
|
20
|
+
| "Eye strain in low-light" | "Add dark mode" |
|
|
21
|
+
| "Too many steps to complete task" | "Add a wizard" |
|
|
22
|
+
|
|
23
|
+
## JTBD Template
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
When [situation/circumstance],
|
|
27
|
+
I want to [motivation/goal],
|
|
28
|
+
so I can [outcome/benefit].
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Example:** When I'm reviewing a long PR, I want to quickly spot high-risk files, so I can focus my review where it matters.
|
|
32
|
+
|
|
33
|
+
## Success Metric Template
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
[Metric name]: [Baseline] → [Target] by [Date]
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Example:** Time-to-first-value: 14 days → 7 days by end of Q2
|
|
40
|
+
|
|
41
|
+
## Common Anti-Patterns
|
|
42
|
+
|
|
43
|
+
| Anti-Pattern | Fix |
|
|
44
|
+
|--------------|-----|
|
|
45
|
+
| Solution-first | Start with problem, not feature |
|
|
46
|
+
| Vague metrics | Add baseline, target, timeframe |
|
|
47
|
+
| No non-goals | List 3–5 explicit out-of-scope items |
|
|
48
|
+
| Missing open questions | Capture unknowns and risks |
|
|
49
|
+
| Waterfall rigidity | Treat PRD as living doc, iterate |
|
|
50
|
+
|
|
51
|
+
## PRD Lifecycle (Mermaid)
|
|
52
|
+
|
|
53
|
+
```mermaid
|
|
54
|
+
flowchart LR
|
|
55
|
+
A[Problem] --> B[Research]
|
|
56
|
+
B --> C[PRD]
|
|
57
|
+
C --> D[Review]
|
|
58
|
+
D --> E[Build]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Minimal PRD Template
|
|
62
|
+
|
|
63
|
+
```markdown
|
|
64
|
+
# [Feature Name]
|
|
65
|
+
## Problem
|
|
66
|
+
[2–3 sentences: who, what, why]
|
|
67
|
+
## Goals
|
|
68
|
+
- ...
|
|
69
|
+
## Non-Goals
|
|
70
|
+
- ...
|
|
71
|
+
## Success Metrics
|
|
72
|
+
- [Metric]: [Baseline] → [Target] by [Date]
|
|
73
|
+
## User Stories
|
|
74
|
+
- As a [persona], I want [action], so that [outcome]
|
|
75
|
+
## Open Questions
|
|
76
|
+
- ...
|
|
77
|
+
```
|