Checklist từ ticket đến rollout

Engineering Studio

Hai checklist đầu chặn cửa mỗi lần ra bản: một cái rà trước khi code rời branch, một cái lên kế hoạch trước khi thay đổi đến tay người dùng. Các checklist còn lại lo phần việc trước đó: đọc ticket, lên kế hoạch cho module và hỏi những câu làm lộ ra rủi ro còn ẩn.

Kiểm tra trước khi release

Danh sách giúp quyết định một thay đổi đã đủ an toàn để rời branch hay chưa. Dùng trước khi merge, gắn tag hoặc chuẩn bị đưa lên production.

Cổng chất lượng

Xác nhận thay đổi đúng, có test và đủ rõ để rà soát.

  1. Xác nhận phạm vi PR khớp với ticket và không giấu việc dọn dẹp ngoài yêu cầu.
  2. Chạy typecheck, test, lint và lệnh build phù hợp.
  3. Kiểm tra thủ công route hoặc workflow quan trọng.
  4. Đính kèm ảnh chụp cho thay đổi UI hoặc nói rõ vì sao không cần.

Risk gate

Bảo đảm release có observability và rollback rõ ràng.

  1. Xác nhận migration và thay đổi dữ liệu vẫn tương thích ngược.
  2. Dùng feature flag hoặc rollout theo giai đoạn khi phạm vi ảnh hưởng lớn.
  3. Xác nhận event PostHog vẫn được gửi và event mới có tên nhất quán.
  4. Viết rõ các bước rollback và người có quyền quyết định.

Bàn giao

Để lại đủ ngữ cảnh cho người review và người vận hành.

  1. Phần tóm tắt PR nêu hành vi thay đổi và route bị ảnh hưởng.
  2. Danh sách kiểm chứng ghi rõ lệnh cần chạy và bước kiểm tra thủ công.
  3. Nêu rõ tác động tới SEO, locale, analytics, nội dung và deployment.
  4. Chốt rõ thời gian theo dõi và tín hiệu thành công.

Kế hoạch rollout

Danh sách đưa code đã merge lên production theo từng bước, có điểm dừng và cách quay lại rõ ràng. Dùng cho release theo giai đoạn, feature flag, nhóm người dùng, migration hoặc thay đổi UI có tác động lớn.

Trước rollout

Chuẩn bị môi trường, nhóm người dùng và phương án dự phòng.

  1. Xác định nhóm rollout: nội bộ, beta, theo tỷ lệ, tenant hoặc khu vực.
  2. Xác nhận giá trị mặc định của flag/config và người phụ trách kill switch.
  3. Ghi số liệu gốc về chuyển đổi, tỷ lệ lỗi và phản hồi hỗ trợ.
  4. Chuẩn bị release note, ghi chú cho hỗ trợ và đường báo động tới người phụ trách.

Trong rollout

Đi theo từng bước nhỏ và theo dõi những tín hiệu xuất hiện sớm.

  1. Rollout theo từng giai đoạn.
    1. Người dùng nội bộ hoặc nhóm dogfood.
    2. Một nhóm beta nhỏ.
    3. Mở 10%, 25%, 50%, rồi 100% nếu các tín hiệu vẫn khỏe.
    4. Chỉ mở cho tenant cụ thể khi đội hỗ trợ đã sẵn sàng.
  2. Theo dõi lỗi, độ trễ, chuyển đổi, event PostHog và ticket hỗ trợ.
  3. Tạm dừng rollout khi chạm điều kiện rollback.
  4. Ghi mỗi lần đổi giai đoạn cùng thời điểm, người phụ trách và lý do.

Sau rollout

Khép lại đầy đủ thay vì dừng ngay sau khi đưa code lên.

  1. So sánh số liệu sau rollout với mốc ban đầu.
  2. Gỡ flag cũ, code tạm và những cách xử lý tạm mà đội hỗ trợ đang dùng.
  3. Ghi lại điều khiến cả đội bất ngờ.
  4. Tạo ticket theo dõi cho technical debt, tài liệu và phần analytics còn thiếu.

Từ ticket đến commit đầu tiên

Danh sách giúp biến một ticket thành phạm vi rõ ràng, kế hoạch vừa đủ và bước sửa đầu tiên có thể kiểm chứng. Dùng trước khi bắt tay vào một việc đến từ sản phẩm, hỗ trợ, thiết kế hoặc đồng đội kỹ thuật.

