Sẽ mở trong thẻ mới
PDL AIAI Worker — trợ lý AI trực 24/7: trả lời khách, xử lý yêu cầu, báo cáo tự động

Kỹ sư phần mềm thời AITờ 03-04 / 112

MVP và ưu tiên tính năng: làm ít mà đúng

Xe đẩy, xe đạp, xe máy đều chở được bánh, khác một bánh xe lẻ, ví cho MVP đúng nghĩa
Tờ
03-04 / 112
Hạng mục
M03 · Từ ý tưởng đến yêu cầu
Cấp độ
Cơ bản
Thời gian đọc
21 phút
Giai đoạn công trình
0 · Khám phá
Cập nhật
Bản đồ công trìnhTờ này lắp: Giao diện app, Màn hình bếp, Thanh toán VietQR
Bản đồ công trình Mộc OMSBài này: Giao diện app, Màn hình bếp, Thanh toán VietQR. Đã học: Coding agent, Khách hàng, Kênh bán, Sheet & sổ tay. Chưa tới: PRD & spec, Repo & CI, Kiểm thử, Hosting & tên miền, Giám sát lỗi, API, Database, Dashboard, báo cáo, Trợ lý AI nhận đơn, Đăng nhập, vai trò, Thông báo khách, Nhiều tiệm (MộcOS), Kế toán, hoá đơn.Thi công & hạ tầngDòng đơn hàngNghiệp vụ & dịch vụMở rộng MộcOSPRD & specspecCoding agentagentRepo & CIrepo-ciKiểm thửtestsHosting & tên miềnhostingGiám sát lỗimonitoringKhách hàngcustomerKênh bánchannelsGiao diện appapp-uiAPIapiDatabasedatabaseDashboard, báo cáoreportsSheet & sổ taysheetTrợ lý AI nhận đơnai-assistantMàn hình bếpkitchenĐăng nhập, vai tròauthThanh toán VietQRpaymentsThông báo kháchnotificationsNhiều tiệm (MộcOS)tenantsKế toán, hoá đơnintegrations0 Khám phá1 MVP2 Ra mắt3 Thêm AI4 Mở rộng
Bản đồ công trình Mộc OMSBài này: Giao diện app, Màn hình bếp, Thanh toán VietQR. Đã học: Coding agent, Khách hàng, Kênh bán, Sheet & sổ tay. Chưa tới: PRD & spec, Repo & CI, Kiểm thử, Hosting & tên miền, Giám sát lỗi, API, Database, Dashboard, báo cáo, Trợ lý AI nhận đơn, Đăng nhập, vai trò, Thông báo khách, Nhiều tiệm (MộcOS), Kế toán, hoá đơn.Dòng đơn hàngKhách hàngKênh bánGiao diệnAPIDatabaseBáo cáoNghiệp vụ & dịch vụSheet, sổ tayTrợ lý AIMàn hình bếpĐăng nhậpThanh toánThông báoThi công & hạ tầngPRD & specCoding agentRepo & CIKiểm thửHostingGiám sátMở rộng MộcOSNhiều tiệmKế toán0 Khám phá1234

Bài nàyĐã họcChưa tớiĐã thay thế

Bạn sẽ học được gì

Tiêu chí nghiệm thu

MVP đúng nghĩa là gì?

MVP (Minimum Viable Product — sản phẩm khả dụng tối thiểu) là khái niệm được phổ biến rộng rãi qua phong trào Lean Startup: phiên bản sản phẩm cho phép bạn học được nhiều nhất về người dùng với ít công sức nhất. Hai chữ quan trọng là Minimum (tối thiểu) và Viable (khả dụng, sống được) — người ta hay nhớ chữ đầu và quên chữ sau.

Một hình ảnh quen thuộc trong giới làm sản phẩm: nếu khách cần đi lại, đừng giao một bánh xe, rồi một khung xe, rồi mới tới ô tô — vì bánh xe không dùng được. Hãy giao một chiếc xe trượt, rồi xe đạp, rồi xe máy. Mỗi phiên bản đều giải được việc “đi lại”, chỉ ở mức khác nhau.

Với phần mềm nội bộ như Mộc OMS, “khả dụng” có một định nghĩa rất thực tế:

MVP của Mộc OMS là phiên bản nhỏ nhất mà Hà, anh Tuấn và nhân viên một chi nhánh sẵn sàng bỏ Google Sheet và nhóm Zalo để dùng thật cho mọi đơn đặt trước trong 2 tuần liên tục.

