Đạo/2026-10-15/4 phút
v2.1

Một cách làm đúng.

Thử nhiều cách cùng lúc trông có vẻ thận trọng. Nhưng thường thì nó chỉ là cách trì hoãn việc quyết định.

#craft#decision#philosophy
fig.01 — commit.svgA?B?commit

Có một ngụ ngôn cũ, thường được gắn với tên Buridan, kể về một con lừa đứng giữa hai đống cỏ khô giống hệt nhau. Nó đói, hai đống cỏ ở ngay trước mặt, nhưng vì chẳng có lý do gì để chọn đống này hơn đống kia nên nó cứ đứng đó cho tới khi chết đói. Lần đầu nghe, tôi thấy chuyện hơi vô lý. Nghĩ lại mới thấy, câu chuyện ấy giống hệt tôi lúc này, chỉ là tôi không muốn thừa nhận.

Khi chưa chắc nên làm một tính năng theo cách nào, tôi hay mở một branch cho cách này, một branch cho cách kia, rồi đọc thêm vài bài, hỏi thêm vài người. Nhìn từ ngoài vào thì rất kỹ lưỡng. Thực ra, phần lớn những lần như vậy tôi đã mang máng biết từ đầu cách nào khả năng cao sẽ đúng. Chỉ là tôi cố tình chưa chịu chọn, vì chọn rồi mà lỡ sai thì trách nhiệm hoàn toàn thuộc về mình.

Chữ "decide" trong tiếng Anh có gốc Latin nghĩa là cắt bỏ. Tôi thích cách hiểu ấy, vì nó giải thích được tại sao quyết định vẫn khó cả khi lựa chọn đã khá rõ. Chọn một cách đồng nghĩa với việc bỏ những cách kia lại, mà tôi thì không giỏi bỏ thứ gì lại.

Những chiếc branch bỏ dở có một đặc điểm buồn cười là chúng chẳng bao giờ biết đến thất bại. Những chiếc branch dừng lại ngay khi vừa qua phần dễ lúc nào trông cũng đầy hứa hẹn, bởi nó chưa hề phải chạm mặt dữ liệu thật hay chịu cảnh chạy chung với code của người khác. Người ta cũng hay giữ những phiên bản khác của đời mình theo kiểu ấy, chẳng hạn cái nghề lẽ ra đã theo hay thành phố lẽ ra đã sống. Mấy phiên bản đó đẹp một phần vì chưa bao giờ phải sống thử một ngày thứ Hai nào.

Triết gia Kierkegaard từng ví von rằng lo âu thực chất là cơn chóng mặt của sự tự do ("Anxiety is the dizziness of freedom"). Tôi nghĩ tới câu đó mỗi khi ngồi trước một màn hình trống và biết mình làm theo cách nào cũng được. Khi còn chưa chọn, tôi chưa phải chịu trách nhiệm cho cách nào cả. Cảm giác đó dễ chịu thật (tôi không giả vờ là không), và có lẽ vì thế mà tôi kéo dài nó.

Cái giá của nó là tôi cũng chẳng biết thêm được gì. Một cách làm chỉ lộ ra nó đúng hay sai khi đi gần tới cuối, lúc nó gặp những trường hợp không ai vẽ lên bảng. Ba branch dừng giữa chừng cho tôi ba lần cùng một thứ hiểu biết, loại hiểu biết có được ngay từ buổi đầu.

Thợ sửa đồ lâu năm làm việc theo một kiểu mà người ngoài thấy chậm. Gặp cái quạt hỏng, họ thử từng chỗ một, vì thay ba thứ cùng lúc mà quạt chạy lại thì cũng chẳng biết nó hỏng ở đâu. Ai từng thức khuya lần ra lỗi chỉ hiện ra trên máy khách hàng đều quen cách làm này, và biết nó nhanh hơn vẻ ngoài của nó.

Cân nhắc vẫn có chỗ của nó. Người đi thuê nhà phải xem vài căn, vì nắng buổi chiều với tiếng ồn ban đêm đâu có hiện lên trong ảnh. Chỉ là tới một lúc nào đó, so sánh thêm chẳng cho tôi biết gì mới, và tôi vẫn tiếp tục so sánh vì nó cho tôi một chỗ để trốn.

Để biết mình đã tới lúc đó chưa, tôi hay tự hỏi: nếu sáng mai phải trả lời thì mình nói gì? Nếu câu trả lời bật ra ngay, nghĩa là việc so sánh đã xong từ lâu rồi, tôi chỉ chưa chịu nhận.

Một điều giúp tôi can đảm chọn hơn, đó là chẳng có quyết định nào mang tính vĩnh viễn. Một module viết theo cách sai, nếu đã đi tới cùng, thường chỉ mất vài tuần để thay, và lúc thay thì tôi đã biết rõ nó sai ở đâu. Đổi việc hay chuyển nhà cũng vậy, mỗi lần như thế người ta đứng ở một chỗ khác và nhìn bước tiếp theo rõ hơn một chút.

Có một chuyện nữa tôi để ý. Người ta chỉ thật sự dồn tâm sức chăm chút khi đã chốt xong một ngả rẽ, giống như căn nhà thuê, phải dọn vào rồi mới thong thả treo rèm cửa. Với code cũng thế, branch tôi biết sẽ được giữ lại mới là branch tôi chịu viết test và đặt tên cho đàng hoàng. Mấy branch còn lại thì viết tạm cho xong, vì biết đâu ngày mai lại bỏ.

Nhà Thiền có câu "khi đi thì đi, khi ngồi thì ngồi". Tôi từng nghĩ câu đó dành cho người tu, chẳng liên quan gì tới một ngày ngồi viết code. Giờ tôi thấy nó tả khá đúng những ngày làm việc mà tôi thấy ổn nhất, những ngày tôi chỉ làm một việc và làm cho tới khi xong.

Con lừa của Buridan chết đói giữa hai đống cỏ mà đống nào cũng đủ cho nó sống. Nó chờ một lý do để chọn, và lý do đó không bao giờ tới. Mỗi lần thấy mình đứng giữa hai branch quá lâu, tôi lại nhớ tới nó, rồi chọn cái mình đã nghiêng về từ đầu.

Trạm Dev · 2026-10-15 · v2.1 · EOF
#craft#decision#philosophy
$ ls ./dao5 / 6