Hiểu yêu cầu

Xác nhận đây là vấn đề cần giải quyết, không chỉ là yêu cầu đổi giao diện hoặc sửa code.

  1. Đọc ticket rồi diễn đạt lại mục tiêu bằng một câu.
  2. Xác định người dùng, route, quy trình hoặc ranh giới hệ thống bị ảnh hưởng.
  3. Tách rõ tiêu chí nghiệm thu và đánh dấu phần còn thiếu.
  4. Kiểm tra tác động tới sản phẩm, SEO, analytics, locale, accessibility và quyền riêng tư.

Chuẩn bị trước khi làm

Làm rõ phần chưa biết trước khi đọc thêm nhiều file.

  1. Tìm pattern, test, helper và ranh giới trách nhiệm gần nhất trong codebase.
  2. Tách phần bắt buộc khỏi việc dọn dẹp chỉ nên làm thêm.
  3. Chọn lệnh, ảnh chụp hoặc bước kiểm tra thủ công để chứng minh thay đổi đã đúng.
  4. Ghi lại giả định rủi ro nhất trước khi triển khai.

Bắt đầu thực hiện

Giữ thay đổi đầu tiên nhỏ, rõ và dễ review.

  1. Bắt đầu bằng thay đổi nhỏ nhất có thể rà soát.
  2. Thêm hoặc sửa test tại đúng ranh giới có hành vi thay đổi.
  3. Cập nhật PostHog khi thêm điều hướng, CTA, bộ lọc, form, tùy chọn hoặc route mới.
  4. Dừng lại cập nhật tình hình nếu phạm vi hoặc mức rủi ro thay đổi.

Danh sách kiểm tra khi giao phần mềm

Tám giai đoạn từ lúc nhận việc đến khi theo dõi và rút kinh nghiệm sau rollout. Dùng khi thay đổi có thể ảnh hưởng kiến trúc, dữ liệu, lưu lượng, người dùng, vận hành production hoặc việc bàn giao.

Giai đoạn 1: Tiếp nhận

Hiểu đúng vấn đề trước khi chọn giải pháp kỹ thuật.

  1. Nêu vấn đề kinh doanh hoặc vấn đề của người dùng cùng chỉ số thành công.
  2. Làm rõ phạm vi, phần không làm, thời hạn, mức ưu tiên và nhóm người dùng bị ảnh hưởng.
  3. Kiểm tra dependency, bảo mật, quyền riêng tư, pháp lý, migration dữ liệu, tương thích ngược và tác động tới lưu lượng production.
  4. Nhờ AI đặt câu hỏi làm rõ về kinh doanh, sản phẩm, dữ liệu, API, bảo mật, độ tin cậy, rollout và observability.

Giai đoạn 2: Khảo sát

Vẽ lại hệ thống hiện tại trước khi thay đổi.

  1. Xác định service, route, job, API, sự kiện, kho dữ liệu, người phụ trách và pattern hiện có.
  2. Kiểm tra sự cố, điểm nghẽn, dashboard, log và ràng buộc hệ thống cũ có liên quan.
  3. Nhờ AI lập bản đồ dependency, thành phần bị ảnh hưởng, điểm tích hợp, rủi ro và thông tin còn thiếu.

Giai đoạn 3: Thiết kế

So sánh các phương án và chọn thiết kế đơn giản nhất xử lý đúng rủi ro.

  1. Tạo ADR khi quyết định ảnh hưởng kiến trúc, dữ liệu, dependency hoặc rollout.
  2. So sánh ít nhất ba phương án về độ phức tạp, khả năng mở rộng, tính nhất quán, chi phí, migration, rollback và khả năng bảo trì.
  3. Chốt đồng bộ hay bất đồng bộ, CRUD/CQRS/Event Sourcing, index, ranh giới transaction, cache, idempotency, retry, Circuit Breaker và mô hình bảo mật.

Giai đoạn 4: Kế hoạch triển khai

Chia thiết kế thành các PR nhỏ, rõ và dễ rà soát.

  1. Chia việc theo backend, database, API contract, test, observability, rollout và tài liệu.
  2. Lập kế hoạch migration, feature flag, API tương thích ngược, theo dõi, rollback và người rà soát.
  3. Xác định các kiểm tra unit, integration, contract, E2E, tải, bảo mật, migration và rollback.

Giai đoạn 5: Viết code và rà soát