Định nghĩa này lập tức loại bỏ rất nhiều thứ “hay” (báo cáo doanh thu, nhắc sinh nhật) và lập tức đòi hỏi vài thứ “chán” mà bạn có thể quên (đăng nhập theo vai trò, tìm lại đơn theo số điện thoại, sửa và hủy đơn). Nếu thiếu chức năng sửa đơn, nhân viên sẽ quay lại Sheet ngay khi khách đổi giờ nhận lần đầu tiên.

Kiểu “MVP giả” Biểu hiện Vì sao sai
MVP = bản demo đẹp Giao diện bóng bẩy, dữ liệu giả, không ai dùng thật Không học được gì về hành vi thật
MVP = bản đầy đủ làm ẩu Có mọi tính năng, mỗi cái làm dở Không “khả dụng” ở chỗ nào cả; nợ kỹ thuật lớn
MVP = một mảnh kỹ thuật Xong database, chưa có màn hình nào dùng được Người dùng không chạm vào được
MVP vô thời hạn “Thêm cái này nữa rồi mới ra mắt” Không bao giờ có dữ liệu thật để học

MoSCoW: phân loại bắt buộc và không bắt buộc

MoSCoW chia tính năng thành bốn nhóm:

  • Must have (phải có): thiếu thì MVP không khả dụng — người dùng không thể bỏ cách làm cũ.
  • Should have (nên có): quan trọng, nhưng có cách xoay xở tạm thời nếu chưa có.
  • Could have (có thể có): hay, nhưng thiếu cũng không ai phàn nàn nhiều.
  • Won’t have this time (lần này không làm): đã cân nhắc và chủ động gác lại.

Phép thử cho nhóm Must: “Nếu thiếu tính năng này, Hà có dùng Mộc OMS cho 100% đơn đặt trước trong 2 tuần không?” Nếu câu trả lời vẫn là “có”, đó không phải Must.

MoSCoW cho Mộc OMS

Nhóm Tính năng Lý do (truy về nghiên cứu ở bài 03-02)
Must Tạo, sửa, hủy đơn; mã đơn BM-YYMMDD-XXX Khách đổi giờ, đổi chữ thường xuyên; thiếu sửa/hủy là quay lại Sheet
Must Trường bánh kem tùy chỉnh bắt buộc: chữ trên bánh, size, vị, giờ nhận Nguyên nhân gốc của bánh làm lại
Must Trạng thái đơn moi → da_xac_nhan → dang_lam → dang_giao → hoan_tat / da_huy Bếp và quầy cần biết đơn đang ở đâu
Must Tìm khách theo số điện thoại, tạo khách mới Không tìm được thì nhập trùng khách, sai số điện thoại
Must Ghi nhận tiền cọc/thanh toán thủ công trên đơn Cọc nằm ngoài đơn là điểm nghẽn đối soát
Must Màn hình bếp: bánh cần làm theo ngày, nhóm theo chuyến xe/chi nhánh Thay ảnh chụp Zalo và sổ chép tay
Must Đăng nhập theo vai trò owner / manager / staff Dữ liệu khách và tiền không thể mở cho ai cũng xem
Should Lịch sử mua của khách (“đặt như lần trước”) 5/8 khách quen nhắc tới; có thể tạm tra theo số điện thoại
Should Dashboard đơn hôm nay theo trạng thái, chi nhánh Chị Lan cần, nhưng tạm xem danh sách đơn có lọc
Should Bản in phiếu bánh cho bếp Dự phòng khi máy tính bảng ở bếp hỏng
Could Báo cáo doanh thu theo kênh, sản phẩm Hữu ích nhưng không giải vấn đề gốc
Could Xuất CSV cho kế toán Có thể xuất từ database tạm thời
Won’t (lần này) Website cho khách tự đặt; chatbot AI; thông báo Zalo tự động; VietQR tự xác nhận; tích điểm Xem danh sách non-goals bên dưới
Bàn thử

Kéo thẻ tính năng vào Must / Should / Could / Won’t với phép thử ‘thiếu thì có bỏ cách làm cũ không?’ (cảnh báo khi Must quá nửa) + máy tính RICE (Reach × Impact × Confidence ÷ Effort) tái hiện bảng 10 ứng viên

Bàn thử cần bật JavaScript.

Kết quả chỉ để tham khảo, không thay cho việc bạn tự duyệt.

