"Điểm phức tạp quá mức" được gọi bằng tiếng Anh là:
OH MY THIÊN CHÚA LÀ GÌ NÀY.
Vấn đề là, điều này có thể áp dụng cho một cái gì đó thực sự đơn giản, nhưng được thực hiện theo cách khủng khiếp đến mức bạn có phản ứng tương tự.
Vì vậy, phân biệt một cái gì đó rất phức tạp từ một cái gì đó rất kinh khủng có thể khó khăn.
TUY NHIÊN: Điều thực sự có xu hướng xảy ra với tất cả các phần mềm là xử lý một chút như thế này:
Bước 1: Có một thông số kỹ thuật đẹp, làm một thiết kế đẹp, thực hiện những thứ tốt đẹp. Mọi người vui vẻ.
Ở cuối bước 1: các nhà phát triển tự chúc mừng cho sự thanh lịch tuyệt vời của thiết kế của họ và bỏ đi suy nghĩ hạnh phúc "Tôi có một di sản tuyệt vời ở đây để những người khác thêm vào trong tương lai, nó sẽ rất tuyệt vời và thế giới sẽ là một nơi tốt hơn."
Bước 2: Một số thay đổi được thực hiện, mọi thứ được thêm vào, các chức năng mới được bao gồm. Kiến trúc và cấu trúc từ Bước 1 đã khiến đây là một quá trình khá đau đớn. [Nhưng oops, "yếu tố cruft" chỉ tăng lên một chút.]
Ở cuối bước 2: các nhà phát triển tự chúc mừng cho sự thanh lịch tuyệt vời của thiết kế của họ và bỏ đi suy nghĩ hạnh phúc "Gee Tôi rất thông minh khi thực hiện tất cả các khoản trợ cấp đó trong Bước 1. Điều này rất tốt. Tôi có một di sản tuyệt vời. ở đây để những người khác thêm vào những thứ trong tương lai, nó sẽ rất tuyệt vời và thế giới sẽ là một nơi tốt đẹp hơn. "
Bước 3: Nhiều thay đổi được thực hiện, nhiều thứ được thêm vào, nhiều chức năng mới hơn, một loạt các công cụ được thay đổi, phản hồi của người dùng thực sự đang được lắng nghe.
Ở cuối bước 3: các nhà phát triển tự chúc mừng cho sự thanh lịch tuyệt vời của thiết kế của họ và nghĩ rằng "Kiến trúc này khá tốt khi cho phép rất nhiều thay đổi để chỉ vào vị trí một cách dễ dàng. Nhưng tôi hơi không vui về X và Y và Z. Bây giờ họ có thể được dọn dẹp một chút. Nhưng !!! Ahhh !!! Tôi thật thông minh khi thực hiện tất cả các khoản trợ cấp đó trong Bước 1. Điều này rất tốt. Tôi có một di sản tuyệt vời ở đây cho những thứ khác để thêm vào trong tương lai, nó sẽ rất tuyệt vời và thế giới sẽ là một nơi tốt đẹp hơn. "
Bước 4: giống như bước 3. Ngoại trừ:
Ở cuối bước 4: các nhà phát triển nghĩ: "Công cụ này rất tốt để duy trì UGLY. Nó thực sự cần một số thay đổi nghiêm trọng. Tôi không thực sự thích làm việc này. Nó cần tái cấu trúc. Tôi tự hỏi ông chủ là gì sẽ nói khi tôi nói với anh ta rằng nó cần 6 tuần và sẽ không có gì cho người dùng thấy ở cuối này ... nhưng tôi sẽ có thêm 5 năm phạm vi sửa đổi tương lai tốt bằng cách làm điều này .... hmmm .. thời gian để đến quán rượu để uống bia. "
Bước 5: Một loạt các thay đổi cần phải được thực hiện.
Và DURING bước 5, các nhà phát triển nói với nhau: "Mã này thật tệ. Ai đã viết cái này? Họ nên bị bắn. Thật kinh khủng. Chúng tôi PHẢI TẠO RA NÓ."
Bước 5 gây tử vong. Đây là nơi mà yếu tố cruft trở nên tồi tệ đến mức mã không thể có thêm một vài thay đổi, nó cần phải có một số thay đổi LỚN.
Rắc rối ở Bước 5 là mong muốn vứt nó đi và bắt đầu lại. Lý do này gây tử vong là "Yếu tố Netscape". Lên google nó. Các công ty DIE tại thời điểm này, bởi vì bắt đầu lại có nghĩa là bạn bắt đầu với khoảng 50% giả định thay vì sự thật, 150% nhiệt tình thay vì kiến thức, 200% kiêu ngạo thay vì khiêm tốn ("Những kẻ đó quá khờ khạo!"). Và bạn giới thiệu một loạt các lỗi mới.
Điều tốt nhất để làm là tái cấu trúc. Thay đổi một chút tại một thời điểm. Nếu kiến trúc đang hơi mệt, hãy sửa nó. Thêm, mở rộng, cải thiện. Dần dần. Tại mỗi bước trên đường đi, kiểm tra, thử nghiệm và kiểm tra thêm một số. Những thay đổi tăng dần như thế này có nghĩa là 10 năm sau, mã hiện tại và mã gốc giống như rìu của ông nội ("nó có 10 đầu mới và 3 tay cầm mới nhưng nó vẫn là rìu của ông nội"). Nói cách khác, không có nhiều điểm chung. Nhưng bạn đã chuyển từ cũ sang mới dần dần và cẩn thận. Điều này làm giảm rủi ro và đối với khách hàng, nó làm giảm yếu tố tức giận.