Một người mới tốt nghiệp viết cho tôi: “Em chỉ mới làm việc như người phát triển phần mềm được ba tháng. Người quản lí dự án coi lịch biểu là quan trọng nhất nhưng không chú ý tới chất lượng. Chúng em thường dừng kiểm thử khi lịch đến hạn. Qui tắc của công ti là “Nó là đủ tốt rồi.” Thầy nghĩ gì về qui tắc “đủ tốt”? Xin thầy lời khuyên.”

Đáp: Để tôi bắt đầu bằng một câu chuyện ngắn: Một người xây nhà giỏi dạy con mình về thương mại. Qui tắc của ông ấy là đơn giản: “Xây từng ngôi nhà dường như ông xây nó cho bản thân ông.” Sau nhiều năm, ông ấy cho phép con trai bắt đầu xây nhà theo cách riêng của anh ta mà không có giám sát của ông ấy. Ông ấy bảo anh thanh niên: “Con đã học mọi thứ từ bố nên bây giờ con có thể tự mình làm nó. Bố sẽ để con xây ngôi nhà mới không có bố. Bố sẽ gặp con khi nhà hoàn thành, nhưng nhớ lấy, xây nó dường như con xây nó cho bản thân con.”

Người con hình dung rằng không có bố theo dõi, anh ta có thể làm cái gì đó anh ta thích. Anh ta nghĩ: “Mình làm nó “đủ tốt” thôi bằng việc thay đổi các thứ vì chẳng ai sẽ bao giờ biết.” Thế là anh ta mua gỗ rẻ để làm vật tư cho khung nhà, xi măng mác thấp, và vật tư chất lượng thấp hơn bố anh ta đã dùng. Vì trả ít tiền hơn cho vật tư chất lượng thấp, anh ta có thể làm được nhiều tiền cho bản thân mình.

Khi ngôi nhà được hoàn thành, người bố tới xem ngôi nhà đã xong. Trên bề mặt, mọi thứ dường như sánh đúng theo thiết kế của ngôi nhà. Người bố nhận xét: “Tốt đấy, bố sung sướng là con đã học được cách xây nhà rất tốt. Bây giờ, bố có tin vui cho con. Con đã xây ngôi nhà này cho con và gia đình con. Nó là món quà của bố cho con vì công việc con đã thực hiện cùng bố trong nhiều năm. Bây giờ con có thể chuyển tới sống trong ngôi nhà này.”

Tôi không biết liệu công ti của bạn xây dựng phần mềm cho khách hàng bên ngoài hay để dùng nội bộ. Kiểm thử được thiết kế để bắt lỗi, nếu bạn không kiểm thử thì có thể là phần mềm của bạn sẽ có lỗi. Nếu phần mềm có lỗi, ai đó sẽ phải sửa nó. Người dùng sẽ không dung thứ cho phần mềm còn khiếm khuyết. Sửa lỗi tốn tiền và thời gian cho nên ý tưởng “đủ tốt” là ý tưởng xấu và rất vô trách nhiệm. Làm mọi thứ trong vội vàng để đáp ứng lịch biểu là cách quản lí xấu. Không có những điều như phần mềm “đủ tốt”.

—-English version—-

Software quality

A recent graduate wrote to me: “I only work as a software developer for three months. The project manager considers schedule as the most important but does not pay attention to quality. We often stop testing when schedule is due. The rule of the company is “It is good enough.” What do you think about the “Good enough” rule? Please advice.”

Answer: Let’s me begin with a short story: A good house builder taught his son about the trade. His rule was simple: “Build each house as if you were building it for yourself”. After several years, he allowed his son to start building house on his own without his supervision. He told the young man: “You have learned everything from me so now you can do it by yourself. I will let you build a new house without me. I will see you when the house is finished, but just remember, build it as if you were building it for yourself.”

The son figured that without his father watching, he could do something that he like. He think: “I just do it “good enough” by changing things as no one would ever know.” So he bought cheap wood for framing materials, lower-rated cements, and low quality materials than his father would have used. Since paying less for the low quality materials, he can make more money for himself.

When the house was completed, the father came to see the finished house. On the surface, everything seemed to match the design of the house. The father commented: “It is great, I am happy that you learned to build house very well. Now, I have some good news for you. You have built this house for you and your family. It is my gift to you for the work you have done with me over the years. Now you can move to live in this house.”

I do not know whether your company is building software to an external customer or use internally. Testing is designed to catch bugs, if you do not test than it is possible that your software will have bugs. If software has bugs, somebody will have to fix it. Users will not tolerate defective software. Fixing bugs cost money and time so the idea of “Good enough” is a bad idea and very irresponsible. To do things in a hurry to meet schedule is bad management. There is no such thing as “good enough” software.