RICE: xếp hạng bằng con số

MoSCoW cho biết nhóm, nhưng không cho biết thứ tự trong nhóm, và dễ bị chi phối bởi người nói to nhất. RICE là công thức chấm điểm giúp so sánh các ứng viên:

  • Reach (độ phủ): bao nhiêu người/đơn/lượt bị ảnh hưởng trong một khoảng thời gian (ví dụ mỗi tháng).
  • Impact (tác động): mức tác động lên mỗi lượt, thường dùng thang 3 = rất lớn, 2 = lớn, 1 = vừa, 0,5 = nhỏ, 0,25 = rất nhỏ.
  • Confidence (độ tin cậy): bạn tin vào ước tính của mình bao nhiêu phần trăm — 100% khi có dữ liệu, 50% khi chủ yếu là cảm giác.
  • Effort (công sức): tổng công sức, ví dụ “tuần công” (với Bánh Mộc: tuần làm việc của chị Lan cùng coding agent).

Điểm RICE = Reach × Impact × Confidence ÷ Effort.

RICE cho các ứng viên của Bánh Mộc

Ứng viên Reach (đơn/tháng) Impact Confidence Effort (tuần) Điểm RICE
Tạo đơn chuẩn hóa, trường bánh kem bắt buộc 3.300 3 90% 3 2.970
Ghi nhận cọc/thanh toán trên đơn 3.300 2 70% 2 2.310
Tìm khách theo SĐT + lịch sử mua 3.300 1 80% 1,5 1.760
Dashboard đơn hôm nay 3.300 0,5 80% 1 1.320
Màn hình bếp theo chuyến xe 900 3 80% 2 1.080
Báo cáo doanh thu theo kênh 3.300 0,5 50% 2 413
VietQR tự xác nhận chuyển khoản 1.500 1 50% 4 188
Chatbot AI nhận đơn qua Zalo 1.200 2 30% 8 90
Nhắc sinh nhật khách qua Zalo 300 1 50% 3 50
Website cho khách tự đặt 600 1 30% 6 30

Bảng này cho thấy vài điều đáng suy nghĩ:

  • Chatbot AI — ý tưởng ban đầu của chị Lan ở bài 03-01 — đứng gần cuối. Không phải vì nó dở, mà vì độ tin cậy thấp (chưa biết khách có chịu nói chuyện với bot không) và công sức lớn.
  • Màn hình bếp chỉ đứng thứ năm, sau cả dashboard. Lý do: Reach tính theo số đơn bánh kem (900) nhỏ hơn tổng số đơn. Nhưng nghiên cứu cho thấy đây là nơi phát sinh phần lớn lỗi đắt nhất. Đây là lúc bạn nhớ rằng RICE là công cụ hỗ trợ suy nghĩ, không phải cỗ máy ra quyết định. Màn hình bếp vẫn là Must vì nó trực tiếp xử lý nguyên nhân gốc.
  • Confidence thấp là tín hiệu cần thử nghiệm, không phải tín hiệu loại bỏ. Với chatbot, một thử nghiệm rẻ là để Hà dùng mẫu tin nhắn có cấu trúc trong 2 tuần và đếm bao nhiêu khách trả lời đúng mẫu.

Khi nào dùng công cụ nào

Tình huống Công cụ phù hợp
Quyết định cái gì vào MVP, cái gì không MoSCoW với phép thử “thiếu thì có bỏ cách làm cũ không?”
Sắp thứ tự các tính năng Should/Could cho phiên bản sau RICE
Có tranh cãi giữa các bên RICE (buộc mọi người nói rõ giả định)
Chia công việc thành các lần phát hành dùng được User story map
Ngăn phạm vi phình ra Danh sách non-goals

Bản đồ user story và lát phát hành

Danh sách tính năng phẳng có một nhược điểm: nó không cho thấy hành trình của người dùng. Bạn có thể làm rất tốt 5 tính năng ở khâu nhận đơn mà quên mất khâu đối soát — và sản phẩm không dùng được trọn vẹn.

User story map (bản đồ user story) sắp xếp công việc theo hai chiều:

  • Chiều ngang — xương sống (backbone): các hoạt động lớn theo thứ tự hành trình: Nhận đơn → Xác nhận & cọc → Làm bánh → Giao/nhận → Đối soát → Chăm sóc lại khách.
  • Chiều dọc — độ sâu: dưới mỗi hoạt động là các user story cụ thể, xếp từ cần thiết nhất (trên) đến “có thì tốt” (dưới).

