Tôi Mất Cả Một Tuần Vì Một Cú Crash Mà Lẽ Ra Tôi Đã Sống Sót Qua
Có lần tôi đã mất gần trọn công sức của cả một tuần chỉ vì một cú crash duy nhất. Không phải vì bản thân cú crash là một thảm họa hiếm gặp nào đó — nó chỉ là một sự gián đoạn bình thường, tẻ nhạt, kiểu việc vẫn xảy ra suốt. Tôi mất cả tuần vì tôi đã chẳng lưu lại gì trong suốt quá trình. Thế là một gián đoạn ập đến chỉ vài phút trước khi kết thúc đã quăng đi nhiều ngày tiến độ tích lũy, và không còn cách nào lấy lại bất cứ phần nào. Nó đơn giản là mất, và nó đã có thể mất suốt cả quãng thời gian đó mà tôi không hề nhận ra.
Phần đau đớn, khi nhìn lại, là chuyện đó đã hoàn toàn có thể tránh được đến mức nào. Cú crash không hủy hoại công việc của tôi. Chính việc tôi không làm cho công việc của mình có khả năng sống sót mới là thứ hủy hoại nó.
Sự lạc quan thầm lặng khi cho rằng nó sẽ chạy đến hết
Tôi đã xây dựng các tiến trình chạy dài của mình như thể chúng sẽ luôn chạy trơn tru từ đầu đến cuối, không bị gián đoạn, lần nào cũng vậy. Không lưu trạng thái trung gian. Không có cách nào khôi phục ở giữa chừng. Chỉ việc khởi động, để nó chạy, và cho rằng nó sẽ đi đến đích. Nếu bạn hỏi thẳng tôi liệu giả định đó có an toàn không, tôi sẽ trả lời là không. Nhưng tôi chưa bao giờ tự hỏi, nên tôi cứ tiếp tục xây dựng dựa trên nó.
Đây là một kiểu lạc quan phổ biến và gần như vô hình: thầm lặng cho rằng con đường suôn sẻ là con đường duy nhất. Bạn thiết kế cho một thế giới mà mọi thứ đều diễn ra đúng, bởi vì đó là thế giới bạn đang hình dung khi xây dựng. Rồi bạn đưa nó ra thế giới thực, vốn có rất nhiều con đường khác, mà phần lớn trong số đó kém dễ chịu hơn.
Bất cứ thứ gì chạy đủ lâu rồi cũng sẽ bị gián đoạn
Đây là sự thật mà tôi đã từ chối lên kế hoạch để đối phó. Bất kỳ tiến trình nào chạy đủ lâu rồi cuối cùng cũng sẽ bị gián đoạn. Một cú crash. Một lần chập điện. Một cỗ máy cạn bộ nhớ. Một sai lầm từ phía tôi. Một lần khởi động lại không thể chờ đợi. Nguyên nhân cụ thể không quan trọng, và có nhiều nguyên nhân hơn mức bạn có thể liệt kê.
Trong một khoảng thời gian ngắn, gián đoạn là một rủi ro. Trong một chân trời đủ dài, nó thôi là rủi ro và trở thành một điều chắc chắn. Vấn đề không phải là liệu một thứ chạy dài có bị gián đoạn hay không, mà chỉ là khi nào và bao lâu một lần. Và một khi bạn nhìn nhận theo cách đó, việc thiết kế như thể nó sẽ không xảy ra lộ rõ bản chất thật: lên kế hoạch, một cách có chủ ý, để sai về một điều chắc chắn sẽ xảy đến.
Cái giá được quyết định bởi những gì bạn đã lưu, không phải bởi cú crash
Đây chính là sự thấu hiểu đã sắp xếp lại toàn bộ cách tôi suy nghĩ về tất cả những điều này. Thiệt hại từ một gián đoạn được quyết định gần như hoàn toàn bởi mức độ khôi phục được của công việc bạn — chứ không phải bởi mức độ nghiêm trọng của gián đoạn. Cú crash hiếm khi là biến số quan trọng. Những gì bạn làm từ trước mới là.
Cùng một cú crash y hệt, ập đến ở đúng cùng một thời điểm, khiến bạn mất năm phút nếu bạn vừa mới lưu tiến độ gần đây, hoặc năm ngày nếu bạn chẳng lưu gì cả. Gián đoạn là giống hệt nhau trong cả hai trường hợp. Hậu quả thì khác nhau một trời một vực, và sự khác biệt ấy được quyết định hoàn toàn bởi một lựa chọn bạn đã đưa ra từ trước, từ rất lâu trước khi cú crash xảy đến. Cú crash không quyết định bạn mất bao nhiêu. Chính bạn quyết định, từ trước, bằng cách quyết định bạn sẵn lòng làm cho bao nhiêu phần trở nên khôi phục được.
Checkpoint là phép tính số học, không phải sự hoang tưởng
Một khi tôi đóng khung vấn đề theo cách đó, lý lẽ cho việc lưu trạng thái trung gian thường xuyên thôi trông giống như sự thận trọng thái quá và bắt đầu trông giống một phép tính số học đơn giản. Gián đoạn là chắc chắn theo thời gian. Cái giá khi nó xảy ra bị giới hạn bởi lần cuối bạn lưu cách đây bao lâu. Vậy nên lưu thường xuyên chỉ là một khoản bảo hiểm rẻ tiền chống lại một sự kiện chắc chắn, với mức phí mà bạn có thể đặt thấp tùy ý bằng cách lưu thường xuyên hơn một chút.
Từ chối làm điều đó không phải là dũng cảm hay tập trung hay đi nhanh. Đó chỉ là tính toán tồi — từ chối một sự bảo vệ rẻ tiền chống lại điều gì đó chắc chắn sẽ xảy ra, để đổi lấy một chút tiện lợi ngay lúc này. Tôi đã tự khen mình vì không phí thời gian vào những tấm lưới an toàn, trong khi âm thầm gánh một rủi ro khổng lồ, không được bảo hiểm, chống lại một sự kiện thậm chí còn chẳng có gì để nghi ngờ.
Thiết kế để tiếp tục, không chỉ để khởi động lại
Tuy vậy, có một tầng cao hơn so với việc lưu định kỳ, và đó mới là tầng quan trọng nhất. Cách khắc phục sâu sắc hơn là xây dựng công việc chạy dài sao cho một gián đoạn sẽ tiếp tục từ chỗ nó dừng lại, thay vì bắt đầu lại từ đầu.
Sự phân biệt này là tất cả khi gián đoạn xảy ra thường xuyên. Một tiến trình khởi động lại từ con số không mỗi lần bị quật ngã có thể, trong một môi trường đủ tệ, không bao giờ hoàn thành được — mỗi gián đoạn xóa sạch mọi thứ, và nếu chúng đến đủ thường xuyên so với thời gian chạy, thì bạn chẳng đạt được tiến độ ròng nào dù có làm việc vất vả đến đâu. Ngược lại, một tiến trình tiếp tục thì luôn tiến về phía trước. Nó có thể bị quật ngã hết lần này đến lần khác mà vẫn, cuối cùng, đến đích, bởi vì mỗi gián đoạn chỉ tốn một chút ít kể từ lần lưu cuối. Khởi động lại thì mong manh theo một cách tích lũy dần; tiếp tục thì bền vững theo một cách tích lũy theo chiều ngược lại.
Cùng một nguyên lý, ở gần như mọi nơi
Điều này khái quát hóa vượt xa khỏi bất kỳ một phép tính chạy dài đơn lẻ nào. Nó áp dụng cho gần như bất kỳ công việc nào có giá trị tích lũy theo thời gian và sẽ mất đi nếu không được bảo toàn một cách có chủ ý. Khuôn mẫu là giống hệt: tiến độ chồng chất lên, một gián đoạn ập đến, và bất cứ thứ gì không được làm cho bền vững sẽ biến mất.
Vậy nên câu hỏi mà tôi học được cách đặt ra, về bất cứ điều gì mất một khoảng thời gian và có ý nghĩa, không còn là câu hỏi dễ chịu nữa — “nhỡ chuyện này bị gián đoạn thì sao?” — được giữ ở khoảng cách an toàn như một giả thuyết. Nó là phiên bản thẳng thừng, cứ-cho-là-nó-sẽ-xảy-ra: “khi chuyện này bị gián đoạn, tôi sẽ mất bao nhiêu?” Câu hỏi đó, được đặt ra sớm, làm thay đổi những gì bạn xây dựng. Câu hỏi thứ nhất cho phép bạn hy vọng. Câu hỏi thứ hai buộc bạn phải chuẩn bị.
Bài học sâu xa hơn: gián đoạn là một sự kiện đã được lên lịch
Tất cả quy về một điều: tôi đã thôi thiết kế cho cái thế giới nơi mọi thứ diễn ra đúng, và bắt đầu thiết kế cho cái thế giới nơi mọi thứ thường xuyên trục trặc — bởi vì cái thứ hai mới là thế giới thực sự tồn tại, còn cái thứ nhất chưa bao giờ là gì khác ngoài một giả định dễ chịu mà tôi đã âm thầm thay thế cho thực tại.
Tôi dần hiểu ra rằng khả năng chống chịu không phải là bi quan. Nó là sự chính xác. Gián đoạn không phải là một giả thuyết xa vời để được lạc quan gạt bỏ. Nó, trên thực tế, là một sự kiện đã được lên lịch — chỉ là bạn không được cho biết ngày tháng. Xây dựng như thể nó sẽ đến không phải là u ám hay sợ hãi. Đó chỉ là sự trung thực về cái thế giới duy nhất mà ta có để xây dựng trong đó. Tôi đã mất cả một tuần để học được rằng cú crash chưa bao giờ là vấn đề. Vấn đề là tôi đã xây dựng một thứ không có cách nào sống sót qua việc bị gián đoạn, trong một thế giới mà việc bị gián đoạn là điều chắc chắn.
— Không có tín hiệu, không có lợi nhuận, không phải lời khuyên đầu tư.