Giữ phần triển khai đúng ranh giới và đúng hành vi trên production.

  1. Kiểm tra ranh giới kiến trúc, transaction, validation, xử lý lỗi và trách nhiệm sở hữu.
  2. Đảm bảo retry không tạo tác dụng phụ trùng lặp và dữ liệu nhạy cảm không bị ghi log.
  3. Nhờ AI review như một Principal Engineer về tính đúng đắn, race condition, tính nhất quán, bảo mật, observability, hiệu năng, khả năng bảo trì và rủi ro rollback.

Giai đoạn 6: Kiểm chứng trước rollout

Chứng minh tính năng chạy đúng cả luồng bình thường lẫn tình huống lỗi.

  1. Chạy unit, integration, contract, E2E, load, security, migration dry-run và kiểm tra tương thích ngược khi cần.
  2. Chuẩn bị dashboard, alert, runbook, rollback path và cách kiểm tra tác động tới khách hàng.
  3. Nhờ AI tạo danh sách sẵn sàng cho production gồm tình huống lỗi, theo dõi, điều kiện dừng, rollback và kiểm tra dữ liệu.

Giai đoạn 7: Rollout

Release theo từng bước nhỏ và theo dõi tác động tới người dùng.

  1. Nếu có thể, deploy ở trạng thái chưa mở cho người dùng rồi bật nội bộ trước khi canary.
  2. Theo dõi metric thành công, tỷ lệ lỗi, độ trễ, tải DB, query plan, độ trễ queue, tỷ lệ cache hit/miss và phản hồi hỗ trợ.
  3. Định nghĩa điều kiện thành công, điều kiện dừng, người quyết định rollback, kế hoạch thông báo và kill switch.

Giai đoạn 8: Sau rollout

Biến kết quả bàn giao thành bài học và tri thức chung của đội ngũ.

  1. So sánh số liệu kỳ vọng với kết quả thực tế, regression, sự cố, lần suýt lỗi và cảnh báo nhiễu.
  2. Cập nhật tài liệu, ADR, runbook, checklist Studio và ticket theo dõi.
  3. Nhờ AI review sau rollout, gồm kết quả, metric, vấn đề, tác động tới người dùng, technical debt, việc cần làm và bài học.

Tạo module mới

Danh sách kiểm tra khi thêm route, module tính năng, module dịch vụ hoặc component dùng chung mà vẫn giữ trách nhiệm rõ ràng. Dùng khi thêm một phần tính năng hoặc module mới có thể tái sử dụng.

Định nghĩa ranh giới

Một module nên có một lý do chính để thay đổi.

  1. Nêu rõ module chịu trách nhiệm phần nào và phụ thuộc vào đâu.
  2. Định nghĩa đầu vào, đầu ra và trạng thái không hợp lệ.
  3. Đặt file theo pattern đang có thay vì tự tạo một kiểu thư mục mới.
  4. Chỉ mở API công khai vừa đủ và giữ chi tiết bên trong ở chế độ riêng tư.

Kiểm tra frontend

Giữ UI ổn định, dễ tiếp cận và đo lường được.

  1. Bao phủ đầy đủ các trạng thái của UI.
    1. Trạng thái đang tải hoặc đang chờ.
    2. Trạng thái chưa có dữ liệu.
    3. Trạng thái lỗi hoặc thiếu quyền.
    4. Hành vi trên mobile và màn hình hẹp.
  2. Dùng token, icon, khoảng cách và quy tắc card đang có.
  3. Thêm event cho trang, CTA, bộ lọc, tìm kiếm, tùy chọn hoặc liên kết ra ngoài khi cần.
  4. Kiểm tra nhãn, thứ tự focus, thao tác bàn phím và độ tương phản.

Kiểm tra backend

Làm rõ contract trước khi chi tiết triển khai lan sang nhiều nơi.

  1. Ghi rõ contract API/job và quy tắc validation.
  2. Kiểm tra authorization, quyền sở hữu và nhu cầu audit.
  3. Lập kế hoạch schema, index, migration, backfill và thời gian lưu dữ liệu.
  4. Thêm log, metric, cảnh báo và sự kiện kinh doanh nếu hành vi người dùng thay đổi.

Kiểm chứng

Module chưa hoàn tất nếu lần thay đổi sau vẫn không thể thực hiện an toàn.

  1. Viết unit test cho logic thuần và các trường hợp biên của module.
  2. Viết integration test cho contract, persistence và điểm nối giữa các thành phần.
  3. Kiểm tra thủ công luồng chính và ít nhất một tình huống lỗi.
  4. Cập nhật tài liệu, ghi chú PR và ảnh chụp khi thay đổi xuất hiện trước người dùng.