Sau đó bạn kẻ các đường ngang để cắt lát phát hành (release slice): mỗi lát phải đi xuyên qua toàn bộ xương sống, dù ở mức đơn giản. Đó chính là tinh thần “xe trượt → xe đạp → xe máy”.

Lát Nhận đơn Xác nhận & cọc Làm bánh Giao/nhận Đối soát Chăm sóc lại
Lát 1 — MVP lõi (chạy thử Phú Nhuận + bếp) Tạo/sửa/hủy đơn; tìm khách theo SĐT Ghi cọc tay; chuyển da_xac_nhan Màn hình bếp theo ngày, chuyến xe Tra đơn theo mã/SĐT; ghi thanh toán khi nhận Tổng thanh toán theo phương thức trong ngày (chưa có — tra đơn cũ theo SĐT)
Lát 2 — MVP đầy đủ (mở cho 3 tiệm) “Đặt lại như lần trước” Hiển thị rõ số tiền còn phải thu In phiếu bánh dự phòng Ghi chú giao hàng riêng cho người giao Dashboard đơn hôm nay theo chi nhánh Xem lịch sử mua của khách
Lát 3 — giai đoạn 2–3 Website cho khách; trợ lý AI trích xuất đơn từ tin nhắn Mã VietQR, tự xác nhận chuyển khoản Ước tính tải bếp ngày lễ Thông báo Zalo khi bánh sẵn sàng Báo cáo doanh thu, xuất kế toán Nhắc sinh nhật tự động
Hình chữ ký Băng chuyền công đoạn
  1. Nhận đơn
  2. Xác nhận & cọc
  3. Làm bánh
  4. Giao/nhận
  5. Đối soát
  6. Chăm sóc lại
  7. Lát 1 — MVP lõi: thay Sheet + nhóm Zalo
Xem sơ đồ gốc (Hình 1)

Vuốt ngang để xem hết sơ đồ

Lát 3 — tự động hóa (giai đoạn 2–3)

Website, trợ lý AI

VietQR, tự xác nhận

Dự báo tải bếp

Thông báo Zalo

Báo cáo, kế toán

Lát 2 — MVP đầy đủ cho 3 tiệm

Đặt lại như lần trước

Số tiền còn phải thu

In phiếu bánh

Ghi chú giao hàng

Dashboard chi nhánh

Lát 1 — MVP lõi: thay Sheet + nhóm Zalo

Tạo/sửa/hủy đơn

Ghi cọc tay

Màn hình bếp

Tra đơn khi nhận

Tổng thanh toán ngày

Vuốt ngang để xem hết sơ đồ

Lát 3 — tự động hóa (giai đoạn 2–3)

Website, trợ lý AI

VietQR, tự xác nhận

Dự báo tải bếp

Thông báo Zalo

Báo cáo, kế toán

Lát 2 — MVP đầy đủ cho 3 tiệm

Đặt lại như lần trước

Số tiền còn phải thu

In phiếu bánh

Ghi chú giao hàng

Dashboard chi nhánh

Lát 1 — MVP lõi: thay Sheet + nhóm Zalo

Tạo/sửa/hủy đơn

Ghi cọc tay

Màn hình bếp

Tra đơn khi nhận

Tổng thanh toán ngày

Hình 1 Sơ đồ luồng
Đọc sơ đồ dạng chữ
  1. Lát 1 — MVP lõi: thay Sheet + nhóm Zalo
  2. Tạo/sửa/hủy đơn → Ghi cọc tay
  3. Ghi cọc tay → Màn hình bếp
  4. Màn hình bếp → Tra đơn khi nhận
  5. Tra đơn khi nhận → Tổng thanh toán ngày
  6. Lát 2 — MVP đầy đủ cho 3 tiệm
  7. Đặt lại như lần trước → Số tiền còn phải thu
  8. Số tiền còn phải thu → In phiếu bánh
  9. In phiếu bánh → Ghi chú giao hàng
  10. Ghi chú giao hàng → Dashboard chi nhánh
  11. Lát 3 — tự động hóa (giai đoạn 2–3)
  12. Website, trợ lý AI → VietQR, tự xác nhận
  13. VietQR, tự xác nhận → Dự báo tải bếp
  14. Dự báo tải bếp → Thông báo Zalo
  15. Thông báo Zalo → Báo cáo, kế toán
  16. L1 → L2
  17. L2 → L3

