29/02/2024
Lập trình viên thực dụng - Chủ đề 3: Entropy phần mềm
**********************
Trong khi việc phát triển phần mềm miễn nhiễm với hầu hết các định luật vật lý, thì định luật về sự gia tăng của entropy tác động mạnh đến chúng ta. Entropy là một thuật ngữ vật lý dùng để chỉ mức độ “hỗn loạn” trong một hệ thống. Thật không may, các định luật nhiệt động lực học đảm bảo rằng entropy trong vũ trụ có xu hướng đạt tới mức tối đa. Khi tình trạng hỗn loạn gia tăng trong phần mềm, chúng tôi gọi đó là “sự mục nát của phần mềm” (software rot). Một số người có thể gọi nó bằng thuật ngữ lạc quan hơn, “nợ kỹ thuật” (technique debt), với ý niệm ngụ ý rằng họ sẽ trả lại vào một ngày nào đó nhưng có lẽ điều đó sẽ không xảy ra.
Tuy nhiên, dù tên là gì thì cả nợ nần và mục nát đều có thể lan rộng một cách không thể kiểm soát.
Có nhiều yếu tố có thể góp phần phá hỏng phần mềm. Điều quan trọng nhất dường như là tâm lý hay văn hóa khi thực hiện một dự án. Ngay cả khi bạn là một nhóm chỉ có một người, tâm lý dự án của bạn có thể là một điều rất mỏng manh. Bất chấp những kế hoạch được chuẩn bị tốt nhất và những con người giỏi nhất, một dự án vẫn có thể bị hủy hoại và suy tàn trong suốt thời gian tồn tại của nó. Ngược lại, có những dự án khác, bất chấp những khó khăn to lớn và những thất bại liên tục, đã chống lại thành công xu hướng mất trật tự của tự nhiên và đạt được kết quả khá tốt.
***Điều gì làm nên sự khác biệt?***
Trong thành phố, một số tòa nhà rất đẹp và sạch sẽ, trong khi những tòa nhà khác thì đổ nát. Tại sao? Các nhà nghiên cứu trong lĩnh vực tội phạm và suy thoái đô thị đã phát hiện ra một cơ chế kích hoạt hấp dẫn, một cơ chế có thể nhanh chóng biến một tòa nhà sạch sẽ, nguyên vẹn, có người ở thành một nơi đổ nát và bỏ hoang.[5]
Một cửa sổ bị vỡ.
Một cửa sổ bị vỡ nhưng không được sửa chữa trong một thời gian dài, khiến cư dân trong tòa nhà có cảm giác bị bỏ rơi - cảm giác rằng những người có quyền lực không quan tâm đến tòa nhà. Tiếp tục một cái cửa sổ khác bị vỡ. Mọi người bắt đầu xả rác. Những hình vẽ nguệch ngoạc xuất hiện. Những hư hỏng nghiêm trọng về mặt cấu trúc bắt đầu xuất hiện. Trong một khoảng thời gian tương đối ngắn, tòa nhà trở nên hư hỏng vượt qua khả năng sửa chữa của chủ sở hữu, cảm giác bị bỏ rơi trở thành hiện thực.
Tại sao điều đó lại tạo nên sự khác biệt? Các nhà tâm lý học đã thực hiện các nghiên cứu[6] cho thấy sự tuyệt vọng có thể lây lan như virus cúm trong khoảng cách gần. Việc một sự đổ vỡ rõ ràng bị phớt lờ sẽ thúc đẩy ý nghĩ rằng có lẽ không thể sửa chữa được gì cả, rằng không ai quan tâm, tất cả đều đã bị nguyền rủa; mọi suy nghĩ tiêu cực có thể lây lan giữa các thành viên trong nhóm, tạo thành một vòng xoáy nguy hại.
***Mẹo 5. Đừng sống chung với cánh của sổ bị vỡ.
Đừng để "cánh cửa sổ bị vỡ" (thiết kế tồi, quyết định sai hoặc code kém) không được sửa chữa. Hãy sửa chữa từng cái một ngay khi nó được phát hiện. Nếu không có đủ thời gian để sửa chữa nó một cách hợp lý thì hãy bịt tạm nó lại. Bạn có thể tạm thời comment đoạn code lại, hoặc hiển thị thông báo “Chưa triển khai”, hoặc sử dữ liệu giả để tạm thay thế. Hãy thực hiện ngay một số hành động để ngăn ngừa những đổ vỡ khác và để chứng tỏ rằng bạn đang kiểm soát được tình hình.
Chúng tôi đã thấy các hệ thống đẹp đẽ, đầy đủ chức năng xuống cấp khá nhanh khi một cánh cửa sổ bắt đầu bị hỏng. Có những yếu tố khác có thể góp phần gây ra lỗi phần mềm và chúng ta sẽ đề cập đến một số yếu tố đó ở phần khác, nhưng việc thờ ơ sẽ khiến tốc độ hỏng phần mềm tăng nhanh hơn bất kỳ yếu tố nào khác.
Có thể bạn đang nghĩ rằng không ai có thời gian để đi dọn dẹp toàn bộ kính vỡ của một dự án. Nếu vậy, tốt hơn hết bạn nên lên kế hoạch mua một chiếc thùng rác hoặc chuyển đến một khu phố khác. Đừng để entropy chiến thắng.
***Điều đầu tiên, không gây hại***
Andy từng có một người quen rất giàu có. Ngôi nhà của anh ấy sạch sẽ, chứa đầy đồ cổ vô giá, đồ vật nghệ thuật, v.v. Một ngày nọ, tấm thảm treo quá gần lò sưởi bốc cháy. Sở cứu hỏa lao vào để cứu chữa sự việc cũng như ngôi nhà của anh ấy. Nhưng trước khi kéo những chiếc vòi cứu hỏa to và bẩn vào nhà, họ dừng lại - khi ngọn lửa đang hoành hành - để trải một tấm thảm giữa cửa trước và nguồn lửa.
Họ không muốn làm hỏng tấm thảm.
Điều đó nghe có vẻ khá cực đoan. Chắc chắn ưu tiên hàng đầu của sở cứu hỏa là dập lửa, thiệt hại không đáng kể. Nhưng rõ ràng họ đã đánh giá được tình hình, tự tin vào khả năng xử lý đám cháy và cẩn thận để không gây ra thiệt hại không cần thiết cho tài sản. Đó là điều cần phải làm với phần mềm: không gây ra thiệt hại tài sản khác chỉ vì có một cuộc khủng hoảng nào đó. Một cửa sổ vỡ đã là quá nhiều.
Một cửa sổ bị vỡ—một đoạn mã được thiết kế tồi, một quyết định quản lý tồi mà nhóm phải chấp nhận trong suốt thời gian thực hiện dự án—là tất cả những gì cần thiết để bắt đầu sự đi xuống. Nếu bạn thấy mình đang làm việc trên một dự án có khá nhiều cửa sổ bị vỡ, bạn rất dễ rơi vào suy nghĩ “Tất cả phần khác của phần mềm này cũng vớ vẩn, tôi sẽ làm theo kiểu đó”. Sẽ chẳng có vấn đề gì vì dự án vẫn ổn cho đến thời điểm này. Trong thí nghiệm ban đầu dẫn đến “Lý thuyết cửa sổ vỡ”, một chiếc ô tô bị bỏ hoang nằm yên ổn suốt một tuần. Nhưng chỉ sau khi một cửa sổ bị vỡ, chiếc xe đã bị lột sạch và lật ngược trong vòng vài giờ.
Ngược lại, nếu bạn nhận thấy mình đang tham gia vào một dự án có mã đẹp hoàn hảo—được viết rõ ràng, thiết kế đẹp và trang nhã—bạn ý thức rằng mình sẽ phải hết sức cẩn thận để không làm nó rối tung lên giống như những người lính cứu hỏa kia. Ngay cả khi có hỏa hoạn (trường hợp khẩn cấp như deadline, ngày phát hành, demo triển lãm thương mại, v.v.) xảy ra, bạn cũng không muốn trở thành người đầu tiên gây rắc rối và làm phát sinh thêm thiệt hại.
Chỉ cần tự nhủ: “Không để cửa sổ bị vỡ”.
Xem thêm tại: https://atwom.edu.vn/ #/technology-blog/detail?id=QTJNRURVMTM%3D