Những câu hỏi của Senior Engineer

Bộ câu hỏi gọn cho mọi tính năng, từ nhu cầu kinh doanh và domain đến API, dữ liệu, tính nhất quán, bảo mật, observability và rollout. Dùng trước khi triển khai một việc tưởng đơn giản nhưng có thể ẩn rủi ro với production, dữ liệu hoặc người dùng.

Kinh doanh, sản phẩm và domain

Nối phần triển khai với kết quả thật cần tạo ra.

  1. Metric kinh doanh, nhóm người dùng và thời hạn nào quan trọng trong việc này?
  2. Luồng chính, trường hợp biên, cách hoàn tác, trạng thái chờ/lỗi và nhu cầu audit là gì?
  3. Entity chính, ranh giới aggregate, chuyển trạng thái, invariant và domain event là gì?

API, dữ liệu và tính nhất quán

Làm rõ contract và cách trạng thái thay đổi.

  1. API đồng bộ hay bất đồng bộ; đã có idempotency, version, phân trang và tương thích ngược chưa?
  2. Schema, migration, index, quy mô truy vấn, thời gian lưu và rủi ro PII là gì?
  3. Cần strong consistency hay eventual consistency; có race condition hoặc sự kiện trùng không?

Khả năng chống lỗi và bảo mật

Giả định dependency và người dùng có thể hành xử ngoài dự đoán.

  1. Dependency nào có thể lỗi, phản hồi chậm hoặc chỉ hoàn tất một phần?
  2. Đã có timeout, retry, Circuit Breaker, fallback, rate limit và idempotency chưa?
  3. Ai được phép dùng, authorization ra sao, đầu vào nào cần kiểm tra và dữ liệu nào không được ghi log?

Observability và rollout

Chọn tín hiệu để hệ thống tự chứng minh đang khỏe hay có vấn đề.

  1. Metric kinh doanh, metric kỹ thuật, trace, log, correlation ID, dashboard và alert nào chứng minh tính năng đang chạy đúng?
  2. Đã có feature flag, canary, điều kiện dừng, đường rollback, cách hoàn tác migration và người theo dõi chưa?
  3. Sau rollout cần lưu lại điều gì để công việc sau có điểm bắt đầu tốt hơn?

Quy trình làm tính năng có AI hỗ trợ

Quy trình đầy đủ từ ý tưởng, đặc tả và triển khai đến rà soát, rollout rồi lưu lại kiến thức. Dùng cho thay đổi sản phẩm hoặc kỹ thuật đáng kể, khi nhiều công cụ AI cùng hỗ trợ nhưng người làm vẫn giữ trách nhiệm cuối cùng.

Định hình công việc

Dùng AI để làm rõ bài toán trước khi giao phần triển khai.

  1. Nhờ GPT soạn mô tả vấn đề, user story, tiêu chí nghiệm thu, phần không làm, rủi ro, rollout và kế hoạch test.
  2. Nhờ Claude phản biện kiến trúc, giả định, tình huống lỗi và phạm vi nhỏ nhất đủ giá trị.
  3. Chia thành các phần việc nhỏ cho Codex hoặc Antigravity, mỗi phần có thể review độc lập.

Thực hiện

Dùng đúng agent cho đúng loại công việc.

  1. Dùng Codex cho việc trong repo cần test, diff sạch, refactor, migration và kết quả sẵn sàng mở PR.
  2. Dùng Antigravity cho prototype nặng về UI, kiểm tra trình duyệt, ảnh chụp và sản phẩm xuyên suốt.
  3. Sau mỗi phần việc nhỏ, dừng lại kiểm tra trước khi mở rộng phạm vi.

Rà soát và release

Tách người thực hiện khỏi bước rà soát và quyết định release.

  1. Dùng Claude hoặc GPT rà soát diff về tính đúng đắn, bảo mật, trường hợp biên, phần test còn thiếu và rủi ro migration.
  2. Người phụ trách xem lại các đánh đổi và đưa ra quyết định merge cuối cùng.
  3. Dùng GPT để soạn release note, cập nhật cho bên liên quan và checklist rollout.
  4. Lưu PRD, RFC, quyết định, bằng chứng test và ghi chú postmortem vào NotebookLM.