Để ý lát 1 có một ô “chưa có”: chăm sóc lại khách. Điều đó chấp nhận được, vì MVP được định nghĩa là “nhân viên bỏ Sheet để dùng thật”; việc chăm sóc lại khách hiện vẫn đang làm thủ công và không chặn việc dùng hệ thống mới. Lát 1 và lát 2 cộng lại chính là “MVP Mộc OMS” của giai đoạn 1 trong lộ trình: lát 1 để chạy thử và học, lát 2 bổ sung những mục Should đã được nghiên cứu chứng minh trước khi mở cho cả ba tiệm.

Danh sách “không làm” (non-goals)

Non-goals là danh sách những thứ bạn chủ động quyết định không làm trong phiên bản này, kèm lý do. Nó khác với “chưa nghĩ tới”: mỗi dòng trong non-goals là một cuộc tranh luận đã kết thúc.

Vì sao non-goals quan trọng — đặc biệt khi làm việc với AI:

  • Với con người: khi Hà đề xuất “thêm tích điểm đi chị”, chị Lan chỉ cần chỉ vào danh sách và ngày xem lại, thay vì tranh luận lại từ đầu.
  • Với coding agent: agent rất hay “tiện tay” làm thêm — thêm gửi email xác nhận, thêm trang quản trị, thêm đa ngôn ngữ. Một mục “Ngoài phạm vi” rõ ràng trong PRD và spec là hàng rào hiệu quả nhất. Bạn sẽ thấy mục này xuất hiện trong mẫu spec ở bài 03-0603-06.

Non-goals của Mộc OMS (MVP)

Không làm Lý do Xem lại khi
Website cho khách tự đặt hàng Vấn đề gốc nằm ở phía tiệm, không phải phía khách đặt Sau khi lát 1 chạy ổn 1 tháng ở cả 3 tiệm
Chatbot/trợ lý AI nhận đơn Độ tin cậy thấp, cần dữ liệu đơn chuẩn trước Giai đoạn 3, khi đã có vài nghìn đơn chuẩn hóa
Thay máy tính tiền tại quầy, xuất hóa đơn điện tử Đã quyết định mua, không xây (bài 03-03) Khi tích hợp kế toán ở giai đoạn 4
Tự động xác nhận chuyển khoản qua webhook Cần tích hợp ngân hàng/cổng trung gian, rủi ro cao Giai đoạn 2
Gửi thông báo Zalo/SMS/email tự động cho khách Cần mẫu được duyệt và quy trình đồng ý nhận tin Giai đoạn 2
Quản lý kho nguyên liệu, công thức, giá vốn Vấn đề khác, chưa có bằng chứng ưu tiên Khi có problem statement riêng
Tích điểm, mã giảm giá, khuyến mãi Không giải vấn đề gốc Sau khi có dữ liệu khách quen 3 tháng
Ứng dụng di động cài từ kho ứng dụng Web responsive đủ dùng trên máy tính bảng và điện thoại Khi có nhu cầu dùng ngoại tuyến rõ ràng
Tự tính phí giao hàng theo khoảng cách Nhập tay đủ cho quy mô hiện tại Khi đơn giao hàng chiếm đa số
Nhiều doanh nghiệp dùng chung (multi-tenant) Chưa có khách hàng bên ngoài Giai đoạn 4

Cạm bẫy “AI làm nhanh nên làm luôn”

Đây là cạm bẫy đặc trưng của thời AI. Khi agent có thể thêm tính năng báo cáo doanh thu trong 20 phút, câu hỏi “có nên làm không?” dường như trở nên thừa. Nó không thừa, vì chi phí của một tính năng chủ yếu không nằm ở lúc viết code:

  • Kiểm chứng: mỗi tính năng cần test, cần bạn đọc và hiểu, cần thử với dữ liệu thật. Báo cáo doanh thu sai còn nguy hiểm hơn không có báo cáo.
  • Ngữ cảnh: mỗi tính năng làm codebase lớn hơn, agent phải đọc nhiều hơn mỗi phiên, dễ nhầm lẫn hơn (xem bài context engineering02-05).
  • Bề mặt rủi ro: mỗi màn hình mới là một chỗ có thể lộ dữ liệu khách nếu phân quyền sai.
  • Con người: nhân viên phải học thêm, tài liệu hướng dẫn phải cập nhật; giao diện nhiều nút hơn thì nút quan trọng khó tìm hơn.
  • Bảo trì vô thời hạn: mỗi tính năng là một “thú cưng” phải cho ăn mãi — khi đổi database, nâng cấp thư viện, nó phải được sửa theo.

