Cách Mình Lập Kế Hoạch & Ước Lượng

Chia nhỏ công việc, đặt milestone, và quản lý phạm vi dự án

Ước lượng rất khó. AI giúp mình code nhanh hơn, nhưng không phải nhanh vô hạn. Lập timeline thực tế là kỹ năng quan trọng không kém code.

Nguyên tắc cốt lõi: Lập kế hoạch theo kết quả, không theo giờ. "Login hoạt động" tốt hơn "8 giờ làm auth."

Tại sao ước lượng quan trọng

  • Đặt kỳ vọng -- stakeholder biết khi nào có kết quả
  • Lộ ra phạm vi -- chia nhỏ công việc phơi bày độ phức tạp ẩn
  • Giúp ưu tiên -- nhét không hết? Cắt cái ít quan trọng nhất
  • Theo dõi tiến độ -- milestone cho thấy mình có đúng tiến độ không

Quy trình

PRD → Chia thành milestone → Định nghĩa task → Ước lượng → Review → Cam kết

Bước 1: Chia thành milestone

Milestone là những điểm kiểm tra có ý nghĩa. Mỗi milestone nên giao được thứ gì đó dùng được.

Milestone tốtMilestone tệ
"User upload được keywords""Backend xong" (không user-facing, khó verify)
"Clustering chạy và hiển thị kết quả""Hoàn thành 50%" (vô nghĩa)
"Admin xem được tất cả job""Database setup xong" (quá nhỏ)
"Deploy lên production""Tất cả tính năng xong" (quá lớn)

Ví dụ: Keyword Clustering Tool

Tuần 1:
├── M1: User upload CSV và thấy keywords đã parse
├── M2: Clustering chạy được (dù chậm cũng được)
└── M3: Hiển thị kết quả với nhãn cluster

Tuần 2:
├── M4: Progress indicator trong lúc clustering
├── M5: Export kết quả ra CSV
└── M6: Deploy lên Railway

Bước 2: Định nghĩa task

Mỗi milestone chia thành task nhỏ, hoàn thành được trong vài giờ.

Kích thướcÝ nghĩaKhoảng
SĐơn giản, đã làm trước1-2 giờ
MCó chút phức tạp, hướng đi rõ2-4 giờ
LCó yếu tố chưa biết, có thể cần research4-8 giờ
XLCần chia nhỏ thêmQuá lớn

Ví dụ phân tách

M1: User upload CSV và thấy keywords đã parse

- [ ] [UI] Tạo component upload với drag-drop — Size: M
- [ ] [API] Tạo /api/upload endpoint — Size: S
- [ ] [Logic] Parse CSV, trích xuất keywords — Size: S, depends: API
- [ ] [DB] Lưu keywords vào Supabase — Size: S, depends: Logic
- [ ] [UI] Hiển thị keywords trong bảng — Size: M, depends: DB

Bước 3: Ước lượng thực tế

Quy tắc nhân hệ số

Tình huốngNhân vớiVì sao
Lần đầu làm việc này2xẨn số chưa biết
Đã làm tương tự1.5xBất ngờ khi tích hợp
Đã làm chính xác cái này1.2xChuyển đổi context, review

Những thứ ngốn thời gian

Yếu tốBuffer thêm
Setup môi trường+20% tuần đầu
Tích hợp API mới+50%
Authentication+30% lần đầu
AI/ML features+50% khó đoán
Polish và edge case+30% luôn luôn

AI không xoá hết mọi việc

Claude Code tăng tốc coding, nhưng vẫn cần thời gian cho: suy nghĩ approach đúng, review output AI, sửa edge case AI bỏ sót, tích hợp và deployment, giao tiếp và phối hợp.

Quy tắc thực tế: AI giúp nhanh 2-3x, không phải 10x.

Bước 4: Tạo timeline

Ví dụ: AI Overviews Checker

## Tuần 1: Chức năng chính
**Mục tiêu**: Kiểm tra keywords và xem kết quả được

Thứ Hai - Thứ Ba:
- [ ] Setup dự án, Supabase schema
- [ ] Client API DataForSEO
- [ ] Form nhập keyword

Thứ Tư - Thứ Năm:
- [ ] Logic kiểm tra keyword hàng loạt
- [ ] Lưu và hiển thị kết quả
- [ ] Xử lý lỗi cơ bản

Thứ Sáu:
- [ ] Progress indicator
- [ ] Buffer

**Check**: Nhập keywords, thấy kết quả AI Overview

## Tuần 2: Polish & Deploy
**Mục tiêu**: Production-ready

Thứ Hai - Thứ Ba:
- [ ] Export, rate limit handling, error messages

Thứ Tư - Thứ Năm:
- [ ] Loading states, responsive, deploy Railway

Thứ Sáu:
- [ ] Documentation, demo, bàn giao

**Check**: Live trên production, team dùng được

Quản lý phạm vi

Khi bị chậm

Ưu tiên 1: Cắt phạm vi       → Bỏ tính năng "có thì tốt"
Ưu tiên 2: Giảm chất lượng    → Ship thô hơn, polish sau
Ưu tiên 3: Kéo dài thời gian  → Chỉ khi stakeholder đồng ý

MoSCoW

MứcÝ nghĩaVí dụ
MustKhông ship nếu thiếuChức năng kiểm tra keyword chính
ShouldQuan trọng nhưng có workaroundExport CSV
CouldCó thì tốtDark mode
Won'tRõ ràng không làmUser account

Khi ai đó yêu cầu thêm

"Mình có thể thêm [tính năng], nhưng nghĩa là hoặc:
A) Đẩy deadline thêm X ngày, hoặc
B) Bỏ [tính năng khác] khỏi release này

Bạn muốn chọn cái nào?"

Đừng bao giờ gật đầu rồi âm thầm gánh thêm việc.

Những lỗi hay gặp

Ước lượng "điều kiện hoàn hảo" -- "Nếu mình chỉ tập trung, 2 ngày là xong" (chẳng bao giờ xảy ra). Thêm buffer cho họp, chuyển đổi context, bug, learning curve.

Không theo dõi so với ước lượng -- ước lượng lúc đầu, không bao giờ nhìn lại. Kiểm tra tiến độ so với milestone hàng tuần, điều chỉnh sớm.

Coi ước lượng như cam kết -- stress khi sai, giấu delay. Ước lượng chỉ là dự đoán. Báo khi thực tế khác, điều chỉnh kế hoạch.

Đệm hết mọi thứ -- mọi task đều "Large" vì sợ cam kết. Ước lượng thành thật, thêm buffer ở cấp dự án. Minh bạch xây dựng tin tưởng.

Checklist

Ổn nếu:

  • Milestone rõ ràng và giao được
  • Task đủ nhỏ để hoàn thành trong một ngày
  • Biết "hoàn thành" trông như nào
  • Stakeholder hiểu timeline
  • Kiểm tra tiến độ hàng tuần
  • Thay đổi phạm vi được thương lượng rõ ràng

Cần sửa nếu:

  • Luôn "sắp xong rồi"
  • Milestone cứ dời liên tục
  • Task hóa ra lớn gấp 3 lần dự kiến
  • Không ai biết khi nào xong
  • Ngạc nhiên về lượng việc còn lại

Tham khảo nhanh

Danh mụcBuffer thêm
Tích hợp API mới+50%
Lần đầu dùng công nghệ+30%
Auth/permission+30%
ML/AI khó đoán+50%
Deployment+20%
Polish và edge case+30%