Skip to content

Breaking Down Work

This guide explains how to approach new work using Epilogue Tracker's user-centric methodology.

The Three Questions

Before starting any work, ask:

  1. Which user (actor) benefits from this?
  2. What goal of theirs does this support?
  3. What interaction describes how this helps them?

If you can't answer these questions, either find the user need or seriously consider not doing the work.

Step-by-Step Process

1. Identify the User Need

When you receive a task like "add caching to the API", don't start coding. First, ask why:

  • Why do we need caching? → API responses are slow
  • Why does that matter? → Users wait too long
  • Which users? → Customers browsing products

Now you have:

  • Actor: Customer
  • Problem: Waiting too long

2. Create or Find the Goal

Check if a relevant goal exists:

bash
et list goals --actor customer

If not, create one:

bash
et create goal \
  --id "fast_browsing" \
  --description "Browse products without delays or waiting" \
  --actor "customer" \
  --success-criteria "Page loads under 2 seconds"

3. Create the Interaction

Now document the work as an interaction:

bash
et create interaction \
  --id "api_response_caching" \
  --description "Fast API responses through intelligent caching" \
  --performed-by "customer" \
  --goal "fast_browsing"

4. Do the Work

Now implement the caching, knowing exactly:

  • Who benefits (customer)
  • What they get (fast browsing)
  • How to measure success (page loads under 2 seconds)

5. Validate

After completing work, validate the model:

bash
et validate

Example: Feature Request

Request: "Add dark mode to the app"

Bad Approach

bash
# Jump straight to implementation as a task
# No user context, no success criteria

Good Approach

Step 1: Who wants this?

  • Users who work at night or prefer dark interfaces

Step 2: Create/find goal

bash
et create goal \
  --id "comfortable_viewing" \
  --description "Use the app comfortably in any lighting condition" \
  --actor "customer" \
  --success-criteria "Can switch between light and dark themes, preference is saved"

Step 3: Create interaction

bash
et create interaction \
  --id "theme_switching" \
  --description "Toggle between light and dark themes" \
  --performed-by "customer" \
  --goal "comfortable_viewing"

Example: Bug Fix

Bug: "Login fails intermittently"

Bad Approach

bash
# Fix the bug without documenting user impact

Good Approach

Step 1: Which goal is affected?

bash
et list goals --actor customer | grep -i login

Or create if missing:

bash
et create goal \
  --id "reliable_access" \
  --description "Access my account reliably whenever I need to" \
  --actor "customer" \
  --success-criteria "Login succeeds 100% of the time"

Step 2: Document the fix as interaction

bash
et create interaction \
  --id "login_reliability_fix" \
  --description "Reliable login without intermittent failures" \
  --performed-by "customer" \
  --goal "reliable_access"

Example: Technical Debt

Task: "Refactor the order processing module"

Challenge the Work

Ask: Why refactor?

  • Current code is hard to maintain → That's a developer problem, not a user problem
  • Hard to add new payment methods → Users want payment options!
  • Prone to bugs → Users want reliable ordering!

Find the User Goals

bash
et create goal \
  --id "flexible_payment" \
  --description "Pay using my preferred payment method" \
  --actor "customer"

et create goal \
  --id "reliable_ordering" \
  --description "Complete orders without errors or failures" \
  --actor "customer"

Document the Work

bash
et create interaction \
  --id "payment_flexibility" \
  --description "Support for multiple payment methods" \
  --performed-by "customer" \
  --goal "flexible_payment"

et create interaction \
  --id "order_reliability" \
  --description "Robust order processing without failures" \
  --performed-by "customer" \
  --goal "reliable_ordering"

When Work Isn't Justified

Sometimes you can't find a user goal. This is valuable information:

  • Internal tooling? Your users might be developers or ops teams.
  • Pure tech debt? Should probably wait until it blocks user value.
  • "Nice to have"? If no user needs it, maybe skip it.

The discipline of connecting work to user goals prevents building things nobody asked for.

Quick Reference

bash
# Before starting work:
et list actors                      # Who are our users?
et list goals --actor <id>          # What do they want?
et list interactions --goal <id>    # What supports this goal?

# Document the work:
et create goal --id ... --actor ... --description ...
et create interaction --id ... --goal ... --description ...

# Verify:
et validate

Next Steps

Work matters when it helps real people achieve their goals.