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ốt | Milestone 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ĩa | Khoảng |
|---|---|---|
| S | Đơn giản, đã làm trước | 1-2 giờ |
| M | Có chút phức tạp, hướng đi rõ | 2-4 giờ |
| L | Có yếu tố chưa biết, có thể cần research | 4-8 giờ |
| XL | Cần chia nhỏ thêm | Quá 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ống | Nhân với | Vì sao |
|---|---|---|
| Lần đầu làm việc này | 2x | Ẩn số chưa biết |
| Đã làm tương tự | 1.5x | Bất ngờ khi tích hợp |
| Đã làm chính xác cái này | 1.2x | Chuyể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ĩa | Ví dụ |
|---|---|---|
| Must | Không ship nếu thiếu | Chức năng kiểm tra keyword chính |
| Should | Quan trọng nhưng có workaround | Export CSV |
| Could | Có thì tốt | Dark mode |
| Won't | Rõ ràng không làm | User 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ục | Buffer 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% |