| name | cause-and-effect |
| description | Systematic Fishbone analysis exploring problem causes across six categories |
| argument-hint | Optional problem description to analyze |
Cause and Effect Analysis
Apply Fishbone (Ishikawa) diagram analysis to systematically explore all potential causes of a problem across multiple categories.
Description
Systematically examine potential causes across six categories: People, Process, Technology, Environment, Methods, and Materials. Creates structured "fishbone" view identifying contributing factors.
Usage
/cause-and-effect [problem_description]
Variables
- PROBLEM: Issue to analyze (default: prompt for input)
- CATEGORIES: Categories to explore (default: all six)
Steps
- State the problem clearly (the "head" of the fish)
- For each category, brainstorm potential causes:
- People: Skills, training, communication, team dynamics
- Process: Workflows, procedures, standards, reviews
- Technology: Tools, infrastructure, dependencies, configuration
- Environment: Workspace, deployment targets, external factors
- Methods: Approaches, patterns, architectures, practices
- Materials: Data, dependencies, third-party services, resources
- For each potential cause, ask "why" to dig deeper
- Identify which causes are contributing vs. root causes
- Prioritize causes by impact and likelihood
- Propose solutions for highest-priority causes
Examples
Example 1: API Response Latency
Problem: API responses take 3+ seconds (target: <500ms)
PEOPLE
โโ Team unfamiliar with performance optimization
โโ No one owns performance monitoring
โโ Frontend team doesn't understand backend constraints
PROCESS
โโ No performance testing in CI/CD
โโ No SLA defined for response times
โโ Performance regression not caught in code review
TECHNOLOGY
โโ Database queries not optimized
โ โโ Why: No query analysis tools in place
โโ N+1 queries in ORM
โ โโ Why: Eager loading not configured
โโ No caching layer
โ โโ Why: Redis not in tech stack
โโ Synchronous external API calls
โโ Why: No async architecture in place
ENVIRONMENT
โโ Production uses smaller database instance than needed
โโ No CDN for static assets
โโ Single region deployment (high latency for distant users)
METHODS
โโ REST API design requires multiple round trips
โโ No pagination on large datasets
โโ Full object serialization instead of selective fields
MATERIALS
โโ Large JSON payloads (unnecessary data)
โโ Uncompressed responses
โโ Third-party API (payment gateway) is slow
โโ Why: Free tier with rate limiting
ROOT CAUSES:
- No performance requirements defined (Process)
- Missing performance monitoring tooling (Technology)
- Architecture doesn't support caching/async (Methods)
SOLUTIONS (Priority Order):
1. Add database indexes (quick win, high impact)
2. Implement Redis caching layer (medium effort, high impact)
3. Make external API calls async with webhooks (high effort, high impact)
4. Define and monitor performance SLAs (low effort, prevents regression)
Example 2: Flaky Test Suite
Problem: 15% of test runs fail, passing on retry
PEOPLE
โโ Test-writing skills vary across team
โโ New developers copy existing flaky patterns
โโ No one assigned to fix flaky tests
PROCESS
โโ Flaky tests marked as "known issue" and ignored
โโ No policy against merging with flaky tests
โโ Test failures don't block deployments
TECHNOLOGY
โโ Race conditions in async test setup
โโ Tests share global state
โโ Test database not isolated per test
โโ setTimeout used instead of proper waiting
โโ CI environment inconsistent (different CPU/memory)
ENVIRONMENT
โโ CI runner under heavy load
โโ Network timing varies (external API mocks flaky)
โโ Timezone differences between local and CI
METHODS
โโ Integration tests not properly isolated
โโ No retry logic for legitimate timing issues
โโ Tests depend on execution order
MATERIALS
โโ Test data fixtures overlap
โโ Shared test database polluted
โโ Mock data doesn't match production patterns
ROOT CAUSES:
- No test isolation strategy (Methods + Technology)
- Process accepts flaky tests (Process)
- Async timing not handled properly (Technology)
SOLUTIONS:
1. Implement per-test database isolation (high impact)
2. Replace setTimeout with proper async/await patterns (medium impact)
3. Add pre-commit hook blocking flaky test patterns (prevents new issues)
4. Enforce policy: flaky test = block merge (process change)
Example 3: Feature Takes 3 Months Instead of 3 Weeks
Problem: Simple CRUD feature took 12 weeks vs. 3 week estimate
PEOPLE
โโ Developer unfamiliar with codebase
โโ Key architect on vacation during critical phase
โโ Designer changed requirements mid-development
PROCESS
โโ Requirements not finalized before starting
โโ No code review for first 6 weeks (large diff)
โโ Multiple rounds of design revision
โโ QA started late (found issues in week 10)
TECHNOLOGY
โโ Codebase has high coupling (change ripple effects)
โโ No automated tests (manual testing slow)
โโ Legacy code required refactoring first
โโ Development environment setup took 2 weeks
ENVIRONMENT
โโ Staging environment broken for 3 weeks
โโ Production data needed for testing (compliance delay)
โโ Dependencies blocked by another team
METHODS
โโ No incremental delivery (big bang approach)
โโ Over-engineering (added future features "while we're at it")
โโ No design doc (discovered issues during implementation)
MATERIALS
โโ Third-party API changed during development
โโ Production data model different than staging
โโ Missing design assets (waited for designer)
ROOT CAUSES:
- No requirements lock-down before start (Process)
- Architecture prevents incremental changes (Technology)
- Big bang approach vs. iterative (Methods)
- Development environment not automated (Technology)
SOLUTIONS:
1. Require design doc + finalized requirements before starting (Process)
2. Implement feature flags for incremental delivery (Methods)
3. Automate dev environment setup (Technology)
4. Refactor high-coupling areas (Technology, long-term)
Notes
- Fishbone reveals systemic issues across domains
- Multiple causes often combine to create problems
- Don't stop at first cause in each categoryโdig deeper
- Some causes span multiple categories (mark them)
- Root causes usually in Process or Methods (not just Technology)
- Use with
/why command for deeper analysis of specific causes
- Prioritize solutions by: impact ร feasibility รท effort
- Address root causes, not just symptoms