Bài viết của Joel Spolsky cảnh báo về một trong những sai lầm lớn nhất trong phát triển phần mềm: viết lại toàn bộ mã nguồn từ đầu. Ông phân tích lý do tại sao đây là một quyết định nguy hiểm và tốn kém. Dưới đây là những ý chính:


1. Netscape và sai lầm lớn khi viết lại từ đầu

  • Netscape đã mắc sai lầm chiến lược nghiêm trọng khi quyết định viết lại toàn bộ trình duyệt của họ thay vì cải tiến dần từ mã nguồn cũ.
  • Kết quả là họ mất ba năm không thể phát hành phiên bản mới, để rồi trong thời gian đó Microsoft Internet Explorer chiếm lĩnh thị trường.
  • Không chỉ Netscape, nhiều công ty khác cũng mắc lỗi tương tự, như Borland với dBase for Windows và Quattro Pro.

2. Tại sao các lập trình viên thích viết lại từ đầu?

  • Lập trình viên là những kiến trúc sư, họ muốn “phá bỏ và xây lại” thay vì cải tạo dần.
  • Họ thường chê bai mã nguồn cũ là “lộn xộn, rối rắm”, nhưng thực tế không phải lúc nào cũng vậy.
  • Lý do chính:Đọc hiểu code khó hơn viết code mới!
    • Vì vậy, thay vì hiểu và tái sử dụng, lập trình viên thích viết mới từ đầu.

3. Viết lại mã nguồn là tự sát vì bạn mất đi kinh nghiệm tích lũy

  • Mã nguồn cũ có thể xấu xí, nhưng nó đã được kiểm chứng qua thực tế.
  • Những dòng code “xấu” thường chứa các bản vá lỗi quan trọng mà nếu bỏ đi, bạn sẽ lặp lại những lỗi cũ.
  • Viết lại từ đầu = bỏ đi hàng năm trời kinh nghiệm trong việc sửa lỗi và tối ưu.
  • Bạn sẽ mất ít nhất 2-3 năm để làm lại và trong thời gian đó, đối thủ của bạn sẽ bỏ xa bạn trên thị trường.

4. Thay thế viết lại bằng cách nào?

Spolsky đưa ra ba lý do khiến lập trình viên muốn viết lại mã nguồn, kèm theo giải pháp thay thế:

(1) Vấn đề về kiến trúc

  • Khi code bị tổ chức sai cách, bạn có thể tái cấu trúc (refactoring) dần dần thay vì viết lại từ đầu.
  • Ví dụ: Tách giao diện khỏi logic xử lý thay vì đập bỏ tất cả.

(2) Code chạy chậm

  • Nếu một phần của chương trình chậm, chỉ cần tối ưu hóa phần đó, không cần viết lại toàn bộ.
  • Nguyên tắc tối ưu: 1% cải thiện có thể mang lại 99% hiệu quả.

(3) Code xấu xí

  • Code có thể khó đọc, đặt tên biến không đồng nhất, nhưng vấn đề này có thể sửa bằng công cụ (tìm và thay thế) thay vì viết lại.

5. Sai lầm phổ biến: “Viết một phiên bản để vứt bỏ”

  • Quan niệm “Viết một phiên bản để vứt bỏ rồi làm lại” có thể phù hợp với dự án nhỏ, nhưng với phần mềm lớn, nó là một thảm họa.
  • Ví dụ: Nếu một công ty viết lại toàn bộ phần mềm, họ sẽ mắc lại nhiều lỗi cũ và thêm cả lỗi mới.

6. Lời khuyên của Spolsky

  • Không bao giờ viết lại phần mềm từ đầu trừ khi thực sự cần thiết.
  • Luôn tìm cách cải tiến mã nguồn hiện tại.
  • Nếu có vấn đề, hãy tái cấu trúc, tối ưu hóa từng phần thay vì đập bỏ tất cả.
  • Đừng lãng phí thời gian và tài nguyên chỉ vì code “có vẻ cũ”.

Tóm lại

Bài viết này nhấn mạnh rằng viết lại phần mềm từ đầu là một sai lầm chiến lược nghiêm trọng. Thay vì lãng phí thời gian vào một quá trình không cần thiết, các công ty nên tái cấu trúc và cải tiến dần dần để duy trì lợi thế cạnh tranh.

Posted in , , ,