Cách phòng thủ cụ thể:

  1. Ghi vào file hướng dẫn cho agent (AGENTS.md — xem bài AGENTS.md, rules và skills02-06) một dòng: “Chỉ làm đúng phạm vi trong spec. Nếu thấy cần thêm tính năng, ghi đề xuất vào mục ‘Câu hỏi mở’ của spec, không tự làm.”
  2. Mọi ý tưởng mới đi vào backlog (xem bài quản lý dự án cho team nhỏ07-06) và được chấm RICE như mọi ứng viên khác.
  3. Hỏi câu hỏi kiểm tra: “Tính năng này giúp đạt tiêu chí thành công nào của MVP?” Không trả lời được thì chờ.

Áp dụng vào dự án Bánh Mộc

Nhật ký công trình · Bánh Mộc

BM-261012-026

12.10.2026

  • Chị LanChủ chuỗi
  • Anh TuấnBếp trung tâm
  • HàBán hàng online
Hà cười bên bảng giấy nhớ, chị Lan kéo một tính năng xuống nhóm thấp hơn khi xếp MoSCoW

Chị Lan bắt đầu với một danh sách 34 ý tưởng gom từ chính chị, từ nghiên cứu ở bài 03-02 và từ những gì chị thấy trong các phần mềm đã dùng thử ở bài 03-03.

  1. Bước 1 — MoSCoW với nhân viên

    Chị ngồi cùng Hà, anh Tuấn và quản lý chi nhánh Phú Nhuận một buổi chiều, đọc từng ý và hỏi đúng một câu: “Thiếu cái này, mọi người có bỏ Sheet và nhóm Zalo để dùng hệ thống mới không?” Ban đầu nhóm Must có 15 mục. Sau vòng hỏi thứ hai còn 7. Một tranh luận đáng nhớ: Hà muốn “nhắc sinh nhật khách” là Must; khi được hỏi “thiếu nó em có quay lại Sheet không?”, Hà cười: “Không chị, cái đó em đang không làm luôn.”

  2. Bước 2 — RICE cho phần còn lại

    Chị chấm RICE cho các mục Should/Could để sắp lát 2 và lát 3. Bảng RICE cũng giúp chị nhìn ra ý tưởng chatbot nên chờ.

  3. Bước 3 — story map

    Chị vẽ bản đồ trên một bảng trắng bằng giấy note, chụp lại, rồi nhờ AI chuyển thành bảng Markdown. Khi kẻ đường cho lát 1, chị phát hiện quên khâu “khách đến nhận bánh, chi nhánh tra đơn và thu phần còn lại” — không có khâu này, thu ngân lại phải nhắn hỏi Hà. Chị bổ sung vào lát 1.

  4. Bước 4 — non-goals và kế hoạch thử

    Chị viết danh sách non-goals, dán vào docs/PRD.md. Lát 1 sẽ chạy thử ở bếp trung tâm + chi nhánh Phú Nhuận trước 2 tuần, sau đó mới mở cho Thảo Điền và Gò Vấp (kỹ thuật bật tính năng cho một nhóm người dùng được bàn ở bài preview, staging và feature flag10-06).

Một tuần sau khi bắt đầu xây, agent đề xuất: “Tôi có thể thêm nhanh chức năng gửi email xác nhận đơn cho khách.” Chị Lan mở danh sách non-goals, thấy dòng “Gửi thông báo tự động cho khách — xem lại ở giai đoạn 2”, và trả lời: “Không, ghi vào mục câu hỏi mở.” Đó là lúc chị hiểu giá trị của một tờ giấy liệt kê những điều sẽ không làm.

Prompt mẫu

Prompt 1 — Phản biện nhóm Must

Giao việc cho agent

Đây là danh sách tính năng tôi xếp vào nhóm Must cho MVP, kèm định nghĩa MVP:
Định nghĩa: """[dán định nghĩa MVP, ví dụ: phiên bản nhỏ nhất mà nhân viên 1 chi nhánh bỏ Sheet để dùng thật 2 tuần]"""
Must: """[dán danh sách]"""
Với từng mục, áp phép thử: "Nếu thiếu mục này, người dùng có còn bỏ cách làm cũ không?"
Trả lời dạng bảng: mục | giữ Must hay hạ xuống Should | lý do một câu | cách xoay xở tạm thời nếu hạ.
Sau đó chỉ ra những khâu trong hành trình người dùng mà danh sách đang bỏ sót.

