Skip to content

📝 Sprint, Scope Creep, và bài học Focus

Mở đầu — "Em sẽ làm capstone HOÀNH TRÁNG nhất lớp!"

Mai, 24 tuổi, sinh viên năm cuối ngành Hệ thống Thông tin Quản lý tại ĐH Kinh tế TP.HCM. Mai đăng ký khóa Data Analytics vì muốn bổ sung portfolio trước khi apply vị trí Junior DA. Background: Excel thành thạo, SQL ổn, Python mới học được 3 tháng, Power BI vừa xong tutorial. Tính cách: cầu toàn, hay so sánh bản thân với người khác, và có xu hướng ôm đồm quá nhiều thứ cùng lúc.

Buổi 18 — chọn đề bài capstone. Trong khi các bạn chọn dataset đơn giản (e-commerce 5,000 rows, HR turnover 1,470 rows), Mai chọn dataset phức tạp nhất: dữ liệu subscription của một SaaS platform — 85,000 rows, 42 columns, 3 bảng cần JOIN, data từ 2020 đến 2025.

"Của khó mới quý," Mai nghĩ. "Dataset lớn → analysis sâu hơn → điểm cao hơn → CV đẹp hơn."

Thầy Khoa — giảng viên — nhìn data audit của Mai rồi hỏi: "Em plan trả lời bao nhiêu business questions?"

"Dạ 10 questions thầy! Em muốn cover hết: churn prediction, revenue forecasting, customer segmentation, cohort analysis, funnel optimization, pricing analysis, feature usage analysis, NPS correlation, upsell prediction, và seasonal patterns."

Thầy nhíu mày: "10 questions trong 1 sprint? Mai ơi, industry standard là 3-5 questions cho một analysis project. Google Data team cũng chỉ focus 2-3 key questions mỗi sprint."

"Dạ em cố gắng được ạ!"

Thầy lắc đầu nhẹ nhưng để Mai thử.

Phần 1: Ngày 1 — "Everything everywhere all at once"

8:00 AM — Sprint begins

Mai mở Jupyter Notebook, gõ dòng đầu tiên:

python
import pandas as pd
df_users = pd.read_csv('users.csv')       # 85,000 rows
df_events = pd.read_csv('events.csv')     # 1.2 million rows (!)
df_subscriptions = pd.read_csv('subs.csv') # 95,000 rows

"1.2 triệu rows events data?" Mai nuốt nước bọt. Không sao, laptop 16GB RAM, chắc chạy được.

9:00 AM — Data Cleaning

Mai bắt đầu cleaning. df_users có 12% missing ở company_size, 8% missing ở industry. df_events có timestamp cần parse. df_subscriptionsplan_name viết hoa/thường lộn xộn: "Professional", "PROFESSIONAL", "professional", "Prof".

Cleaning 3 bảng mất... 2.5 tiếng. Notebook đã 45 cells mà chưa có 1 chart nào.

11:30 AM — Bắt đầu EDA

Mai vẽ distribution cho TẤT CẢ 42 columns. Mỗi column: histogram + boxplot + value counts. Thêm 30 cells nữa. Notebook bây giờ 75 cells.

"Đợi đã, em vẫn chưa answer business question nào..." Mai nhận ra.

2:00 PM — Bắt đầu answer Q1: Churn Prediction

Mai merge 3 bảng lại:

python
df = df_users.merge(df_subscriptions, on='user_id')
df = df.merge(df_events.groupby('user_id').agg({
    'event_type': 'count',
    'timestamp': ['min', 'max']
}).reset_index(), on='user_id')

Laptop đứng 3 phút. Events data 1.2 triệu rows × 85,000 users = memory overflow. Kernel crash.

"Không..."

3:30 PM — Restart, optimize

Mai restart kernel, sample events data xuống 200,000 rows. Merge lại. Chạy được. Bắt đầu Logistic Regression cho churn prediction...

Nhưng chợt Mai nhớ: "Đợi đã, em còn 9 questions nữa và chưa bắt đầu dashboard."

6:00 PM — Panic

Progress cuối ngày 1:

  • ✅ Data cleaning: 70% (3 bảng, nhiều edge cases)
  • ⚠️ EDA: 40% (vẽ nhiều chart nhưng không focused)
  • ❌ Business questions answered: 0/10
  • ❌ Dashboard: chưa bắt đầu
  • ❌ Executive summary: chưa bắt đầu

Mai nhìn lại notebook: 137 cells. Nhiều cell chạy lỗi, nhiều cell duplicate, không có structure rõ ràng. Mai cảm thấy overwhelmed.

Phần 2: Peer Review — "Bạn ơi, em đang đi lạc"

Feedback Loop cứu mạng

Sáng ngày 2, thầy Khoa tổ chức peer review session. Mỗi người present progress 3 phút, nhận feedback 5 phút.

Mai present: "Em đã clean 3 bảng, 85,000 users, vẽ distribution cho 42 columns, bắt đầu churn prediction model..."

