Page 42 - Ký sự code dạo
P. 42
LẬP TRÌNH VIÊN ĐÂU PHẢI CHỈ BIẾT CODE
LUẬN VỀ TECHNICAL DEBT – NỢ KIẾP NÀY, DUYÊN KIẾP
TRƯỚC
Technical Debt (Nợ kĩ thuật) là một món nợ mà hầu như lập trình viên
nào cũng phải gánh trong quá trình làm việc. Hẳn bạn sẽ thắc mắc: Hầu
hết lập trình viên chúng ta đều là những con người siêng năng chăm
chỉ, không cờ bạc gái gú, hết giờ làm là đi nhậu rồi mát xa … à không, về
nhà với vợ con. Chúng ta không vay mượn ai bao giờ thì làm sao có
nợ???
Muốn biết câu trả lời, hãy đọc kĩ bài viết này để tìm hiểu thêm về
Technical Debt nhé! Đây là một khái niệm khá quan trọng đấy.
Technical Debt là gì?
Khái niệm này được đưa ra bởi Ward Cunningham (Cha đẻ của wiki
đầu tiên). Trong cuộc sống, đôi khi bạn sẽ phải mượn tiền để xài trước,
sau đó cày cuốc trả. Số tiền này được gọi là nợ. Trong lập trình cùng
thế, đôi khi ta chọn cách giải quyết “mì ăn liền”, giải quyết được vấn đề
ngay, nhưng sẽ gây khó khăn cho quá trình phát triển và bảo trì về
sau. Mỗi lần như vậy, ta tạo thêm một khoản “nợ kĩ thuật” cho dự án.
Technical Debt ban đầu rất ít, nhưng theo quá trình code thì càng ngày
nó càng nhiều lên, trở thành nợ nần chồng chất. Một số ví dụ:
• Để tái sử dụng code đã viết, ta copy và paste code và sửa đôi
chút (thay vì phải tách thành module riêng). Cách làm này
nhanh, nhưng khi có bug thì sửa… hộc máu vì code được copy
ở nhiều chỗ.
• Khi có requirement mới, thay với thiết kế code cho dễ mở rộng,
ta viết thêm hàm if. Cách này nhanh, nhưng nếu mở rộng nhiều
thì code sẽ có một đống if.
• Có bug khủng liên quan tới kiến trúc hệ thống, thay vì fix bug
và refactor thì ta try/catch nuốt lỗi và fix tạm ở phần ngọn, gọi
là hotfix.
Technical Debt là điều tất yếu trong quá trình code. Mỗi quyết định ta
đưa ra trong lúc code đều làm tăng số nợ này lên. Điều quan trọng
là mượn xong thì phải trả, nếu để lâu, techinical debt tích luỹ sẽ gây ra
nhiều hậu quả nguy hiểm khôn lường.
40