Series: Mấy định luật vui mà thấm
Hồi nhỏ nhà mình không dư dả gì. Mình nhớ mẹ hay than một câu mà tới giờ nghĩ lại vẫn thấy đúng một cách kỳ lạ: cứ hễ trong nhà sắp hết tiền, thì y như rằng muối, bột ngọt, đường, nước mắm cũng rủ nhau hết một lượt. Không bao giờ hết lẻ tẻ để mẹ mua bù từ từ. Toàn hết nguyên chùm, đúng cái tuần kẹt nhất, kèm khuyến mãi thêm cái bóng đèn cháy hoặc đứa con sổ mũi =))
Lúc đó mình chỉ nghĩ chắc nhà mình xui. Lớn lên đi làm, mình phát hiện cái “xui cả chùm” đó không chừa ai, và nó còn có tên hẳn hoi — được đặt theo tên một ông kỹ sư người Mỹ nữa. Nhưng khoan, để mình kể thêm vài chuyện đã, rồi mình gọi tên ổng sau.
Cái đồng hồ chọn đúng ngày để phản chủ
Mình chạy bộ được hơn bốn năm. Trước một giải chạy, mình thuộc dạng chuẩn bị kỹ: đồ đạc xếp từ tối hôm trước, bib gắn sẵn vào áo, gel nhét túi, báo thức đặt hai lớp, và quan trọng nhất — cắm sạc đồng hồ GPS.
Vấn đề là cắm sạc và sạc vô là hai chuyện khác nhau.
Sáng ra, đứng giữa vạch xuất phát, mình giơ tay bấm start thì màn hình chớp một cái báo pin yếu. Cái chân đế sạc đêm qua bị lệch, tiếp xúc không ăn. Cả tháng trời tập luyện có dữ liệu đầy đủ từng buổi — buổi chạy nhẹ 5km giữa tuần cũng đo đàng hoàng — đúng cái buổi cần đo nhất thì đồng hồ xin nghỉ phép. Mình chạy giải đó bằng… cảm giác, về đích không biết pace bao nhiêu, coi như chạy chay =))
Điều đáng nói: cái đồng hồ đó sạc trật cả trăm lần ở nhà thì không sao, vì sáng hôm sau đâu có gì quan trọng. Nó chỉ chọn đúng cái đêm trước race để trật. Cứ như nó biết vậy.
Màn hình trắng lúc 11 giờ đêm
Làm dev hơn chục năm, mình có nguyên một kho chuyện kiểu này. Nhưng chuyện gần nhất lại không xảy ra ở công ty, mà ở chính cái blog bạn đang đọc.
Một tối nọ mình hứng chí thêm đoạn code PHP vào theme để làm cái shortcode hiển thị bài mới. Đọc lại kỹ, tự tin bấm lưu. Và blog trắng trơn. Không lỗi, không thông báo, chỉ một màn hình trắng tinh khôi nhìn lại mình lúc 11 giờ đêm.
Nguyên nhân sau đó mới tìm ra: dư đúng một thẻ mở <?php. Một dòng. Cái blog nuôi cả năm sập vì một dòng, và dĩ nhiên nó sập vào đúng cái tối mình chủ quan không backup trước khi sửa. Những tối có backup đầy đủ thì code chạy ngọt như chưa từng có cuộc chia ly.
Chốn công sở: sân nhà của chú Murphy
Dân đi làm chắc ai cũng có phiên bản của riêng mình. Của mình là hai kịch bản kinh điển.
Một: deploy chiều thứ sáu. Cả tuần deploy mấy lần êm ru, đúng cái bản “sửa nhỏ xíu thôi mà” bấm lúc 4 giờ chiều thứ sáu thì hệ thống dở chứng, và thế là cả team ngồi lại tới tối thay vì về ăn cơm. Giờ trong nghề tụi mình có hẳn luật bất thành văn: thứ sáu không deploy. Không phải mê tín đâu, là kinh nghiệm xương máu được nén lại đó =))
Hai: demo cho khách. Tính năng chạy mượt cả chục lần lúc test nội bộ, đúng lúc share màn hình cho khách xem thì đứng hình. Tắt demo cái là chạy lại bình thường, ngoan như chưa từng làm gì sai. Ai làm phần mềm đọc tới đây chắc đang gật đầu mỏi cổ.
Rồi, giờ mới gọi tên: định luật Murphy
Tất cả những chuyện trên — hũ nước mắm của mẹ, cái đồng hồ, màn hình trắng, buổi demo đứng hình — đều là một hiện tượng, và nó có tên là định luật Murphy (Murphy’s Law):
“Anything that can go wrong will go wrong.”
Cái gì có thể hỏng, thì nó sẽ hỏng. Và thường là hỏng đúng lúc tệ nhất.
Cái tên đến từ Edward A. Murphy Jr., kỹ sư không quân Mỹ. Khoảng năm 1949, ông tham gia dự án thử nghiệm sức chịu đựng của con người khi giảm tốc đột ngột — người ta gắn cảm biến lên một chiếc xe trượt phóng trên đường ray rồi phanh gấp. Một lần nọ, toàn bộ cảm biến bị lắp ngược, cả buổi thử nghiệm tốn kém thu về đúng con số 0 tròn trĩnh. Ông Murphy bực quá buông một câu càm ràm về việc hễ có cách làm sai thì kiểu gì cũng có người làm sai theo cách đó.
Chuyện sẽ dừng ở một câu càm ràm, nếu không có đoạn sau: vị bác sĩ trưởng nhóm thử nghiệm — người tình nguyện ngồi lên chính chiếc xe trượt đó — sau này trả lời họp báo rằng thành tích an toàn của cả dự án có được là nhờ họ luôn tính trước “định luật Murphy”: cái gì sai được thì lên kế hoạch như thể nó sẽ sai. Báo chí đăng lại, cái tên lan ra, và nhân loại có thêm một định luật — thứ định luật duy nhất mà ai cũng từng tự kiểm chứng mà không cần phòng lab =))
Chú Murphy có thật không, hay mình tự huyễn?
Câu trả lời thật thà: nửa nọ nửa kia.
Nửa “tự huyễn” là do trí nhớ chọn lọc. Cái đồng hồ sạc trật trăm lần ở nhà thì mình quên ngay trong ngày, trật một lần trước race thì nhớ tới già và đem lên blog kể =)) Não mình lưu chuyện xui đúng lúc quan trọng đậm hơn nhiều so với chuyện suôn sẻ, nên nhìn lại đời cứ thấy toàn Murphy, trong khi hàng trăm ngày mọi thứ chạy êm thì không được tính.
Nhưng có một nửa thật, và nửa này mới thú vị: nhiều chuyện “xui” thật ra là hệ quả có thể đoán trước. Ví dụ kinh điển là miếng bánh mì phết bơ rơi úp mặt bơ xuống đất. Nghe như xui thuần tuý, nhưng từng có nhà khoa học ngồi tính toán và làm thí nghiệm nghiêm túc hẳn hoi: với độ cao mặt bàn thông thường, miếng bánh trượt khỏi mép bàn chỉ đủ thời gian xoay khoảng nửa vòng trước khi chạm đất — nên mặt bơ úp xuống là vật lý, không phải vận rủi. Công trình đó còn được trao một giải thưởng vui dành cho các nghiên cứu “nghe buồn cười nhưng khiến người ta suy nghĩ”. Tương tự, hết tiền và hết nước mắm cùng lúc không hẳn ngẫu nhiên: đồ trong bếp thường được mua cùng một đợt nên hết cũng cùng một đợt, và tuần kẹt tiền là tuần mình để ý chuyện hết đồ nhất.
Nói cách khác: chú Murphy một nửa là ảo giác của trí nhớ, một nửa là những rủi ro nhỏ có thật, lặp đủ nhiều lần thì sớm muộn cũng rơi trúng thời điểm quan trọng. Và vì cả hai nửa đều không biến mất, cách khôn nhất không phải là cãi nhau với ổng, mà là sống chung.
Mình sống chung với chú Murphy kiểu gì
Mình không cố “thắng” Murphy nữa, vì thắng không nổi. Mình chỉ đổi vài thói quen nhỏ, toàn thứ rẻ tiền:
Kiểm tra thứ quan trọng bằng mắt, không tin quy trình. Trước ngày race, sạc đồng hồ xong mình đeo lên tay nhìn con số phần trăm pin, chứ không tin cái chân đế nữa. Cắm sạc là quy trình, con số 100% mới là sự thật.
Backup trước, sửa sau. Kể cả khi “chỉ sửa một dòng thôi mà”. Kinh nghiệm màn hình trắng dạy mình: nhất là khi chỉ sửa một dòng thôi mà. Những thay đổi nhỏ là những thay đổi mình chủ quan nhất, mà chú Murphy thì chuyên trị khách chủ quan.
Chừa buffer cho mọi kế hoạch. Việc nghĩ làm một tiếng, mình chừa tiếng rưỡi. Ra sân bay sớm hơn nửa tiếng so với “vừa kịp”. Không phải bi quan — chỉ là để dành sẵn chỗ cho vị khách không mời mà chắc chắn tới.
Và bỏ cái tật nói “mọi thứ đang ổn”. Câu đó với chú Murphy giống tiếng chuông gọi cơm, nói phát là ổng tới liền =))
Xui vẫn sẽ tới, không né được đâu. Nhưng xui mà có backup thì chỉ là chuyện để kể lại cho vui — như nguyên bài này. Còn xui mà không backup thì mới thành bi kịch. Khác nhau chỗ đó thôi, mà khác một trời một vực.
Bài tiếp theo trong series: có một định luật bảo rằng chỉ cần viết vấn đề ra giấy là đã giải được một nửa. Nghe hơi ảo, nhưng dân dev tụi mình kiểm chứng nó mỗi ngày mà không biết → Định luật Kidlin: viết ra là giải được một nửa