Vòng lặp không lối thoát của nợ công nghệ

Trong giới công nghệ, tôi thường thấy một kịch bản quen thuộc: khi "nợ kỹ thuật" (technical debt) chồng chất đến mức dường như không thể cứu vãn, ý tưởng táo bạo nhất luôn là "đốt bỏ tất cả để xây lại từ đầu". Đây là một lời kêu gọi hấp dẫn, hứa hẹn một khởi đầu tươi mới, sạch sẽ và hiệu quả hơn. Tuy nhiên, kinh nghiệm cho tôi thấy, giải pháp này hiếm khi thành công như kỳ vọng. Khi một dự án xây lại hoàn toàn được công bố, đội ngũ phát triển ban đầu sẽ hăng hái bắt tay vào việc. Trong lúc đó, hệ thống cũ — cái "công trình" ngập nợ kỹ thuật nhưng lại đang vận hành phần lõi của doanh nghiệp — vẫn phải tiếp tục hoạt động và liên tục được cập nhật. Các nhà phát triển làm việc trên hệ thống cũ biết rõ nó sẽ sớm bị thay thế, nên họ chẳng còn động lực nào để cố gắng hơn mức tối thiểu nhất khi thêm tính năng mới. Hệ quả là nợ kỹ thuật tiếp tục chất chồng. Cùng lúc đó, đội ngũ phát triển hệ thống mới, thường là những người trẻ đầy tham vọng và có phần ngây thơ, bắt đầu với tốc độ ấn tượng trên nền "xanh sạch đẹp" (greenfield). Nhưng theo thời gian, họ dần nhận ra một sự thật phũ phàng: không ai thực sự hiểu rõ hành vi và phạm vi hoạt động của hệ thống cũ mà họ đang định thay thế. Nếu mọi thứ đã được tài liệu hóa và kiểm thử kỹ càng, có lẽ nó đã không cần phải thay thế ngay từ đầu. Sau nhiều tháng, thậm chí nhiều năm mà không tạo ra giá trị cụ thể nào, áp lực "ra mắt sản phẩm" đè nặng. Cuối cùng, hệ thống mới được đưa vào hoạt động, nhưng chỉ để xử lý một phần nhỏ các chức năng mà hệ thống cũ đảm nhiệm, hoặc dùng cho một tính năng mới nào đó quá khó để xây dựng với hệ thống cũ đang dần bị bỏ bê. Vậy là từ chỗ có một hệ thống, giờ đây chúng ta có HAI hệ thống trong sản xuất: một hệ thống cũ lộn xộn, không ai muốn động vào, và một hệ thống mới chỉ xử lý vài tính năng quan trọng nhưng lại chứa 80% mã nguồn không hoạt động, với hy vọng một ngày nào đó sẽ thay thế hoàn toàn hệ thống cũ. Rủi ro cao là công ty sẽ hết kiên nhẫn, và công việc thay thế toàn bộ hệ thống mới bị bỏ dở, đ