LeadershipTechnical ManagerSoftware Economics

Session 03 - Budget Planning & Prioritization

Engineering Budget Components

Technical Manager cần biết lập ngân sách, trình bày nhu cầu đầu tư, và ưu tiên công việc một cách khoa học.

Breakdown ngân sách Engineering

Category% BudgetBao gồmTips
People65-75%Salary, benefits, bonuses, contractorsCost lớn nhất - hire right
Infrastructure10-15%Cloud, servers, CDN, networkingMonitor monthly, optimize quarterly
Tools & Licenses5-10%IDE, SaaS tools, monitoring, CI/CDAudit usage annually
Training2-5%Courses, conferences, certifications, booksInvest vào people = ROI cao
Contingency5-10%Unexpected costs, emergency fixesLuôn giữ buffer

Ví dụ Budget cho team 8 người

Annual Engineering Budget:

People (70%):
  6 developers x $6K/mo x 12     = $432,000
  1 tech lead x $8K/mo x 12      = $96,000
  1 DevOps x $7K/mo x 12         = $84,000
  Subtotal                         = $612,000

Infrastructure (12%):
  Azure monthly: $3,500 x 12      = $42,000
  Domain, SSL, CDN                 = $3,000
  Subtotal                         = $45,000

Tools (8%):
  GitHub Enterprise                = $12,000
  JetBrains licenses               = $4,800
  Monitoring (Datadog/AppInsights) = $9,600
  Subtotal                         = $26,400

Training (3%):
  Pluralsight/Udemy team           = $6,000
  Conference (2 people)            = $8,000
  Subtotal                         = $14,000

Contingency (7%):
  Buffer                           = $52,000

TOTAL                              = $749,400

RICE Scoring Framework

