Năm mới, comback lại hành trình viết blog, mình mở bát bằng một bài không liên quan kĩ thuật lắm, chủ yếu là tâm tư cá nhân, nhân ngày vừa đi trực lễ (Tết Dương) về.
Trong giới làm phần mềm, có một lời nguyền mang tên “Don't Deploy Friday“. Đó là khoảnh khắc hoàng hôn buông xuống, sự nhiệt tình giao thoa với rủi ro, và ranh giới giữa “người hùng” với “tội đồ” chỉ cách nhau một nút Enter.
Hôm nay, Chủ Nhật (đang trong kì nghỉ lễ Tết Dương), vào đúng cái giờ nhạy cảm – 5 giờ chiều – tôi nhận được một cái nhãn dán từ đồng nghiệp: “Sao lại bàn lùi thế?”.
Bối cảnh đơn giản thôi: Code sửa xong nhưng chưa verify hết case dưới môi trường phát triển, quy trình Change Request (CR) thì cần các sếp duyệt thì chưa đả động gì cả, và ai đó muốn “đẩy thẳng lên Production để check luôn cho tiện”.
Với tư cách là người cầm chìa khóa của hệ thống, người đứng mũi chịu sào, câu nói ấy làm mình khựng lại 1 nhịp. Không phải vì tự ái, mà vì mình nhận ra một lỗ hổng lớn trong tư duy làm việc của nhiều người: Sự ngây thơ của “Nhiệt tình”.
1. Production không phải là cái “Sân chơi” để lên đó mà thử
Có một kiểu tư duy đường thẳng rất đáng sợ: Thấy bug -> Sửa -> Đẩy lên -> Xong. Các bạn chỉ nhìn thấy đích đến là “xong cái ticket của mình“, mà quên mất rằng con đường đến đó đầy rẫy những chướng ngại vật mang tên “Rủi ro hệ thống“.
Khi một QC bảo: "Cứ đẩy lên Prod đi để chị check luôn", trong khi ở dưới UAT/STAGING chưa verify xong (chỉ verify được 1 2 case), thì xin lỗi, đó không phải là xông xáo. Đó là sự liều lĩnh đánh cược trên sự ổn định của sản phẩm.
Production là nơi khách hàng trả tiền để dùng dịch vụ, không phải là cái máy tính cá nhân để chúng ta lên đó “thử cho biết”.
Mặc dù một số hệ thống mới chúng tôi vừa deploy lên PROD đợt vừa rồi đang ở giai đoạn pilot và chưa public ra khách hàng thật, tuy nhiên tư duy là chung và phải nhất quán.
2. “Bàn lùi” hay là Quản trị rủi ro?
Tôi tự hỏi, từ bao giờ việc nhìn thấy trước rủi ro lại bị quy chụp là bàn lùi?
- Nếu bạn lái xe, thấy đường đông và trời sắp bão, bạn bảo với vợ mình: “Hay là mình đi đường vòng hoặc chờ tạnh mưa rồi hãy đi”, đó là bạn đang bàn lùi hay bạn muốn về nhà an toàn?
- Nếu bác sĩ bảo: “Ca phẫu thuật này cần thêm xét nghiệm, chưa mổ ngay được”, đó là bàn lùi hay là y đức?
Trong IT cũng vậy thôi:
Tôi hỏi: "Không biết các sếp có duyệt kịp CR trong tối nay không?" – Đó là tôi đang bảo vệ team khỏi việc vi phạm quy trình.
Tôi hỏi: “Đã verify xong hết các issue của phần vừa sửa đó chưa?” – đó là tôi đang bảo vệ tính ổn định của hệ thống.
Tôi lo ngại: "5h chiều rồi, hôm nay lại là Chủ Nhật" – Đó là cái phanh cần thiết cho một chiếc xe đang lao dốc không kiểm soát.
Tôi hỏi: “Nếu anh em sắp xếp đẩy lên PROD luôn thì chị có ở lại verify luôn được không? (nhưng chưa chắc change đã thực hiện xong sớm được)” – đó là tôi đang bảo vệ thời gian của tất cả mọi người.
3. Nhiệt tình cộng thiếu hiểu biết bằng gì?
Các bạn có thể đẩy bug xong, tắt máy về nhà, ngủ ngon giấc nồng. Nhưng nếu cái bug đó làm sập hệ thống, hay việc deploy vội vàng gây ra lỗi dây chuyền, ai sẽ là người gánh hậu quả?
Người phải dựng đầu dậy lúc 2 giờ sáng để rollback, check lỗi, để viết Incident Report vào hôm sau, để hứng chịu cơn thịnh nộ của khách hàng và ban BOD – là tôi, là những người nắm trách nhiệm deploy, chứ không phải các bạn.
Thế nên, làm ơn hãy phân biệt rõ: "Bàn Lùi" là khi thấy khó khăn thì trốn tránh.
Còn ngăn chặn một hành động thiếu suy nghĩ có thể gây họa cho tập thể, đó là Trách nhiệm và Tầm nhìn.
Làm phần mềm, nhanh là tốt. Nhưng “nhanh và ẩu” dưới danh nghĩa “đẩy tiến độ” thì cái giá phải trả luôn đắt hơn rất nhiều.
Đừng bắt tôi đánh cược sự ổn định của cả hệ thống chỉ để thỏa mãn sự vội vã của bạn vào lúc 5 giờ chiều.
Đừng gọi sự cẩn trọng là “bàn lùi”, hãy gọi nó đúng với cái tên là: Sự Chuyên Nghiệp
Xem thêm các bài viết nổi bật bên dưới:
- Xác thực giao dịch trong hệ thống tài chính
- Đồng nghiệp tôi vừa mới Golive và bùm, race condition
- Tổng hợp dữ liệu cho 1 triệu tài khoản trong 4 phút
- Xử lý lỗi lệch múi giờ khi dùng Mapstruct
- Có CodeRabbit làm tôi review code cũng nhàn hơn
- Lỗi trên môi trường Staging mà không ai chịu sửa đến cùng
- Filter Spring và pha xử lý bug nhớ đời
- Những thói quen tốt trong ngành phát triển phần mềm
- Rest API: Cách Ngăn Chặn Duplicate Request Hiệu Quả
- Sức mạnh của AI CLI – trợ thủ đắc lực cho dân lập trình
- Những điều khó đỡ trong ngành phần mềm #1