Prompt 2 — Chấm RICE có giả định rõ ràng

Giao việc cho agent

Giúp tôi chấm RICE cho các ứng viên sau. Bối cảnh: ~3.300 đơn/tháng, ~900 đơn bánh kem đặt trước/tháng,
Effort tính bằng tuần công của một người không chuyên làm cùng coding agent.
Ứng viên: """[dán danh sách]"""
Với mỗi ứng viên: ghi Reach, Impact (3/2/1/0,5/0,25), Confidence (%), Effort, điểm RICE,
và MỘT dòng giả định quan trọng nhất cần kiểm chứng. Đánh dấu ứng viên nào có Confidence ≤ 50%
và gợi ý một thử nghiệm rẻ để tăng độ tin cậy. Không tự thêm ứng viên mới.

Prompt 3 — Viết non-goals

Giao việc cho agent

Dựa trên MoSCoW dưới đây, viết mục "Ngoài phạm vi (non-goals)" cho PRD.
"""[dán bảng MoSCoW]"""
Mỗi dòng gồm: điều không làm | lý do | khi nào xem lại.
Thêm 3–5 non-goals mà một coding agent hay "tiện tay" làm thêm với loại ứng dụng quản lý đơn hàng
(ví dụ gửi email, đa ngôn ngữ, trang quản trị phức tạp), để tôi chủ động loại trừ.

Sai lầm thường gặp

  1. Sự cố 01

    MVP thành bản demo.

    Triệu chứng

    Đẹp nhưng không ai dùng thật. *

    Cách tránh

    * định nghĩa MVP bằng hành vi thật (“nhân viên bỏ Sheet 2 tuần”), không bằng danh sách tính năng.

  2. Sự cố 02

    Nhóm Must phình ra.

    Triệu chứng

    *

    Cách tránh

    * phép thử “thiếu thì có bỏ cách làm cũ không?”, làm cùng người dùng thật; nếu Must chiếm quá nửa công sức, cắt tiếp.

  3. Sự cố 03

    Tin RICE tuyệt đối.

    Triệu chứng

    Để con số quyết định thay cho hiểu biết về nguyên nhân gốc. *

    Cách tránh

    * dùng RICE để sắp thứ tự trong cùng nhóm và để lộ giả định, không để ghi đè kết luận từ nghiên cứu.

  4. Sự cố 04

    Lát phát hành theo tầng kỹ thuật.

    Triệu chứng

    “Lát 1 làm database, lát 2 làm giao diện.” *

    Cách tránh

    * mỗi lát phải đi xuyên toàn bộ hành trình người dùng; kỹ thuật chia nhỏ theo lát dọc được bàn ở bài chia nhỏ công việc06-05.

  5. Sự cố 05

    Không viết non-goals.

    Triệu chứng

    Phạm vi phình dần qua từng câu “tiện thể”. *

    Cách tránh

    * non-goals là mục bắt buộc của PRD và mọi spec.

  6. Sự cố 06

    “AI làm nhanh nên làm luôn”.

    Triệu chứng

    *

    Cách tránh

    * mọi tính năng mới đi qua backlog và RICE; dặn agent trong AGENTS.md không tự mở rộng phạm vi.

Checklist

Phiếu nghiệm thu

Bài tập thực hành

  1. Bài 1

    Cơ bản

    Định nghĩa MVP

    Viết định nghĩa MVP cho sản phẩm của bạn theo mẫu “phiên bản nhỏ nhất mà [ai] sẵn sàng [bỏ cách làm cũ gì] để [dùng thật trong bao lâu]”, kèm một câu hỏi MVP cần trả lời.

    Kết quả mong đợi

    định nghĩa không nhắc tên tính năng, câu hỏi có thể trả lời bằng số đo.

  2. Bài 2

    Cơ bản

    MoSCoW với người dùng

    Lấy 15–30 ý tưởng tính năng, ngồi cùng ít nhất một người dùng trực tiếp xếp MoSCoW.

    Kết quả mong đợi

    nhóm Must không quá 7–8 mục; mỗi mục hạ hạng có ghi cách xoay xở tạm.

  3. Bài 3

    Nâng cao

    RICE, story map và non-goals

    Chấm RICE cho các mục Should/Could, vẽ story map có 3 lát, viết non-goals tối thiểu 6 dòng. Dùng Prompt 1 để phản biện.

    Kết quả mong đợi

    lát 1 đi xuyên toàn bộ xương sống; ít nhất một ứng viên có Confidence thấp được gắn với một thử nghiệm rẻ; non-goals có cả những thứ agent hay “tiện tay” làm.