RICE giúp so sánh và ưu tiên features/projects một cách objective thay vì dựa vào gut feeling hoặc HiPPO (Highest Paid Person's Opinion).

Formula

RICE Score = (Reach x Impact x Confidence) / Effort
FactorĐịnh nghĩaThang đo
ReachBao nhiêu users/tháng bị ảnh hưởngSố lượng thực (1000, 5000...)
ImpactMức ảnh hưởng tới mỗi user3=massive, 2=high, 1=medium, 0.5=low, 0.25=minimal
ConfidenceĐộ chắc chắn về estimates100%=high, 80%=medium, 50%=low
EffortPerson-months cần thiết0.5, 1, 2, 3, 6...

Ví dụ RICE

FeatureReachImpactConfidenceEffortRICE ScorePriority
Search optimization5,000280%24,0001
Dark mode3,0001100%13,0002
Real-time collaboration2,000350%65003
Export PDF500280%32674

Ưu tiên: Search > Dark mode > Real-time > Export PDF

RICE Gotchas

✗ Không inflate Reach để push feature mình thích
✗ Không gán Confidence 100% cho everything
✗ Effort phải tính cả testing, deployment, documentation
✗ Review scores với team - tránh bias cá nhân

WSJF (Weighted Shortest Job First)

WSJF từ SAFe framework, ưu tiên theo "cost of delay" - càng delay càng mất giá trị.

Formula

WSJF = Cost of Delay / Job Duration

Cost of Delay = User-Business Value + Time Criticality + Risk Reduction/Opportunity Enablement

Ví dụ WSJF

FeatureBusiness ValueTime CriticalRisk ReductionCoDDurationWSJFPriority
Security patch58922122.01
New payment method8531653.22
UI refresh321632.03
API v27351581.94

Ưu tiên: Security patch (WSJF cao nhất) → nhỏ, urgent, high risk reduction.

Khi nào dùng RICE vs WSJF

AspectRICEWSJF
Best forProduct features, user-facingPlatform work, mixed priorities
Considers time urgencyKhôngCó (Time Criticality)
Considers riskGián tiếp qua ConfidenceTrực tiếp (Risk Reduction)
SimplicityĐơn giản hơnCần training
Typical useProduct teamsSAFe/Agile at scale

MoSCoW Prioritization

MoSCoW đơn giản, dễ communicate với stakeholders. Đặc biệt hữu ích cho sprint/release planning.

PriorityĐịnh nghĩa% EffortRule
Must haveKhông có = release fail~60%Non-negotiable
Should haveQuan trọng nhưng workaround tồn tại~20%Deliver nếu có capacity
Could haveNice to have, improve experience~15%Cut first khi over capacity
Won't haveBiết cần nhưng không làm lần này~5% bufferBacklog cho future

Ví dụ MoSCoW cho Sprint

markdown
## Sprint 15 - E-commerce Checkout

### Must Have (MVP - phải ship)
- [ ] Process payment via VNPay
- [ ] Send order confirmation email
- [ ] Update inventory after purchase

### Should Have (important, not blocking)
- [ ] Save card for future purchases
- [ ] Order tracking page
- [ ] Email receipt with PDF attachment

### Could Have (nice to have)
- [ ] Apple Pay / Google Pay
- [ ] Gift wrapping option
- [ ] Estimated delivery date

### Won't Have (this sprint)
- [ ] Subscription/recurring payments
- [ ] Multi-currency support
- [ ] Loyalty points integration

Quarterly Planning Process

Timeline

Week 1: Input Collection
  - Business goals từ Product/CEO
  - Tech debt backlog từ Engineering
  - Customer feedback từ Support/Sales
  - Security audit findings
  - Infrastructure capacity forecast

Week 2: Planning
  - Draft roadmap priorities (RICE/WSJF)
  - Team capacity planning
  - Budget review
  - Identify cross-team dependencies

Week 3: Alignment
  - Leadership review & approval
  - Stakeholder communication
  - Team kickoff & sprint 0

Ongoing: Execution & Tracking
  - Weekly check-ins
  - Monthly budget review
  - Mid-quarter adjustment (nếu cần)

Capacity Planning

Available capacity per sprint:
  Team size: 8 engineers
  Sprint days: 10
  Gross capacity: 80 person-days

  Deductions:
    Meetings & ceremonies: -10% = -8 days
    On-call rotation: -5% = -4 days
    Holidays/PTO planned: -5% = -4 days
    Bug fixes & support: -15% = -12 days

  Net capacity: 52 person-days

  Allocation:
    Features (new value): 60% = 31 days
    Tech debt & improvements: 25% = 13 days
    Bugs & maintenance: 15% = 8 days

Budget Proposal Template

markdown
## Engineering Budget Proposal - [Quarter/Year]

### Executive Summary
[1-2 câu: tổng budget requested, key investments, expected outcomes]

### Budget Breakdown

| Category | Previous Q | Proposed Q | Change | Justification |
|----------|-----------|-----------|--------|--------------|
| People | $X | $X | +$X | Hire 1 senior dev cho [project] |
| Infrastructure | $X | $X | +$X | Scale for expected 2x traffic |
| Tools | $X | $X | $0 | No change |
| Training | $X | $X | +$X | Team certifications (Azure) |
| Contingency | $X | $X | $0 | Standard 7% buffer |
| **Total** | **$X** | **$X** | **+$X** | |

### Key Investments
1. **[Investment 1]:** $X - Expected ROI: [outcome]
2. **[Investment 2]:** $X - Expected ROI: [outcome]

### Risks if Budget Not Approved
- [Risk 1: delayed delivery of [project]]
- [Risk 2: increased incident rate without infra upgrade]

### Tracking Plan
- Monthly budget review meeting
- Quarterly variance report
- Alert threshold: >10% over budget in any category

Tracking and Reporting Spend

Monthly Report Template

CategoryBudgetActualVariance%Action
Cloud infra$3,500$3,800+$300+9%Review auto-scaling config
Licenses$2,200$2,200$00%On track
Contractors$5,000$3,000-$2,000-40%Delayed start, carry forward
Training$1,200$800-$400-33%Conference postponed
Total$11,900$9,800-$2,100-18%Under budget

Cost Optimization Quick Wins

ActionPotential SavingsEffortTimeline
Reserved Instances (1yr)30-40% computeLowThis week
Right-size VMs10-25%Low1-2 days
Auto-shutdown dev/test50-70% non-prodLow1 day
Storage tier optimization20-60% storageMedium1 sprint
Remove unused resources5-15%Low1 day
Spot VMs for batch jobs60-90% batchMedium1-2 sprints

Making the Case for Technical Investment

Framework: Problem → Impact → Solution → Ask

1. Problem (1 paragraph)
   "Hệ thống hiện tại có X vấn đề gây ra Y impact"

2. Impact (số liệu cụ thể)
   "Mất $Z/tháng vì downtime / slow performance / manual work"
   "Team mất N hours/tuần vì tech debt"

3. Proposed Solution
   "Invest [amount] trong [timeline] để đạt [outcome]"

4. Expected ROI
   "Save [amount]/năm, payback trong [months]"

5. Risk of NOT doing
   "Nếu không làm, [consequence] trong [timeframe]"

6. Ask
   "[X budget] + [Y headcount] + [Z timeline]"

Ví dụ: Propose Database Upgrade

Problem:
  Database response time tăng 300% trong 6 tháng.
  3 incidents/tháng do connection pool exhaustion.

Impact:
  - Downtime cost: $15K/incident x 3 = $45K/tháng
  - Developer time on incidents: 40h/tháng = $4K
  - Customer churn risk: 5% users affected

Proposed Solution:
  Upgrade SQL Server tier + implement read replicas
  + Redis caching layer

Cost:
  - Azure SQL upgrade: +$500/tháng
  - Redis Cache: +$300/tháng
  - Development: 2 devs x 1 month = $16K
  Total Year 1: $25,600

ROI:
  - Save $49K/tháng x 12 = $588K/năm
  - ROI = ($588K - $25.6K) / $25.6K = 2,196%
  - Payback: < 1 tháng

Recommendation: APPROVE - ROI cực cao, risk giảm ngay lập tức

Tips cho Technical Investment Proposal

TipLý do
Luôn tính "cost of doing nothing"Giúp management thấy inaction cũng có giá
Dùng business language"Giảm churn 5%" > "Optimize query"
Provide 3 options (cheap/balanced/premium)Cho management quyền chọn, không phải yes/no
Show comparable benchmarks"Company X tương đương đã invest..."
Start small, show results, scaleDễ approve $10K pilot hơn $200K project
Connect với company OKRsAlign investment với goals đã approved