+2

Hành động một cách thận trọng (Act with Prudence)

Nếu bạn đảm nhận bất cứ việc gì, hãy làm một cách thận trọng và cân nhắc những ảnh hưởng sau này - Anon

Bất kể công việc của bạn có vẻ dễ dàng thế nào trong giai đoạn đầu dự án, bạn không thể tránh khỏi những lúc bị áp lực. Nếu bạn phải chọn giữa “làm đúng” và “làm nhanh”, thường thì bạn sẽ chọn “làm nhanh” và có suy nghĩ trong đầu là sẽ quay lại fix nó sau. Khi bạn hứa điều này với chính bạn, với team, với khách hàng, nghĩa là bạn có chủ ý như vậy. Nhưng hầu như thì, sẽ nảy sinh ra những vấn đề mới ở những công việc tiếp theo và bạn sẽ tập trung vào những vấn đề này. Cái kiểu trì hoãn lại công việc để làm sau như vậy thường được coi là “technical debt” (nợ kĩ thuật) và nó không được tốt cho lắm. Đặc biệt Martin Fowler gọi cái kiểu tech debt này là tech debt có chủ ý (deliberate technical debt) để tránh nhầm lẫn với tech debt vô ý (inadvertent technical debt).

Tech debt giống như một món vay lãi: bạn nhận được lợi ích ngắn hạn từ nó, nhưng bạn sẽ phải cố gắng trả lãi cho đến khi nó được trả hết hoàn toàn. Những lối tắt trong code làm cho việc thêm feature mới và refactor code khó khăn hơn. Chúng là nơi sản sinh ra những sai sót và những test case dễ đổ bể. Để chúng đó càng lâu thì càng nguy hiểm. Cho đến lúc bạn phải fix cái chỗ ban đầu mà bạn tạo ra, có thể có tới một đống bùi nhùi được xây dựng trên phần code sai ban đầu, làm cho nó khó sửa và refactor. Thực tế, thường chỉ khi mọi thứ trở nên quá tệ đến nỗi bạn phải fix cái lỗi ban đầu thì bạn mới fix. Còn trước đó thì thường là khó để bạn có thể dành thời gian hoặc cân nhắc rủi ro để sửa nó.

Có những lúc bạn sẽ phải gánh chịu các tech debt để kịp deadline hoặc làm một feature nhỏ. Cố đừng để vào tình huống đó, nhưng nếu tình huống thực sự đòi hỏi phải làm vậy thì vẫn phải làm thôi. NHƯNG (đây là điều lớn) bạn phải track các tech debt và trả nợ nhanh nhất có thể, hoặc mọi thứ sẽ lao dốc không phanh. Ngay sau khi quyết định gánh tech debt, viết ngay một task hoặc lưu lại trong hệ thống track issue của bạn để đảm bảo là bạn không quên nó.

Nếu bạn lên kế hoạch trả nợ trong lần làm việc tiếp theo, giá phải trả sẽ là thấp nhất. Để nợ đó mà không trả sẽ sinh lãi, lãi này nên được theo dõi một cách minh bạch. Việc làm này sẽ giúp nhấn mạnh được mức độ ảnh hưởng của tech debt tới business value của technical debt và sẽ giúp ưu tiên việc trả nợ thích hợp. Làm thế nào để tính và theo dõi phần nợ như thế nào sẽ phụ thuộc vào project của bạn, nhưng bạn phải theo dõi nó.

Trả nợ technical debt càng sớm càng tốt. Còn không thì đồng nghĩa với việc bạn thiếu thận trọng để làm cái khác.


Bài viết được dịch từ bài số 1 trong quyển 97 things every Programmer should know từ trang 4 - 5


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí