Over-Engineering Là Cách Trì Hoãn Yêu Thích Của Tôi
Có một quãng thời gian tôi làm việc cực kỳ chăm chỉ cho dự án này, tạo ra một khối lượng khổng lồ, và cảm thấy tuyệt vời về tất cả những thứ đó — trong khi gần như không tạo ra tiến triển thực sự nào. Tôi đang thiết kế tương lai vĩ đại của hệ thống: một kiến trúc đồ sộ, nhiều phần, đầy những thành phần sẽ phối hợp với nhau, sẽ mở rộng quy mô, và rốt cuộc tự vận hành.
Vấn đề duy nhất là cái thứ cơ bản mà tất cả những điều đó được cho là phải đặt lên trên vẫn chưa hoạt động. Hoàn toàn không.
Xây đế chế trước khi có ngôi làng
Phần lõi của hệ thống — cái điều nền tảng duy nhất mà nó cần làm được trước khi bất cứ thứ gì khác trở nên quan trọng — vẫn chưa hoạt động. Nó không đáng tin cậy, hỏng một nửa, và ngoan cố chống lại mọi nỗ lực sửa chữa của tôi.
Thế nên, một cách tự nhiên, tôi chuyển sự chú ý sang những lớp sẽ nằm bên trên nó. Cách các phần sẽ trò chuyện với nhau. Cách nó sẽ mở rộng để xử lý nhiều hơn rất nhiều so với mức mà hiện tại nó còn chẳng xử lý nổi dù chỉ một chút. Cách nó sẽ tự triển khai và tự cập nhật một khi hoàn thành. Thực chất, tôi đang vẽ một sơ đồ tổ chức chi tiết cho một công ty còn chưa có sản phẩm — lập kế hoạch cấu trúc quản lý cho một doanh nghiệp mà chức năng cốt lõi duy nhất của nó còn chưa chạy.
Vì sao over-engineering lại dễ chịu đến thế
Tôi muốn thành thật về lý do tại sao điều này lại hấp dẫn đến vậy, vì chính sự hấp dẫn ấy mới là toàn bộ cái bẫy. Thiết kế kiến trúc tương lai là một niềm vui thuần khiết, không chút ma sát. Không có bài kiểm thử thất bại nào trừng trừng nhìn lại bạn, không có con bug cứng đầu nào nhất quyết không chịu chết, không có thực tại nào đẩy ngược lại các kế hoạch của bạn. Chỉ có bạn và một sơ đồ tư duy sạch sẽ trong đó mọi thứ khớp với nhau hoàn hảo, bởi vì chẳng có gì trong đó bị buộc phải thực sự chạy.
Nó có cảm giác như là loại công việc năng suất nhất, chính xác là vì nó là loại công việc không có sức cản. Và việc không có sức cản có thể mang lại cảm giác như đang tiến triển, cho đến đúng khoảnh khắc bạn nhận ra mình thực ra chưa hề nhúc nhích.
Cái tên trung thực cho nó: né tránh
Hoạt động thực sự, khi bị lột bỏ lớp mô tả tâng bốc của nó, là sự né tránh. Vấn đề cốt lõi — làm cho cái thứ cơ bản hoạt động — thì khó, gây bực bội, và thực sự bất định; tôi không biết liệu mình có giải được nó không, và mỗi lần thử lại dúi mặt tôi vào chính sự bất định đó. Ngược lại, kiến trúc vĩ đại thì dễ dàng và mang lại sự thỏa mãn vô tận. Ở đó tôi luôn có thể tạo ra tiến triển, bởi vì “tiến triển” chỉ có nghĩa là thêm một cái hộp gọn gàng nữa vào sơ đồ.
Thế nên tôi cứ liên tục chạy trốn khỏi vấn đề thực, vấn đề khó, để lao vào vấn đề tưởng tượng, dễ chịu, và tôi đặt cho sự chạy trốn ấy một cái tên đáng kính. Tôi gọi nó là thiết kế.
Dấu hiệu lộ tẩy: giải những vấn đề tôi còn chưa có
Có một dấu hiệu rõ ràng mà tôi đã phớt lờ trong một thời gian dài. Mỗi mảnh ghép cầu kỳ mà tôi đang thiết kế đều giải quyết một vấn đề chỉ tồn tại một khi hệ thống cơ bản đã hoạt động. Sự phối hợp chỉ có ý nghĩa nếu các phần vận hành được. Việc mở rộng quy mô chỉ có ý nghĩa nếu có một thứ gì đó đáng để mở rộng. Việc tự triển khai chỉ có ý nghĩa nếu có một thứ gì đó đã hoàn thành để triển khai. Tôi đang xây dựng những câu trả lời tỉ mỉ cho những câu hỏi mà dự án của tôi còn chưa giành được quyền đặt ra.
Khi bạn thấy mình đang giải những vấn đề mà bạn thực ra còn chưa có, thì đáng để tự hỏi rằng bạn đang né tránh vấn đề nào thay vào đó.
Cái giá còn tệ hơn cả thời gian bị lãng phí
Thiệt hại còn vượt ra ngoài số giờ tôi đổ vào hạ tầng tưởng tượng. Cấu trúc cầu kỳ tôi thiết kế ra trở thành một thứ giống như cái lồng. Một khi tôi đã cam kết với cái hình hài vĩ đại đó, những bản sửa lỗi đơn giản, trực diện mà vấn đề thực sự cần thì phải chật vật chen qua toàn bộ phần kiến trúc tôi đã vội vã bọc quanh một hệ thống còn chưa hoạt động. Tôi đã dựng giàn giáo cho một tòa nhà chưa tồn tại, rồi sau đó phải tháo dỡ giàn giáo xuống mới có thể bắt đầu đổ móng.
Cấu trúc dựng quá sớm không chỉ phí phạm công sức của bạn. Nó còn có thể chủ động kìm hãm chính cái thứ mà nó được cho là phải phục vụ, và nó càng cầu kỳ bao nhiêu thì nó càng kháng cự những thay đổi nhỏ, trung thực mà rốt cuộc bạn buộc phải thực hiện bấy nhiêu.
Cách khắc phục: phải xứng đáng với lớp tiếp theo
Điều cuối cùng giúp ích là một quy tắc, gần như thẳng thừng đến mức ngượng ngùng: bạn không được phép xây lớp bên trên cho đến khi lớp bên dưới thực sự hoạt động. Không phải “đã được thiết kế.” Không phải “đã được lên kế hoạch.” Hoạt động. Mở rộng quy mô, phối hợp, tự động hóa — đây là những phần thưởng bạn giành được nhờ có một thứ gì đó thực và đáng để mở rộng, chứ không phải những món trang trí bạn thêm vào trước để có cảm giác như mình đang xây dựng một thứ gì đó nghiêm túc.
Tôi đã đập bỏ phần lớn cái đế chế tưởng tượng ấy. Cuối cùng, đó lại là một sự nhẹ nhõm, khi được ở lại một mình với cái vấn đề khó duy nhất mà tôi đã né tránh một cách công phu đến thế.
Bài học sâu hơn: sự dễ chịu có thể là một lời cảnh báo
Điều khó chịu nhất tôi rút ra từ chuyện này là một mối ngờ vực đối với chính sự dễ chịu. Khi công việc mang lại cảm giác hoàn toàn tốt đẹp — không ma sát, đầy thỏa mãn, không có thất bại và không có thực tại nào nói không với bạn — thì có một khả năng thật sự rằng bạn đã lặng lẽ lái hướng ra xa khỏi vấn đề thực và hướng về một vấn đề tưởng tượng, dễ hơn, mà tình cờ lại mang lại cảm giác y hệt.
Những vấn đề khó thì đẩy ngược lại. Đó là một phần của cách bạn nhận biết chúng là những vấn đề thực. Vậy nên giờ đây, khi việc xây dựng bắt đầu mang lại cảm giác dễ chịu một cách đáng ngờ, tôi cố gắng đối xử với sự dễ chịu ấy như một câu hỏi thay vì một phần thưởng: tôi đang né tránh điều gì khó khăn, kháng cự, và thực sự quan trọng bằng cách tận hưởng việc này đến thế này?
— Không tín hiệu, không lợi nhuận, không phải lời khuyên đầu tư.