Thuật ngữ trong bài

MVP (Minimum Viable Product)
Phiên bản nhỏ nhất vẫn dùng được thật và giúp kiểm chứng giá trị.
MoSCoW
Phân loại Must / Should / Could / Won’t (this time).
RICE
Điểm ưu tiên = Reach × Impact × Confidence ÷ Effort.
User story map
Bản đồ sắp story theo hành trình (ngang) và độ ưu tiên (dọc).
Xương sống (backbone)
Chuỗi hoạt động lớn của người dùng từ đầu đến cuối hành trình.
Lát phát hành (release slice)
Một lần phát hành đi xuyên toàn bộ hành trình ở mức đơn giản.
Non-goals
Danh sách những gì chủ động không làm trong phiên bản này, có lý do.
Backlog
Danh sách công việc/ý tưởng chờ được ưu tiên.
Scope creep
Phạm vi phình dần ngoài kế hoạch qua những bổ sung nhỏ.

Đọc thêm

Nghiệm thu tờ 03-04

Đọc xong và tự kiểm theo phiếu nghiệm thu, rồi đánh dấu tờ này.

Tác giả
Phú Digital
Đội ngũ PDL Digital — triển khai website, giải pháp AI và digital marketing cho doanh nghiệp.
Tư vấn 1:1

Muốn dựng phần mềm riêng cho doanh nghiệp của bạn?

Kỹ sư PDL cùng bạn chọn bước đầu tiên phù hợp — phản hồi trong giờ làm việc (T2–T7, 8h–18h).

<script src="https://cdn.jsdelivr.net/npm/page-flip/dist/js/page-flip.browser.js"></script>

<div id="container-flipbook" style="display:flex; justify-content:center;">
    <div id="my-flipbook">
       <div class="page"> <img src="https://pdl.vn/wp-content/uploads/2025/05/AI-Google-Search.jpg" /> </div>
       <div class="page"> <img src="https://pdl.vn/wp-content/uploads/2025/05/wearable-tech-advertising.jpg" /> </div>
       <div class="page"> <img src="https://pdl.vn/wp-content/uploads/2025/05/multimodal-embeddings-digital-marketing.jpg" /> </div>
    </div>
</div>
#my-flipbook {
    box-shadow: 0 0 20px rgba(0,0,0,0.2);
    margin: 20px auto;
    background-color: #f0f0f0;
}

.page {
    background-color: white;
    overflow: hidden;
}

.page img {
    width: 100%;
    height: 100%;
    object-fit: cover; /* Giúp ảnh vừa vặn trang sách */
}
// Đảm bảo thư viện đã sẵn sàng
function initFlipbook() {
    const el = document.getElementById("my-flipbook");
    if (!el || !window.St) return; // Nếu chưa thấy thư viện St thì thoát

    const pageFlip = new St.PageFlip(el, {
        width: 550,
        height: 733,
        size: "stretch",
        minWidth: 315,
        maxWidth: 1000,
        minHeight: 420,
        maxHeight: 1350,
        showCover: true,
        maxShadowOpacity: 0.5,
    });

    pageFlip.loadFromHTML(document.querySelectorAll(".page"));
}

// Chạy khởi tạo
if (document.readyState === 'complete') {
    initFlipbook();
} else {
    window.addEventListener('load', initFlipbook);
}
PDL · Tư vấn 1:1

Nhận tư vấn
miễn phí

Để lại thông tin, chuyên viên PDL sẽ liên hệ để hiểu nhu cầu và đề xuất giải pháp phù hợp ngân sách của bạn.

  • Phân tích nhanh hiện trạng website, quảng cáo, kênh bán hàng
  • Đề xuất lộ trình & báo giá minh bạch, rõ từng hạng mục
  • Không ràng buộc: nghe tư vấn xong mới quyết định
Giờ làm việc T2–T7 · 08:00–18:00

Chỉ mất khoảng 30 giây

Bạn cần tư vấn về

🔒 Thông tin được bảo mật, chỉ dùng để PDL liên hệ tư vấn.