Hùng — bạn cùng nhóm, background kế toán, chọn dataset HR turnover 1,470 rows — hỏi: "Mai ơi, dashboard đâu?"

"Chưa có..."

"Business questions đã answer chưa?"

"Chưa..."

"Vậy em có 137 cells notebook nhưng chưa trả lời được câu hỏi nào? Em analyze ĐỂ LÀM GÌ?"

Im lặng.

Phương — bạn khác, background marketing, dataset e-commerce 5,000 rows — chia sẻ: "Mai, mình cũng từng như vậy. Ngày đầu mình cũng muốn analyze hết. Nhưng sau đó mình nhận ra: analysis phải phục vụ câu hỏi, không phải ngược lại. Mình chỉ focus 5 questions, mỗi question 1 section trong notebook, và dashboard 3 pages. Hôm qua mình xong 3/5 questions rồi."

Thầy Khoa tổng kết: "Mai, em đang bị scope creep — kẻ thù số 1 của mọi project. Em cố gắng làm 10 thứ cùng lúc, kết quả là 0 thứ hoàn chỉnh. Thà 5 questions answer TỐT hơn 10 questions answer dở."

Bài học scope creep

Mai ghi vào sổ:

❌ Scope Creep = làm nhiều hơn scope ban đầu
   → 10 questions thay vì 5
   → Analyze 42 columns thay vì 10 key columns
   → 3 datasets thay vì 1 optimized merge
   → Churn prediction + forecast + segmentation + ... cùng lúc

✅ Focus = chọn ít, làm sâu
   → 5 questions, mỗi question có clear answer
   → 10 key columns, correlation với business outcome
   → 1 cleaned dataset, optimized
   → Churn analysis sâu, RỒI mới mở rộng

Phần 3: Ngày 2 — "Less is more"

Replan: từ 10 xuống 5

Mai ngồi lại, thở sâu, và viết lại plan:

📋 REVISED SPRINT PLAN
━━━━━━━━━━━━━━━━━━━━━━
SCOPE: SaaS Churn Analysis — 5 Questions

Q1: Churn rate trend theo tháng? (Descriptive)
Q2: Segment nào churn cao nhất? (Diagnostic)
Q3: Users churn có pattern gì khác? (Comparative)
Q4: Top factors ảnh hưởng churn? (Diagnostic)
Q5: Recommendations giảm churn? (Prescriptive)

THỜI GIAN:
- Morning: Finish cleaning + Answer Q1-Q3
- Afternoon: Answer Q4-Q5 + Start dashboard
- Evening: Dashboard v1 + Draft summary

Cleanup notebook

Mai tạo notebook MỚI — structure rõ ràng:

python
# ============================================
# CAPSTONE: SaaS Churn Analysis
# Author: Mai Nguyen
# Date: 2026-02-18
# ============================================
#
# Table of Contents:
# 1. Setup & Load Data
# 2. Data Cleaning
# 3. Q1: Churn Rate Trend
# 4. Q2: Churn by Segment
# 5. Q3: Churn User Patterns
# 6. Q4: Key Churn Factors
# 7. Q5: Recommendations
# 8. Summary of Findings

Cũ: 137 cells, messy. Mới: 42 cells, clean, mỗi section rõ ràng.

Focus vào key variables

Thay vì 42 columns, Mai chọn 10:

VariableLý doLiên quan đến churn?
tenure_monthsThời gian sử dụngRất có — short tenure = high churn
plan_typeFree / Basic / Pro / EnterpriseCó — plan rẻ churn nhiều hơn
monthly_revenueRevenue per userCó — low revenue users less engaged
login_frequencyTần suất đăng nhập/tuầnRất có — ít login = ít giá trị
feature_adoption% features đã dùngRất có — dùng ít feature = chưa thấy value
support_ticketsSố lần contact supportCó — nhiều ticket = frustration
contract_typeMonthly / AnnualCó — monthly dễ churn hơn
company_sizeSố nhân viênCó thể — SMB vs Enterprise khác behavior
onboarding_completeĐã hoàn thành onboarding?Có — skip onboarding = không biết dùng
churnedTarget variableTarget

Kết quả bất ngờ

Đến 4 PM, Mai đã answer 4/5 questions. Notebook gọn gàng, mỗi question có:

  1. SQL/Python analysis
  2. 1-2 charts
  3. Finding box (What → So What → Now What)

Finding quan trọng nhất:

"Users không hoàn thành onboarding churn gấp 4.2x so với users hoàn thành. 68% churned users chưa dùng quá 3/12 core features. Vấn đề không phải product kém — mà users CHƯA BIẾT DÙNG."

Mai nhận ra: 1 finding sâu > 10 findings nông. Nếu Mai cố làm 10 questions, sẽ không bao giờ tìm được insight này.

Phần 4: Dashboard & Summary — "Done is better than perfect"

Dashboard 3 pages

Mai mở Power BI, import cleaned data:

Page 1: Churn Overview

  • KPI cards: Total users, Churn rate, MRR, Avg tenure
  • Line chart: Monthly churn rate trend
  • Donut: Churn by plan type

Page 2: Churn Deep Dive

  • Bar chart: Churn rate by segment (plan × contract type)
  • Scatter: Feature adoption vs Churn probability
  • Table: Top 10 churn factors (từ analysis)

Page 3: Recommendations

  • Annotated chart: Onboarding completion vs Churn rate (key finding)
  • Summary table: 5 findings + recommendations

3 pages. Không fancy. Không 10 pages. Nhưng mỗi page trả lời câu hỏi rõ ràng.

Peer review lần 2

Hùng review dashboard Mai: "Page 1 clear rồi. Page 2 scatter plot cần label rõ hơn — em không biết trục X là gì. Page 3 recommendation hay — nhưng thêm estimated impact sẽ powerful hơn."

Mai fix 2 điểm trong 15 phút. Dashboard v1 done.

Executive Summary draft

Mai viết 1 trang:

📝 EXECUTIVE SUMMARY — SaaS Churn Analysis
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

OBJECTIVE: Phân tích nguyên nhân churn trên platform SaaS 85,000
users (2020-2025) để đề xuất giải pháp giảm churn rate

TOP 3 FINDINGS:
1. Churn rate tăng từ 3.2% → 5.8% trong 6 tháng qua
   → Mất ~400 users/tháng × $50 MRR = $20,000/tháng revenue loss
   → Focus retention cho Monthly plan users

2. 68% churned users chưa hoàn thành onboarding
   → Users không thấy value → rời đi
   → Redesign onboarding: guided tour + in-app tips

3. Feature adoption < 25% → churn probability tăng 4.2x
   → Users chỉ dùng 2-3/12 features
   → Feature discovery campaign: email + in-app notifications

TOP RECOMMENDATION:
Invest vào onboarding redesign — expected impact:
giảm churn 20-30% → save $4,000-6,000 MRR/tháng

Phần 5: Reflection — "Nhỏ mà chất, hơn to mà rỗng"

Comparison

Ngày 1 (Before)Ngày 2 (After)
Questions10 planned, 0 answered5 planned, 5 answered
Notebook137 cells, messy42 cells, structured
Dashboard0 pages3 pages, peer-reviewed
Summary01-page draft
FeelingOverwhelmed, panicTired but proud

5 bài học Mai rút ra

1. SCOPE ít hơn bạn nghĩ
   → Planned 10, realistic là 5, excellent ở 3

2. STRUCTURE trước khi CODE
   → Viết outline trước, code sau
   → Table of Contents = roadmap

3. PEER REVIEW sớm
   → Feedback ngày 1 cứu ngày 2
   → Không ai đánh giá bạn khi bạn nhờ giúp

4. FOCUS > BREADTH
   → 1 finding sâu > 10 findings nông
   → Stakeholder nhớ 1 insight powerful, không nhớ 10 charts

5. DONE > PERFECT
   → Dashboard v1 xấu > Dashboard v10 trong đầu
   → Ship first, iterate later

Kết quả cuối cùng

Buổi 20, Mai present capstone. Slide 1: "SaaS Churn Analysis — Tại sao users rời đi và làm sao giữ họ lại." Không phải project hoành tráng nhất lớp. Nhưng clear nhất — 5 questions, 5 answers, 3 dashboard pages, 1-page summary. Thầy Khoa comment: "Mai làm đúng điều mà nhiều DA senior vẫn chưa học được: biết khi nào dừng lại và focus."

Hùng — bạn kế toán, dataset 1,470 rows — được điểm cao nhất lớp. Project đơn giản nhưng mỗi chi tiết polish. Mai hạng 3. Không có gì phải buồn.

Lời nhắn của Mai

"Trước đây mình nghĩ capstone = càng phức tạp càng giỏi. Sai. Capstone = càng clear càng giỏi. Scope creep không phải vì bạn tham lam — mà vì bạn chưa biết cái gì quan trọng nhất. Và cách tìm ra cái quan trọng nhất? Bắt đầu, vấp, nhờ feedback, và focus lại. Mình mất 1 ngày để học bài này. Hy vọng bạn không cần mất 1 ngày."


💡 Takeaway cho bạn

SituationScope Creep Approach ❌Focus Approach ✅
Chọn datasetLớn nhất, nhiều bảng nhấtVừa đủ cho 5 questions
Business questions10 questions "cho chắc"5 questions, mỗi cái sâu
EDAVẽ chart cho mọi columnFocus key variables liên quan đến question
Dashboard10 pages, mỗi page 8 charts3-5 pages, mỗi page 1-2 insight
Timeline"Làm xong rồi tính"Time-box: 2h cleaning, 3h analysis, 2h dashboard
Peer review"Để xong rồi show"Review sớm → fix sớm → kết quả tốt hơn

"The art of being wise is the art of knowing what to overlook." — William James


🔗 Liên kết