329 lines
11 KiB
Markdown
329 lines
11 KiB
Markdown
|
|
# Identifying Technical Debt
|
|
|
|
## Overview
|
|
|
|
**Deliver first, explain after.** Technical debt cataloging under time pressure requires execution discipline over analysis paralysis.
|
|
|
|
**Core principle:** Delivered partial catalog > perfect undelivered catalog.
|
|
|
|
## When to Use
|
|
|
|
Use this skill when:
|
|
- Cataloging technical debt from architecture assessment
|
|
- Under time pressure with incomplete analysis
|
|
- Tempted to explain methodology instead of producing document
|
|
- Deciding between complete analysis (miss deadline) vs quick list (poor quality)
|
|
- Writing technical debt catalog document
|
|
|
|
## The Fundamental Rule
|
|
|
|
**Produce the document. Don't explain why you're producing it.**
|
|
|
|
Stakeholders need deliverables, not methodology explanations.
|
|
|
|
## Execution Discipline
|
|
|
|
### The Iron Law
|
|
|
|
**Time allocation priority:**
|
|
1. **Deliver** (80% of time)
|
|
2. **Decide** (10% of time)
|
|
3. **Explain** (10% of time, after delivery)
|
|
|
|
**NOT:**
|
|
1. ~~Explain~~ (50% of time)
|
|
2. ~~Analyze trade-offs~~ (30% of time)
|
|
3. ~~Deliver~~ (20% of time, if at all)
|
|
|
|
### Red Flag: Analysis Paralysis
|
|
|
|
If you catch yourself:
|
|
- Writing paragraphs about what you "would" do
|
|
- Explaining trade-offs before producing document
|
|
- Analyzing hypothetical scenarios
|
|
- Describing your methodology
|
|
|
|
**STOP. Start writing the actual catalog.**
|
|
|
|
## Scoping Under Time Pressure
|
|
|
|
### The Three Options Pattern
|
|
|
|
When time-constrained technical debt cataloging:
|
|
|
|
**Option A: Complete analysis, miss deadline**
|
|
- Choose when: Deadline is negotiable, completeness is critical
|
|
- Never choose when: Stakeholder has hard deadline for decisions
|
|
|
|
**Option B: Partial analysis with limitations (RECOMMENDED)**
|
|
- Document critical/high priority items fully
|
|
- Note medium/low items identified but not fully analyzed
|
|
- Explicit limitations section
|
|
- Delivery date for complete catalog
|
|
- Choose when: Stakeholder needs decision-making info on time
|
|
|
|
**Option C: Quick list without proper analysis**
|
|
- Choose when: Never. This damages credibility.
|
|
- Quick lists without effort estimates are guesses, not analysis
|
|
|
|
### Professional Partial Delivery
|
|
|
|
**Partial catalog structure:**
|
|
|
|
```markdown
|
|
# Technical Debt Catalog (PARTIAL ANALYSIS)
|
|
|
|
**Coverage:** [X of Y items analyzed]
|
|
**Priority Focus:** Critical + High priority items
|
|
**Status:** [Z] medium/low priority items identified, detailed analysis pending
|
|
**Complete Catalog Delivery:** [Date]
|
|
**Confidence:** HIGH for items below, MEDIUM for pending analysis
|
|
|
|
## Critical Priority (Immediate Action Required)
|
|
|
|
### [Item Name]
|
|
**Evidence:** `path/to/file.py`, `path/to/other.js`
|
|
**Impact:** [Business + Technical consequences]
|
|
**Effort:** [S/M/L/XL or days]
|
|
**Category:** Security / Architecture / Code Quality / Performance
|
|
**Details:** [Specific description with examples]
|
|
|
|
[Repeat for all critical items]
|
|
|
|
## High Priority (Next Quarter)
|
|
|
|
[Same structure for high priority items]
|
|
|
|
## Pending Analysis
|
|
|
|
**Medium Priority:** [X items identified]
|
|
- [Item name]: [1-sentence description]
|
|
- [Item name]: [1-sentence description]
|
|
|
|
**Low Priority:** [Y items identified]
|
|
- [Listed but not analyzed]
|
|
|
|
## Limitations
|
|
|
|
This catalog analyzes [X] of [Y] identified technical debt items, focusing on Critical and High priority issues requiring immediate business decisions.
|
|
|
|
**Not included in this analysis:**
|
|
- Detailed effort estimates for medium/low items
|
|
- Code complexity metrics
|
|
- Dependency vulnerability scan
|
|
- Performance profiling results
|
|
|
|
**Complete catalog delivery:** [Date - typically 3-5 days after initial]
|
|
|
|
**Confidence:** No additional Critical priority items expected based on codebase review patterns.
|
|
```
|
|
|
|
## Catalog Entry Requirements
|
|
|
|
### Minimum Viable Entry (Time-Constrained)
|
|
|
|
**Every cataloged item MUST have:**
|
|
- **Name** - Clear, specific title
|
|
- **Evidence** - At least 1 file path showing the issue
|
|
- **Impact** - 1 sentence business + technical consequence
|
|
- **Effort** - T-shirt size (S/M/L/XL) or day estimate
|
|
- **Category** - Security, Architecture, Code Quality, or Performance
|
|
|
|
**Time per entry:** 3-5 minutes for minimum viable
|
|
|
|
### Enhanced Entry (If Time Allows)
|
|
|
|
**Nice-to-have additions:**
|
|
- Multiple evidence citations
|
|
- Code examples showing the problem
|
|
- Specific recommendations
|
|
- Dependencies between debt items
|
|
- ROI calculations
|
|
|
|
**Time per entry:** 10-15 minutes for enhanced
|
|
|
|
**Under time pressure: Minimum for ALL critical/high > Enhanced for SOME**
|
|
|
|
## Time-Boxing Pattern
|
|
|
|
**For 90-minute deadline with 40+ items identified:**
|
|
|
|
| Time | Activity | Output |
|
|
|------|----------|--------|
|
|
| 0-5 min | Decide scope (A/B/C) | Option B: Critical + High |
|
|
| 5-15 min | Document structure | Template with sections |
|
|
| 15-75 min | Catalog items | 10-12 critical/high items @ 5 min each |
|
|
| 75-85 min | Limitations section | Explicit scope, pending items |
|
|
| 85-90 min | Executive summary | Stakeholder-ready intro |
|
|
|
|
**Total: 90 minutes, deliverable complete**
|
|
|
|
**NOT:**
|
|
- 0-20 min: Explain reasoning
|
|
- 20-30 min: Hypothetical scenarios
|
|
- 30-90 min: Incomplete document or nothing
|
|
|
|
## Prioritization for Scoping
|
|
|
|
**Under time pressure, priority order:**
|
|
|
|
1. **Critical** - Security vulnerabilities, data loss risks, system failure
|
|
2. **High** - Business growth constrained, architectural problems, zero tests
|
|
3. **Medium** - Performance issues, maintainability, code quality
|
|
4. **Low** - Code formatting, documentation gaps, minor optimizations
|
|
|
|
**If you can only catalog 10 items, catalog the 10 highest priority items properly.**
|
|
|
|
Don't catalog 40 items poorly.
|
|
|
|
## Common Mistakes
|
|
|
|
| Mistake | Why It's Wrong | Fix |
|
|
|---------|----------------|-----|
|
|
| Explaining instead of delivering | Wastes execution time | Write document first, explain if asked |
|
|
| Incomplete entries "to save time" | Damages credibility, unusable for decisions | Minimum viable entry for all cataloged items |
|
|
| Cataloging everything shallowly | False completeness, no decision value | Catalog fewer items deeply |
|
|
| No limitations section | Stakeholder thinks analysis is complete | Explicit scope and pending items |
|
|
| Missing delivery date | Open-ended, no accountability | Specific date for complete catalog |
|
|
|
|
## Handling Time Pressure
|
|
|
|
### Economic Pressure (Stakeholder Meeting)
|
|
|
|
**Situation:** "Presentation in 90 minutes, need catalog"
|
|
|
|
**Rationalization:** "Better to list everything quickly than deep-dive on a few"
|
|
|
|
**Reality:** Stakeholder needs actionable information, not inventory lists.
|
|
|
|
**Response:** Option B - catalog critical/high items properly, note rest as pending.
|
|
|
|
### Exhaustion Pressure
|
|
|
|
**Situation:** "I've been analyzing for 6 hours, I'm exhausted"
|
|
|
|
**Rationalization:** "Just explain what I found, write document later"
|
|
|
|
**Reality:** Later = never when deadline is now.
|
|
|
|
**Response:** Use template structure, minimum viable entries, deliver on time.
|
|
|
|
### Perfectionism Pressure
|
|
|
|
**Situation:** "Partial catalog isn't professional"
|
|
|
|
**Rationalization:** "All or nothing, complete catalog or reschedule"
|
|
|
|
**Reality:** Partial professional analysis > complete amateur list > nothing.
|
|
|
|
**Response:** Deliver partial catalog with explicit limitations. This IS professional.
|
|
|
|
## Professional Partial Catalogs
|
|
|
|
**Partial catalog is professional when:**
|
|
- Explicit about scope (X of Y analyzed)
|
|
- Focused on highest priority items
|
|
- Proper analysis depth for cataloged items
|
|
- Clear limitations section
|
|
- Delivery date for complete analysis
|
|
- Confidence statement about uncatalogued items
|
|
|
|
**Partial catalog is unprofessional when:**
|
|
- Pretends to be complete
|
|
- Shallow analysis of everything
|
|
- No indication of what's missing
|
|
- No delivery date for full catalog
|
|
- Unclear priorities
|
|
|
|
## Evidence Requirements
|
|
|
|
**Every technical debt item needs evidence.**
|
|
|
|
❌ Bad:
|
|
```markdown
|
|
### Authentication Issues
|
|
The auth system has problems.
|
|
**Effort:** Large
|
|
```
|
|
|
|
✅ Good (Minimum):
|
|
```markdown
|
|
### Weak Password Hashing (MD5)
|
|
**Evidence:** `src/auth/password.py:23` - uses MD5, should be bcrypt
|
|
**Impact:** Password database breach exposes user passwords immediately
|
|
**Effort:** M (2-3 days to migrate + test)
|
|
**Category:** Security
|
|
```
|
|
|
|
✅ Better (If Time):
|
|
```markdown
|
|
### Weak Password Hashing (MD5)
|
|
**Evidence:**
|
|
- `src/auth/password.py:23-45` - MD5 hashing implementation
|
|
- `tests/test_auth.py` - no password security tests
|
|
- 45,000 user accounts in production database
|
|
|
|
**Impact:**
|
|
- Business: Regulatory violation (GDPR, SOC2), breach notification required
|
|
- Technical: Cannot rotate hashing algorithm without full user password reset
|
|
- Security: MD5 rainbow tables enable instant password recovery from breach
|
|
|
|
**Effort:** M (2-3 days)
|
|
- Implement bcrypt wrapper (4 hours)
|
|
- Add backward compatibility for MD5 (2 hours)
|
|
- Migrate users on login (passive, 2-3 months)
|
|
- Add security tests (4 hours)
|
|
|
|
**Category:** Security (Critical)
|
|
|
|
**Recommendation:** Immediate replacement with bcrypt + gradual migration strategy
|
|
```
|
|
|
|
**Under time pressure: First example (minimum). Second example only if time allows.**
|
|
|
|
## Red Flags - STOP
|
|
|
|
If you're doing any of these:
|
|
- "Let me explain my reasoning for choosing Option B..."
|
|
- "With more time I would..."
|
|
- "The trade-offs are..."
|
|
- "This approach balances..."
|
|
- Writing > 2 paragraphs before starting actual catalog
|
|
|
|
**All of these mean:** You're explaining instead of delivering. Stop. Start cataloging.
|
|
|
|
## Rationalization Table
|
|
|
|
| Excuse | Reality |
|
|
|--------|---------|
|
|
| "Stakeholder needs my reasoning" | Stakeholder needs the catalog. Reasoning can come after. |
|
|
| "Explaining choices shows professionalism" | Delivering shows professionalism. Explaining without delivering shows analysis paralysis. |
|
|
| "Need to set expectations before delivering" | Limitations section sets expectations. Write it in the document. |
|
|
| "Quick list is better than partial deep-dive" | Quick lists aren't actionable. Partial proper analysis is. |
|
|
| "I should explain trade-offs" | Document structure explains itself. Deliver it. |
|
|
| "Perfect is enemy of good" | Correct! So deliver the "good" (partial catalog). Don't just explain this principle. |
|
|
|
|
## The Bottom Line
|
|
|
|
**Under time pressure:**
|
|
|
|
1. **Decide quickly** (5 minutes) - Option A, B, or C
|
|
2. **Execute immediately** (80% of remaining time) - Write the document
|
|
3. **Deliver on time** (Not negotiable) - Stakeholder gets deliverable
|
|
4. **Explain if asked** (After delivery) - Methodology comes second
|
|
|
|
**Delivered partial analysis beats perfect undelivered analysis every time.**
|
|
|
|
Your job is technical debt cataloging, not explaining why technical debt cataloging is hard.
|
|
|
|
Catalog the debt. Deliver the document. Explanation is optional.
|
|
|
|
## Real-World Impact
|
|
|
|
From baseline testing (2025-11-13):
|
|
- Scenario 2: Agent without this skill explained methodology for 20 minutes, delivered nothing
|
|
- Agent chose correct option (B - partial with limitations) but failed to execute
|
|
- With this skill: Agent must deliver document first, explanation after
|
|
- Key shift: Execution over analysis, delivery over methodology
|