Forward Deployed Engineering Tutorial · Discovery and Scoping · Lesson 4 of 24

Customer Discovery

Understand the customer's workflow, data, constraints and goals before building, using structured discovery questions.

Create a free account to save this page, take notes and track your progress. Sign in

Start from the workflow, not the feature

Customers describe solutions ("we need an export to Excel"); your job is to find the problem and the workflow around it ("finance reconciles invoices every Monday and can't see which ones failed").

Discovery questions

Area Ask
Goal What decision or task gets better? How will we know (a metric)?
Workflow Who does what today, with which tools, how often? Where does it hurt?
Data Where does the data live? Who owns it? How clean is it? How much? How fresh must it be?
Constraints Security reviews, network access, compliance, change windows, budget
People Who decides, who uses it daily, who must approve, who could block it?
Timeline What's driving the date? What happens if it slips?
Sort discovery notes into goals, pains, data and constraintsTry it yourself
notes = [
    "finance team exports invoices from ERP every monday",
    "takes 4 hours to find failed payments manually",
    "payment provider has an API, ERP has nightly CSV exports",
    "CFO wants failed payments chased within 24 hours",
    "security review required for any new vendor access",
    "data contains customer bank details",
]
tags = {"goal": ["wants", "within"], "pain": ["takes", "manually"], "data": ["api", "csv", "export"],
        "constraint": ["security", "review", "bank details"]}
for line in notes:
    found = [t for t, words in tags.items() if any(w in line.lower() for w in words)] or ["other"]
    print(f"[{', '.join(found):15}] {line}")

Output

[data           ] finance team exports invoices from ERP every monday
[pain           ] takes 4 hours to find failed payments manually
[data           ] payment provider has an API, ERP has nightly CSV exports
[goal           ] CFO wants failed payments chased within 24 hours
[constraint     ] security review required for any new vendor access
[constraint     ] data contains customer bank details

Techniques

  • Shadow a user doing the task; watch rather than ask.
  • Ask for real examples: last week's file, a real ticket, an actual email.
  • Draw the current and future workflow and confirm it with the customer.
  • Write it down and send a summary after every workshop.

Test yourself

Which question best uncovers the real goal behind a feature request?

  1. What decision or task will this make better, and how will we measure it?
  2. Which colour should the button be?
  3. Which framework should we use?
  4. Can we start tomorrow?
Show answer

Answer: What decision or task will this make better, and how will we measure it?

Tie work to an outcome and a metric before choosing a solution.

Was this page helpful?