Chắc chắn rồi.
Tái cấu trúc nên được thực hiện trong một dự án làm việc và "vượt qua". Khi tất cả các thử nghiệm của bạn (ở cấp độ đơn vị, hệ thống và chấp nhận) vượt qua, bạn biết rằng sản phẩm của bạn đáp ứng yêu cầu. Khi bạn tái cấu trúc, bạn có thể tiếp tục xác nhận rằng tất cả các bài kiểm tra tiếp tục vượt qua. Nếu bất kỳ bài kiểm tra nào bắt đầu thất bại, thì bạn đã làm sai và cần phải sửa nó. Nếu bạn có các bài kiểm tra thất bại, bạn nên sửa chúng trước khi tái cấu trúc để bạn luôn có thể đảm bảo việc tái cấu trúc của bạn không làm thay đổi chức năng của hệ thống.
Đây cũng là thời điểm hoàn hảo để tái cấu trúc, giả sử bạn có thời gian và nguồn lực để thực hiện tái cấu trúc và vẫn giao hàng đúng thời gian và ngân sách. Tái cấu trúc bây giờ sẽ giúp bạn dễ hiểu và bảo trì hệ thống của mình hơn, vì vậy khi bạn thêm nhiều tính năng mới hơn, nó sẽ trở nên dễ dàng hơn. Bạn cần phải chiến đấu chống lại sự thối mã và entropy phần mềm .
Như Joel Etherton chỉ ra trong các bình luận, bạn cần quản lý phạm vi tái cấu trúc. Tập trung vào tái cấu trúc các bộ phận của hệ thống mà bạn sẽ sớm thêm các tính năng vào, thực hiện các phép tái cấu trúc sẽ giúp làm việc dễ dàng hơn hoặc thêm các tính năng mới. Việc sử dụng phân tích tĩnh, công cụ số liệu và đánh giá mã có thể giúp bạn xác định các khu vực quan trọng nhất. Bạn không muốn bỏ lỡ thời hạn vì bạn đã tái cấu trúc - bạn vẫn cần tiếp tục gia tăng giá trị cho khách hàng.
Bạn đề cập đến khách hàng không thấy giá trị trong tái cấu trúc. Thông thường, khách hàng không quan tâm đến chất lượng của mã, nhưng về sản phẩm. Tái cấu trúc sẽ giúp bạn dễ dàng duy trì chất lượng sản phẩm cao và tiếp tục cung cấp một sản phẩm đáp ứng nhu cầu thay đổi của khách hàng. Hãy cố gắng thương lượng thời gian để tái cấu trúc lịch biểu của bạn (khách hàng muốn các tính năng X trong Y ngày, thử xem bạn không thể có các tính năng Y + Z ngày hay XN để bạn có thể dành thời gian cho thiết kế, tái cấu trúc và triển khai), nếu bạn có thể.