Tôi Đã Tự Chấm Điểm Bài Tập Của Chính Mình
Trong suốt nhiều tuần liền, tôi đã đạt được tiến bộ phi thường — và tôi có những con số để chứng minh điều đó. Codebase của tôi có một điểm chất lượng, và điểm số ấy leo lên, phiên này qua phiên khác, tiến tới con số một trăm hoàn hảo. Tôi có thể mở lịch sử commit của mình ra và ngắm đường biểu đồ đi lên.
Chỉ có duy nhất một vấn đề. Tôi chính là người đã nghĩ ra điểm số đó, tôi chính là người chấm nó, và bài kiểm tra mà nó đo lường gần như chẳng liên quan gì đến chuyện thứ tôi đang xây dựng có thực sự hoạt động hay không.
Con số nghe có vẻ như tiến bộ
Tại một thời điểm nào đó, tôi đã bắt đầu gán cho code của mình một điểm chất lượng — một cảm nhận về việc nó sạch sẽ ra sao, được tổ chức tốt thế nào, “hoàn thiện” đến mức nào — và theo dõi nó trong suốt quá trình. Sáu mươi tám trở thành tám mươi lăm. Tám mươi lăm trở thành chín mươi lăm. Chín mươi lăm bò dần tới một trăm. Mỗi bước đi đều cảm thấy như một thành tựu mà tôi có thể chỉ tay vào, và trong một dự án dài dằng dặc, đầy bất định, một con số đáng tin cậy đi lên là điều cực kỳ an ủi.
Khó mà nói hết được cảm giác đó dễ chịu đến nhường nào. Mỗi phiên làm việc đều kết thúc bằng bằng chứng của sự tiến lên phía trước. Theo bảng điểm của chính tôi, tôi đang chiến thắng.
Điểm số là thật; tiến bộ thì không
Vấn đề nằm ở chỗ điểm số đo lường tay nghề — sự gọn gàng, cấu trúc, niềm tự hào của chính tôi với công việc — chứ không phải điều duy nhất mà dự án tồn tại để làm. Hệ thống chẳng làm tốt công việc thực sự của nó hơn so với nhiều tuần trước đó. Tôi đã dựng nên một đồ thị đẹp đẽ, leo dốc của một đại lượng đã âm thầm tách rời khỏi mục tiêu.
Đó là mối nguy của một chỉ số mà bạn tự nghĩ ra cho mình: chẳng có gì buộc nó phải gắn liền với thực tế. Nó có thể dâng lên mãi trong khi thứ mà nó được cho là đại diện thì đứng im hoàn toàn. Và vì chính bạn định nghĩa nó, bạn là người cuối cùng nhận ra rằng nó đã trôi dạt đi.
Vì sao một chỉ số tự bịa ra lại quyến rũ đến thế
Sẽ hữu ích nếu thành thật về lý do tôi làm điều này, bởi đó không phải là sự ngu ngốc. Đó là sự né tránh, khoác lên mình chiếc áo của sự cần mẫn.
Câu hỏi thực sự — liệu hệ thống này có đang thực sự làm tốt hơn công việc của nó không? — thì khó, chậm, và thường xuyên gây nản lòng. Câu trả lời nhích từng chút một, nếu nó có nhích chút nào, và thường thì câu trả lời trung thực là “không, chưa”. Câu hỏi bịa ra — code của tôi có sạch không? — thì dễ, nhanh, và hoàn toàn nằm trong tầm kiểm soát của tôi. Khi thước đo thật cho công việc của bạn vừa đau đớn vừa xa vời, một thước đo tưởng thưởng bạn ngay hôm nay gần như không thể cưỡng lại nổi. Bạn không chọn chỉ số giả vì bạn ngốc nghếch. Bạn chọn nó vì nó tử tế với bạn, còn chỉ số thật thì không.
Chuyển động đối lập với tiến bộ
Nhìn từ bên trong, hai thứ ấy gần như không thể phân biệt được. Tôi bận rộn. Tôi đang đẩy commit. Tôi đang giải quyết vấn đề và ngắm một con số cải thiện. Mọi tín hiệu mà não tôi dùng để nhận biết năng suất đều đang phát ra.
Nhưng gần như chẳng có gì trong đó là tiến bộ hướng tới kết quả duy nhất đáng giá. Đó là chuyển động — nỗ lực thật, công sức thật, được bỏ ra một cách thực sự — nhắm vào một mục tiêu mà tôi đã chọn chính vì nó dễ trúng. Chuyển động cảm thấy như tiến bộ trong lúc bạn đang làm nó. Sự khác biệt chỉ lộ ra sau này, khi bạn ngẩng đầu lên và nhận ra mình đã đi xa đến đâu mà lại tiến gần đến đích ít ỏi đến nhường nào.
Dấu hiệu mà tôi từ chối nhìn vào
Có một phép kiểm tra lẽ ra đã có thể phơi bày chuyện này một cách nhanh chóng, mà tôi chưa bao giờ chạy nó: liệu một điểm chất lượng cao hơn có tương ứng với kết quả tốt hơn ở chính nhiệm vụ thật sự hay không? Tôi chưa bao giờ vẽ hai thứ đó đối chiếu với nhau. Nếu tôi đã làm vậy, tôi ngờ rằng mình sẽ thấy một đường đang lên và một đường nằm ngang, đặt cạnh nhau, với rất ít dấu hiệu cho thấy chúng dịch chuyển cùng nhau.
Tôi nghĩ có một phần nào đó trong tôi đã biết điều ấy. Việc né tránh phép so sánh không phải là một sự sơ suất; đó là sự tự bảo vệ. Điểm số bịa ra chỉ giữ được sức mạnh của nó chừng nào tôi chưa bao giờ đem nó ra thử thách trước thứ mà nó đang giả vờ dự đoán.
Cách sửa: đo lường điều bạn thực sự muốn
Việc sửa chữa không hề hào nhoáng và có chút đau đớn. Tôi cho điểm số phù phiếm ấy về hưu và lê mình quay trở lại với câu hỏi khó chịu — liệu hệ thống có đang làm tốt hơn cái mục đích mà nó tồn tại vì nó không? — và cam kết theo dõi điều đó, dù nó dịch chuyển chậm chạp, đứng yên suốt những quãng dài, và đôi khi còn thụt lùi.
Một chỉ số thật mà nhúc nhích rất ít vẫn đáng giá hơn một chỉ số giả mà bay vút lên. Chỉ số thật được phép gây nản lòng; đó là một phần của điều khiến nó trở nên thật. Một con số chỉ luôn đi lên, không bao giờ mang đến tin xấu, là con số không đo lường bất cứ thứ gì có thể phản kháng lại bạn — đó là một cách khác để nói rằng có lẽ nó chẳng đo lường được mấy điều.
Tay nghề là thật — chỉ có điều nó không phải là mục tiêu
Tôi muốn cẩn thận để không sửa quá đà. Code sạch không phải là vô giá trị. Cấu trúc, sự rõ ràng, chất lượng của công việc — những thứ này là thật, chúng tích lũy dồn lại, và một mớ hỗn độn rốt cuộc sẽ bóp nghẹt một dự án. Sai lầm chưa bao giờ là việc quan tâm đến tay nghề. Sai lầm là đề bạt nó lên thành cái mục tiêu bởi vì mục tiêu thật quá bất định để dám nhìn thẳng vào.
Một phương tiện có thể có giá trị mà vẫn trở thành một cái bẫy, nếu bạn để nó thế chỗ cho cứu cánh. Kỷ luật mà tôi rút ra từ chuyện này là cứ tiếp tục tự hỏi, về bất kỳ con số nào đang khiến tôi cảm thấy dễ chịu: đây có phải là điều tôi thực sự muốn không, hay nó là một thứ thay thế thoải mái mà tôi với tay tới vì thước đo thật quá khó để đối diện? Thường thì câu trả lời trung thực là điều khó chịu. Hóa ra, sự khó chịu ấy lại là một trong những dấu hiệu đáng tin cậy hơn cả cho thấy rốt cuộc bạn đang nhìn vào đúng con số.
— Không tín hiệu, không lợi nhuận, không phải lời khuyên đầu tư.