Tôi biết rằng đây là một câu hỏi cũ và tôi sẽ may mắn nếu 3 người đọc câu trả lời này, nhưng đó là một câu chuyện thú vị để kể, vậy thì quái gì.
Tôi đã tham gia vào một dự án (hệ thống nhúng, phần mềm quan trọng an toàn, cổ phần rất cao) và tôi đã kinh hoàng trước những gì tôi tìm thấy. Những người sử dụng C (đặc biệt là con trỏ) không chính xác, không phân tích tĩnh, không đánh giá mã, không thử nghiệm ngoài việc "tích hợp nó với nhau, chạy nó, đánh bại nó, xem những gì phá vỡ".
Tôi đã viết một email rất dài trong tuần đầu tiên của tôi ở đó (với tư cách là một nhà tư vấn). Thật là khó chịu vì về cơ bản tôi đã nói rằng nó bị quản lý sai, các nhà phát triển đã ở trên đầu họ, không có quy trình nào được theo dõi, v.v. Nó nên đến VP của công ty, nhưng thay vào đó tôi đã gửi nó cho người quản lý phát triển đã thuê tôi. Anh ấy không hoàn toàn phòng thủ về điều đó, thực tế anh ấy đã thừa nhận nhiều thiếu sót và nói với tôi rằng tôi không phải là người đầu tiên chỉ ra chúng (không đùa, phải không?)
Để trả lời mấu chốt của câu hỏi ban đầu: Tôi đã đề nghị dành ATST 1 tuần một tuần để có được công cụ phân tích tĩnh Gimpel's Lint (PC-Lint / Flexelint) được định cấu hình & chạy trên nền tảng của họ và để chạy báo cáo đầy đủ về mọi thứ được tìm thấy . Tôi nói với họ rằng tôi hoàn toàn chắc chắn rằng chúng tôi sẽ tìm thấy một số "khung thời gian" ẩn giấu.
Họ đã tính tỷ lệ hàng giờ của tôi, nhân nó lên 40 và xác định nó "quá đắt để làm điều đó". Câu chuyện dài, tôi rời khỏi đó trong vòng 60 ngày. Khoảng 3 năm sau, tôi biết được việc thu hồi sản phẩm, chi phí lên tới 9 con số (100 triệu đô la), chưa kể thiệt hại cho danh tiếng của công ty.
Tôi sẽ không đề cập đến công ty, sản phẩm hoặc ngành công nghiệp, nhưng tôi vẫn giữ liên lạc với một trong những kỹ sư ở đó và khi anh ấy giải thích cho tôi điều gì đã gây ra sự thu hồi, tôi trợn mắt - đó là một vấn đề sẽ xảy ra thậm chí còn bị bắt bởi một công cụ phân tích tĩnh cơ bản (truy cập một mảng ngoài giới hạn). Công bằng mà nói, tôi không thể nói chắc chắn rằng vấn đề nằm ở mã khi tôi ở đó, nhưng tôi chắc chắn nếu họ đã chi tiền cho một loại công cụ phân tích tĩnh nào đó, lỗi đó sẽ không thoát ra.
Vì vậy, họ đã tiết kiệm $ 295 bằng cách không mua PC-Lint (OK, họ cũng đã tiết kiệm được một tuần để trả tiền cho tôi) - nhưng tôi không đủ khả năng để tính phí 100 triệu đô la trong một tuần.
Đó là những gì tôi gọi là một sự lãng phí tiền bạc khá lớn.
Nhắc tôi về một trò đùa mà nhiều bạn có thể đã nghe:
Bạn đã bao giờ nghe câu chuyện về động cơ tàu khổng lồ thất bại chưa? Các chủ tàu đã thử một chuyên gia khác, nhưng không ai trong số họ có thể tìm ra cách khắc phục động cơ. Sau đó, họ mang đến một ông già đã sửa chữa tàu từ khi còn là một cậu bé. Anh ta mang theo một túi dụng cụ lớn, và khi đến nơi, anh ta lập tức đi làm. Anh kiểm tra động cơ rất cẩn thận, từ trên xuống dưới.
Hai trong số các chủ tàu đã ở đó, theo dõi người đàn ông này, hy vọng anh ta sẽ biết phải làm gì. Sau khi nhìn mọi thứ, ông lão thò tay vào túi và rút ra một cây búa nhỏ. Anh nhẹ nhàng gõ một cái gì đó. Ngay lập tức, động cơ chao đảo vào cuộc sống. Anh cẩn thận cất cây búa của mình đi. Động cơ đã được sửa! Một tuần sau, các chủ sở hữu nhận được hóa đơn từ ông già với giá 10.000 đô la.
"Gì?!" các chủ sở hữu kêu lên. "Anh ấy hầu như không làm gì cả!"
Vì vậy, họ đã viết cho ông lão một ghi chú rằng: "Xin vui lòng gửi cho chúng tôi một hóa đơn được ghi thành từng khoản."
Người đàn ông đã gửi một hóa đơn có nội dung:
Tapping with a hammer ........ $ 2.00
Knowing where to tap ......... $ 9998.00
Nỗ lực là quan trọng, nhưng biết những gì bạn đang làm sẽ tạo ra sự khác biệt.