AllianceProject Handbook
← Knowledge

Yêu cầu với lập trình viên

Những điều bắt buộc với lập trình viên

Danh sách ngắn những việc một dev phải làm trong mọi hạng mục, không có ngoại lệ. Đây là điều kiện để code được nhận, không phải gợi ý để cân nhắc.

Cập nhật 12/09/2026bắt buộcdevshift left

Cách đọc bài này

Mọi điều trong bài này là bắt buộc. Không có mục nào là "nếu có thời gian". Nếu một yêu cầu ở đây không làm được trong hạng mục đang làm, thì hạng mục đó chưa xong — chứ không phải yêu cầu này được bỏ.

Các bài còn lại trong nhóm này giải thích chi tiết từng phần. Bài này là bản tóm tắt để dán lên tường.

Trước khi viết dòng code đầu tiên

#Bắt buộcVì sao
1Đọc hết acceptance criteria của hạng mụcKhông đọc thì làm xong sẽ lệch
2Hỏi lại nếu có bất kỳ câu nào mơ hồHỏi tốn 5 phút, làm lại tốn 2 ngày
3Nói ra các trường hợp biên mình thấyĐây là chặng rẻ nhất để bắt lỗi
4Ước lượng, và báo nếu thấy quá lớnHạng mục quá lớn phải được chẻ trước
5Tạo branch từ branch main mới nhấtTránh xung đột và code lạc hậu

Mục 3 là mục hay bị bỏ nhất và đắt nhất khi bỏ. Khi đọc yêu cầu, dev là người duy nhất biết "nếu danh sách rỗng thì sao", "nếu người dùng bấm hai lần thì sao", "nếu mất mạng giữa chừng thì sao". Nói ra lúc này, lỗi chưa kịp tồn tại. Không nói, lỗi sẽ được viết ra, được review, được test, rồi được người dùng tìm thấy.

Quy tắc: nhận một hạng mục mà không hỏi câu nào là dấu hiệu đáng lo, không phải dấu hiệu tốt.

Trong khi viết code

#Bắt buộcKiểm chứng thế nào
6Chạy được trên máy mình trước khi đẩy lênTự chạy thử luồng chính
7Không tắt, không bỏ qua cảnh báo của linterKhông có dòng vô hiệu hoá kiểm tra nào không kèm lý do
8Viết test cho phần logic mình thêm vàoXem chuẩn test của dev
9Xử lý trường hợp lỗi và trường hợp rỗngKhông có màn hình trắng, không có crash
10Không để lại khoá, mật khẩu, chuỗi kết nối trong codeQuality gate sẽ quét, nhưng đừng để nó phải chặn
11Commit nhỏ, thông điệp rõXem quản lý branch và commit

Về mục 7: khi thật sự cần bỏ qua một cảnh báo, bắt buộc ghi chú ngay dòng đó lý do vì sao, kèm cách xử lý đúng nếu sau này làm được. Vô hiệu hoá kiểm tra mà không giải thích là hành vi bị chặn ở review.

Trước khi mở pull request

Đây là chặng chặn cuối cùng do chính dev kiểm soát. Tự chạy hết danh sách này trước khi nhờ người khác nhìn:

  • Tự đọc lại toàn bộ thay đổi của mình một lượt, như đang review người khác.
  • Chạy toàn bộ test tự động ở máy mình, tất cả đều xanh.
  • Chạy formatter và linter, không còn cảnh báo mới.
  • Đối chiếu từng acceptance criteria, tự đánh dấu đã đạt.
  • Kiểm tra thủ công luồng mình sửa, cộng thêm một luồng liền kề có thể bị ảnh hưởng.
  • Xoá code chết, mã ghi log tạm, phần ghi chú thử nghiệm.
  • Viết mô tả pull request theo mẫu, kèm ảnh hoặc video nếu có thay đổi giao diện.

Gửi pull request mà chưa tự làm bảy việc trên là đẩy việc của mình sang người review. Người review có nhiệm vụ tìm vấn đề về thiết kế và logic, không phải nhiệm vụ phát hiện bạn quên chạy test.

Khi code đã lên branch main

#Bắt buộcThời hạn
12Theo dõi kết quả build và test sau khi mergeNgay sau khi merge
13Nếu làm hỏng branch main, sửa hoặc rollback ngayTrong 30 phút
14Theo dõi lỗi và số liệu của phần mình vừa release48 giờ đầu
15Cập nhật tài liệu nếu thay đổi cách dùng hoặc cấu hìnhCùng pull request

Về mục 13: làm hỏng branch main không phải là chuyện xấu hổ, ai cũng có lúc. Để nó hỏng mà không xử lý mới là chuyện nghiêm trọng, vì nó chặn cả đội. Rollback trước, tìm nguyên nhân sau — không ai bị trách vì rollback.

Năm điều tuyệt đối không làm

  1. Không đẩy thẳng lên branch main. Mọi thay đổi đi qua pull request, kể cả sửa một dòng, kể cả bạn là người có quyền cao nhất.
  2. Không tự ý tắt một quality gate để cho qua. Quality gate đỏ nghĩa là dừng lại, không phải nghĩa là tìm cách đi vòng.
  3. Không nói "xong" khi chưa đạt Definition of Done. "Xong phần code, còn test" không phải là xong.
  4. Không âm thầm mở rộng phạm vi. Thấy chỗ khác cần sửa thì mở hạng mục riêng, đừng nhét vào pull request đang làm.
  5. Không giấu tiến độ xấu. Kẹt quá nửa ngày thì nói ra. Đội giúp được, còn hạn chót thì không.

Vì sao danh sách này tồn tại

Toàn bộ danh sách trên là một ý duy nhất được viết ra nhiều lần: đẩy việc phát hiện lỗi về phía sớm nhất có thể.

Nơi lỗi được phát hiệnAi trả giáGiá
Lúc đọc yêu cầu và hỏi lạiDev, 5 phút1
Lúc gõ code, linter báo đỏDev, vài giây1
Lúc chạy test ở máyDev, vài phút3
Lúc quality gate tự động chạyDev, 10 phút5
Lúc người khác reviewHai người, nửa giờ10
Lúc test trước releaseCả đội, một buổi30
Sau khi người dùng đã càiCả công ty100+

Mỗi dòng trong bài này tồn tại để kéo một loại lỗi lên phía trên bảng. Đọc kỹ hơn ở tư duy shift left.