Skip to content

Learning & career

Business analysis for product teams

Eliciting the real requirements, writing testable user stories and acceptance criteria, modeling processes with BPMN, Event Storming, PRDs with measurable non-functional requirements and product metrics in SQL.

6 parts147 min readUpdated Oct 8, 2026

Parts

  1. Part 1

    Requirements Elicitation for Engineers: A Business Analyst's Toolbox, from Interviews to Assumption Logs

    Stated requirements are rarely real needs. This post walks engineers and BAs through a business analyst's toolbox: stakeholder mapping, interview technique, shadowing, Jobs-to-be-Done, prototyping, assumption logs, BABOK-style requirement types, and a B2B invoice-approval case study from a Vietnamese company.

    24 min

  2. Part 2

    User Stories and Acceptance Criteria: Write Them So Developers Can Build and Testers Can Verify

    A good user story isn't the “As a… I want… so that…” sentence, it's the conversation and the examples around it. This post covers the 3 Cs, INVEST with real bad and good examples, story mapping, splitting patterns, acceptance criteria as rules plus examples, Gherkin done right, Example Mapping and turning ACs into automated tests.

    24 min

  3. Part 3

    Business Process Modeling with BPMN 2.0: From As-Is Diagrams to Running Software

    BPMN isn't for decorating project documents; it's for finding where a process wastes time: handoffs, rework loops, waiting. This post covers the notation subset you actually need, common modeling mistakes, a measured as-is/to-be purchase approval example, and the path from model to state machine, workflow engine and user stories.

    25 min

  4. Part 4

    Event Storming in Practice: From a Wall of Sticky Notes to Bounded Contexts, Aggregates and NestJS Code

    Event Storming is the bridge between business analysis and software design. This post covers the three workshop levels, the sticky-note grammar, facilitation, a real clinic booking example, finding bounded contexts, context mapping, and turning the result into aggregates, commands and events in NestJS.

    24 min

  5. Part 5

    Writing a PRD Engineering Can Estimate and QA Can Test: Structure, Testable Requirements and Measurable NFRs

    A good PRD isn't long, it's clear. This post covers PRD structure, writing testable requirements, measurable NFRs using ISO 25010 (p95 performance, SLOs, security, Vietnam's Decree 13 and data protection law, WCAG 2.2 AA), traceability from goal to test, and a complete sample PRD.

    25 min

  6. Part 6

    Product Analytics in SQL: Metric Definitions, Tracking Plans, Funnels, Cohort Retention and A/B Tests That Don't Fool You

    From metric definitions precise down to the numerator, denominator and time window, through tracking plans and user identity, to real PostgreSQL for funnels, cohort retention, DAU/WAU/MAU, window functions, the Asia/Ho_Chi_Minh timezone and A/B tests with an SRM check.

    25 min

Series review

0/12 answered · 0 correct

12 questions drawn from the parts of this series. Answers here count toward each post's own quiz.

  1. Question 1 of 12IntermediateA client says "build us a mobile app so the director can approve invoices". Which approach best fits the idea that "a requirement is a hypothesis"?
  2. Question 2 of 12IntermediateWhy add shadowing (sitting next to someone doing real work) instead of relying on interviews alone?
  3. Question 3 of 12StarterIn the 3 Cs model, which part of a user story carries the most value, and why is a polished As a / I want / so that template not enough?
  4. Question 4 of 12IntermediateA team wants to perfect "find an order" (search, filters, guest lookup) before building refunds. Why does the post say this is the wrong direction?
  5. Question 5 of 12IntermediateA process splits into two branches with a parallel (AND) gateway but merges them with an exclusive (XOR) gateway. What is the consequence?
  6. Question 6 of 12IntermediateThe company blames slow director sign-off for the two-week purchase time and plans a mobile approval app. What does the as-is analysis show?
  7. Question 7 of 12StarterIn Event Storming, what is the core difference between a command and a domain event?
  8. Question 8 of 12IntermediateA dev team wants to jump straight to design level because it is "close to the code", and they only own one module. What main risk does the post describe?
  9. Question 9 of 12StarterIn a PRD's opening section, which statement is a real problem rather than a solution?
  10. Question 10 of 12IntermediateWhy should a performance NFR be written with a percentile (like p95) rather than average response time?
  11. Question 11 of 12IntermediateWhat is wrong with defining conversion as "orders this week divided by checkouts this week", and which fix does the post recommend?
  12. Question 12 of 12IntermediateA dashboard uses occurred_at::date on a timestamptz column and the BI connection is set to UTC. What is the consequence for a Vietnamese shop?

Other series

Series