Trả lời nhanh: Nguyên tắc chọn model gọn trong một câu: tiết kiệm ở việc máy móc, đừng tiết kiệm ở việc cần phán đoán. Bản nhẹ đủ cho đổi tên hàng loạt, viết kiểm thử theo mẫu, chuyển định dạng dữ liệu, tóm tắt nhật ký. Bản mạnh đáng tiền cho thiết kế kiến trúc, gỡ lỗi khó, rà soát bảo mật và mọi việc mà một quyết định sai tốn hơn nhiều lần khoản vừa tiết kiệm. Bạn đổi được giữa phiên, nên không cần chọn một lần cho tất cả.
Nhiều người chọn một bản rồi dùng mãi, và thường là chọn bản mạnh nhất cho yên tâm. Cách đó tốn hơn cần thiết ở phần lớn công việc hằng ngày, trong khi vẫn có những việc mà tiết kiệm là sai lầm. Bài này chia theo loại việc.
Việc nào dùng bản nhẹ
Đặc điểm chung: có khuôn mẫu rõ ràng, kết quả kiểm chứng được ngay.
- Đổi tên biến hoặc hàm hàng loạt theo quy ước mới.
- Viết kiểm thử theo mẫu đã có cho một hàm thuần logic.
- Chuyển đổi định dạng dữ liệu, ví dụ từ một cấu trúc sang cấu trúc khác.
- Tóm tắt nhật ký, gom lỗi theo loại.
- Sinh dữ liệu mẫu để thử màn hình.
- Viết mô tả thay đổi từ phần khác biệt.
Với những việc này, chênh lệch chất lượng giữa các bản rất nhỏ trong khi chênh lệch chi phí đáng kể. Nếu bạn chạy chúng trong luồng tự động nhiều lần mỗi ngày, khác biệt cộng dồn rõ.
Việc nào cần bản mạnh
Đặc điểm chung: cần hiểu bối cảnh rộng và đưa ra phán đoán.
- Thiết kế kiến trúc và thiết kế database. Một quyết định sai ở đây kéo theo hàng tháng sửa chữa, xem bài thiết kế database.
- Gỡ lỗi khó, loại mà nguyên nhân nằm cách xa chỗ báo lỗi.
- Rà soát bảo mật, nơi bỏ sót một lỗ hổng đắt hơn mọi khoản tiết kiệm.
- Đọc và hiểu một repo lạ để lập kế hoạch làm việc.
- Chuyển đổi lớn, ví dụ nâng phiên bản nền tảng kéo theo nhiều thay đổi liên quan.
Nguyên tắc kiểm tra nhanh: hỏi xem nếu nó làm sai thì bạn có phát hiện ngay không. Phát hiện ngay thì dùng bản nhẹ được; sai mà mấy tuần sau mới lộ ra thì dùng bản mạnh.
Đổi bản giữa chừng
Cách làm hiệu quả nhất là chia theo khâu thay vì chọn một bản cho cả dự án:
- Khâu khảo sát và lập kế hoạch: bản mạnh, vì đây là lúc quyết định hướng đi, theo bài về plan mode.
- Khâu viết code theo kế hoạch đã duyệt: bản nhẹ hoặc trung bình đủ, vì hướng đã rõ.
- Khâu rà soát trước khi gộp: quay lại bản mạnh.
Cách chia này tận dụng đúng chỗ mạnh của mỗi bản. Nó cũng khớp với thói quen mở phiên mới khi chuyển khâu, thứ vốn đã tốt cho việc giữ ngữ cảnh sạch.
Khi chạy tự động
Với luồng tự động không có người ngồi cạnh, cân nhắc thêm một yếu tố ngoài chi phí: rủi ro khi nó làm sai mà không ai phát hiện ngay.
Ba gợi ý:
- Việc trả về văn bản để người đọc, ví dụ bình luận rà soát: bản trung bình thường đủ, vì bạn vẫn đọc lại.
- Việc đề xuất thay đổi code: bản mạnh, vì bạn duyệt nhanh và dễ bỏ sót.
- Việc chạy hàng trăm lần mỗi ngày: bản nhẹ, nhưng phải là việc thật sự máy móc.
Và nhớ đặt trần chi phí theo ngày cho mọi luồng tự động, theo bài chạy agent trong CI. Một luồng dùng bản mạnh gặp việc không giải được sẽ tiêu tiền rất nhanh.
Đừng để tiết kiệm thành đắt
Ba tình huống mà việc chọn bản nhẹ trở nên đắt hơn:
Nó đi sai hướng và bạn phải làm lại. Khoản tiết kiệm không bù được thời gian của bạn.
Nó cần nhiều lượt qua lại hơn để tới cùng kết quả. Tổng số lượt nhiều lên có khi tốn hơn một lượt với bản mạnh.
Nó bỏ sót một lỗi mà bạn cũng không thấy. Đây là trường hợp tệ nhất và cũng khó nhận ra nhất, vì bạn không biết mình đã bỏ lỡ gì.
Vì vậy hãy coi việc chọn bản như chọn người cho một việc: việc lặp lại có khuôn mẫu thì ai làm cũng được, còn việc cần phán đoán thì bạn muốn người giỏi nhất. Phần chi tiết về cấu trúc chi phí nằm ở bài về chi phí.
Phân loại việc theo mức cần thiết
| Loại việc | Mức nào là đủ | Dấu hiệu chọn sai |
|---|---|---|
| Đổi tên biến, sửa định dạng, viết chú thích | Mức nhẹ | Dùng mức mạnh cho việc này là đốt tiền không đổi lại gì |
| Viết hàm nhỏ theo mô tả rõ ràng | Mức nhẹ | Nếu phải sửa lại nhiều lần thì mô tả của bạn chưa đủ rõ |
| Tìm nguyên nhân một lỗi khó tái hiện | Mức mạnh | Dùng mức nhẹ ở đây là vòng vo nhiều lượt, tổng chi phí cao hơn |
| Thiết kế cấu trúc cho một phần mới | Mức mạnh | Kết quả sai ở bước này kéo theo hàng tuần sửa chữa |
| Dọn mã chạm nhiều tệp cùng lúc | Mức mạnh | Cần nhìn được toàn cảnh, không chỉ từng tệp riêng lẻ |
Dấu hiệu bạn đang dùng mức không phù hợp
- Phải sửa lại kết quả quá ba lượt cho một việc: đổi lên mức mạnh hơn, hoặc mô tả yêu cầu chưa rõ. Kiểm tra mô tả trước.
- Kết quả đúng ngay lượt đầu với mọi việc: có thể bạn đang dùng thừa. Thử hạ mức cho nhóm việc lặp đi lặp lại và đo lại.
- Chi phí tăng mà lượng việc không tăng: nhiều khả năng bạn quên hạ mức sau khi xong một việc khó.
Cách đo để quyết định thay vì đoán
# Lam thu nghiem nho trong mot tuan: # Ngay 1 den 3: dat mac dinh o muc nhe# Ghi lai: so viec phai nang muc giua chung, va vi sao # Ngay 4 den 5: dat mac dinh o muc manh# Ghi lai: so viec ma muc nhe cung du # Cuoi tuan doi chieu chi phi va so gio phai lam lai # Ket qua thuong thay: mac dinh muc nhe, nang len khi gap# - loi khong tai hien duoc# - viec cham tu 5 tep tro len# - quyet dinh ve cau truc # Voi luong chay tu dong khong nguoi truc: luon dat han muc chi tieu# truoc khi bat, du chon muc naoCâu hỏi thường gặp
Có nên luôn dùng bản mạnh nhất không?
Không cần cho việc máy móc như đổi tên hàng loạt hay viết kiểm thử theo mẫu, vì chênh lệch chất lượng nhỏ mà chi phí đáng kể. Nhưng đừng tiết kiệm ở thiết kế, gỡ lỗi khó và rà soát bảo mật.
Đổi bản giữa phiên có mất ngữ cảnh không?
Không mất nội dung hội thoại. Cách dùng hiệu quả là chia theo khâu: bản mạnh cho khảo sát và lập kế hoạch, bản nhẹ hơn cho phần viết code theo kế hoạch đã duyệt.
Làm sao biết việc nào cần bản mạnh?
Hỏi một câu: nếu nó làm sai thì bạn có phát hiện ngay không. Phát hiện ngay thì bản nhẹ đủ. Sai mà vài tuần sau mới lộ ra thì đó là việc cần bản mạnh.
Chạy tự động thì chọn thế nào?
Việc trả về văn bản để bạn đọc thì bản trung bình đủ. Việc đề xuất sửa code thì nên bản mạnh vì bạn duyệt nhanh. Và luôn đặt trần chi phí theo ngày cho mọi luồng tự động.
