Tại sao dựa vào người dùng của bạn để báo cáo lỗi là điều ngu ngốc nhất mà bạn sẽ làm

Nếu bạn có người dùng không hài lòng, làm sao bạn biết?

Chúng tôi đều thích mã.

Khi chúng ta nghĩ về tiền mã hóa, chúng ta thường hình dung mình đang xây dựng.

Xây dựng các tính năng, cải tiến mới, chức năng mới và cập nhật thú vị mà người dùng sẽ yêu thích. Nó nói rằng bức tranh tinh thần khiến chúng ta phấn khích về những thứ chúng ta có thể xây dựng tiếp theo.

Nhưng những hình ảnh lãng mạn trong đầu chúng ta thường không được chuyển thành hiện thực.

Các nhà phát triển phần mềm dành phần lớn thời gian của họ cho các nhiệm vụ khác ngoài việc xây dựng. Họ tham dự các cuộc họp, thảo luận về thông số kỹ thuật, kế hoạch và sắp xếp mã hiện có. Và tất nhiên, hoạt động yêu thích của họ là sửa lỗi.

Tôi đã gặp một nhà phát triển yêu thích tìm kiếm các vấn đề trong cơ sở mã của họ. Nhưng sự thất vọng này có thể bắt nguồn từ thực tế là việc tìm kiếm và tái tạo lỗi mất nhiều thời gian.

Trong lịch sử, các nhà phát triển phần mềm đã phải tìm kiếm kim trong đống cỏ khô. Họ đã phải tự tìm câu trả lời, thay vì dựa vào những ảnh chụp màn hình đó từ những người dùng được đăng trong tài liệu Microsoft Word.

Chúng tôi đã có tất cả ở đó!

Bạn đang sử dụng trình duyệt và phiên bản nào? HĐH gì? Bạn có thể cho tôi biết chính xác nơi bạn nhấp? Rồi chuyện gì đã xảy ra? Bạn đã ở trang nào trước đây? Làm thế nào bạn thậm chí có được màn hình này?

Rất nhiều câu hỏi, rất ít câu trả lời (hữu ích).

Gỡ lỗi một vấn đề có thể mất mãi mãi!

Dựa vào người dùng để báo cáo vấn đề

Nhiều nhóm phát triển phần mềm vẫn dựa vào người dùng để báo cáo sự cố với ứng dụng của họ.

Đó là những ngày điên rồ.

Nó giống như chuỗi nhà hàng thức ăn nhanh. Họ đặt trách nhiệm cho khách hàng để dọn bàn của họ bằng cách cung cấp khay và trạm xử lý rác. Các món ăn nhà hàng có thể rất tệ. Nhưng khách hàng có thể bình tĩnh dọn bàn, bỏ rác và bỏ đi. Trừ khi họ dành thời gian để phàn nàn, nhân viên cho rằng một khách hàng hạnh phúc khác vừa rời khỏi nhà hàng.

Nhưng họ sẽ không bao giờ trở lại.

Một số nhà phát triển mong muốn người dùng tự bảo vệ mình khi sử dụng ứng dụng của họ. Rốt cuộc, nếu không có ai báo cáo vấn đề, chúng tôi không có gì phải không? Đặt trách nhiệm cho người dùng của bạn để báo cáo các vấn đề họ gặp phải là hạn chế. Bạn sẽ thấy khoảng một phần trăm trong tổng số các trường hợp ảnh hưởng đến toàn bộ cơ sở người dùng của bạn và các chi tiết kỹ thuật sẽ mỏng và không nhất quán.

Các nhà phát triển sẽ dành nhiều thời gian hơn để cố gắng gỡ lỗi vấn đề - sử dụng các mẩu thông tin nhỏ - hơn là sửa nó. Rằng nếu họ có thể tìm thấy vấn đề ở tất cả.

Phần mềm của bạn không tốt như bạn nghĩ.

Tôi đang nói chuyện với một người bạn của tôi làm việc cho một nhà bán lẻ trực tuyến lớn. Anh ấy giải thích cho tôi cách họ làm việc tìm thấy một vấn đề lớn trong hệ thống đặt hàng trực tuyến mà không ai biết đến.

Sau nhiều ngày điều tra, họ không thể xác định được vấn đề. Tại thời điểm đó, họ quyết định dùng thử một công cụ chuyên dụng để phát hiện và chẩn đoán lỗi trong ứng dụng của họ.

Những gì họ tìm thấy là đáng báo động.

Công cụ xác định rằng một trong tám máy chủ đã hết bộ nhớ và ném lỗi. Điều này khiến cho dòng kiểm tra của người dùng bị đình trệ hoàn toàn.

Một trong tám phiên thanh toán người dùng đã bị hỏng.

Tìm kiếm và khắc phục vấn đề này dẫn đến doanh số tăng ngay lập tức 20.000 đô la một tháng! Mọi người không còn gặp vấn đề trong quá trình mua hàng.

Họ ước tính rằng nó đã ảnh hưởng đến hơn 5.000 người dùng - tuy nhiên họ chỉ nhận được hai vé hỗ trợ về nó.

Mặc dù nhóm rất vui khi tìm thấy vấn đề, nhưng cũng có một sự thất vọng tan nát. Một lỗi không xác định có khả năng dẫn đến doanh thu bị bỏ lỡ lên tới 100.000 đô la.

Gửi email cho chính mình khi xảy ra lỗi là một ý tưởng ngu ngốc

Bạn có thể ngồi xem một luồng trực tiếp các vấn đề xảy ra trong nhật ký đuôi mã của bạn. Và bạn có thể thuê một cơ thể ấm áp để làm như vậy trong khi bạn ngủ. Hoặc, bạn có thể tự gửi email cho mình khi xảy ra ngoại lệ chưa được xử lý - có vẻ như là một ý tưởng tuyệt vời!

Cho đến khi bạn làm điều đó.

Nếu bạn thiết lập nó, nó có thể trông như thế này:

khoảng trống công khai TryProcessLineNumber (int lineNumber)
{
    thử
    {
        ProcessLineNumber (lineNumber);
    }
    bắt (ngoại lệ)
    {
        LetMyselfKnowViaEmail ("Đã xảy ra lỗi:" + ex.Message);
    }
}

Nhưng hãy cẩn thận với những vấn đề nó có thể tạo ra.

Lỗi email có thể phù hợp cho các dự án phụ nhỏ hơn và các dự án cá nhân. Nhưng một khi bạn mở rộng ra bên ngoài, mọi thứ bắt đầu trở nên lộn xộn. Rất, rất lộn xộn:

  • Chi tiết chẩn đoán còn hạn chế
  • Thật khó để thiết lập các quy tắc thông báo và mọi thứ bắt đầu ồn ào
  • Một ngoại lệ bị bắt trong một vòng lặp vô hạn có thể gửi 50.000 email đến hộp thư đến của bạn qua đêm
  • Lỗi không có mức độ ưu tiên hoặc mức độ ảnh hưởng và tất cả đều xuất hiện như nhau
  • Sau khi bạn đạt được hơn một trăm email, bạn từ bỏ việc đọc chúng

Không lâu sau khi bạn bắt đầu gửi email cho mình lỗi, bạn bắt đầu bỏ qua chúng. Hoặc bạn lọc chúng vào một thư mục vì có quá nhiều tiếng ồn và không có tín hiệu.

Bạn còn lại để truy tìm hàng ngàn email tìm kiếm trường hợp lỗi bên phải.

Chúng ta cần một cái gì đó thông minh hơn.

ELMAH - ghi nhật ký ngoại lệ của bạn

ELMAH (Mô-đun ghi nhật ký lỗi và Trình xử lý) là một phương tiện ghi nhật ký lỗi trên toàn ứng dụng hoàn toàn có thể cắm được. Nó có thể được tự động thêm vào một ứng dụng web ASP.NET đang chạy hoặc thậm chí tất cả các ứng dụng web ASP.NET trên máy mà không cần biên dịch lại hoặc triển khai lại.

ELMAH không hỗ trợ mọi ngôn ngữ lập trình và nền tảng. Do chức năng của nó khá hạn chế khi đi sâu vào nguyên nhân gốc rễ của một vấn đề, nên nó thường được sử dụng cho các dự án nhỏ hơn. Nó cũng không thực sự phát triển tích cực trong những ngày này, nhưng ít nhất nó cũng có một thứ gì đó, và nó miễn phí.

Elmah đăng nhập lỗi

ELMAH về cơ bản là gói NuGet cho các ứng dụng web .NET. Nó ghi nhật ký mọi ngoại lệ xảy ra trên một hoặc nhiều trang web vào bộ lưu trữ bạn chọn. Không giống như các khung ghi nhật ký khác, ELMAH tự động đăng nhập vào mọi ngoại lệ khi được định cấu hình ở dạng đơn giản nhất. Chắc chắn, có một API bạn có thể sử dụng để ghi lại các lỗi tùy chỉnh. Nhưng hầu hết mọi người chỉ sử dụng phần tự động. Trong hướng dẫn này, chúng tôi sẽ chỉ tập trung vào các phần cơ bản.

Đây là một hướng dẫn tuyệt vời về cách bắt đầu.

Công cụ báo cáo lỗi và sự cố chuyên dụng

Nếu bạn nghiêm túc về việc xử lý lỗi và sự cố trong ứng dụng của mình, hãy sử dụng công cụ giám sát lỗi chuyên dụng. Nó tự động phát hiện và chẩn đoán các vấn đề ảnh hưởng đến người dùng của bạn bằng cách thêm nhà cung cấp vào mã ứng dụng của bạn.

Nó có một vài dòng mã - đó là tất cả những gì nó cần.

Sử dụng một công cụ như thế này cho phép bạn:

  • Cắt bỏ những ngoại lệ ồn ào và tập trung vào những thứ quan trọng, như tác động đến người dùng
  • Thiết lập thông báo có thể định cấu hình qua email, Slack hoặc HipChat
  • Sử dụng một công cụ để theo dõi nhiều ngôn ngữ và nền tảng
  • Tận dụng nhóm lỗi cho các lỗi tương tự
  • Giữ cho toàn bộ nhóm của bạn trên đầu các lỗi và giải quyết của họ
Sử dụng hệ thống phần mềm theo dõi lỗi chuyên dụng như Raygun

Các công cụ như thế này không rẻ hoặc miễn phí như các chương trình khác mà chúng tôi đã thảo luận, nhưng giá nào bạn đặt vào thời gian của bạn? Nói rằng bạn sử dụng một giải pháp miễn phí. Sau đó, bạn phải ngừng mã hóa trong ba giờ trong khi bạn cố gắng tạo lại một lỗi. Đây thực sự là một lợi tức đầu tư rất kém.

Các nhóm đang tìm cách di chuyển nhanh chóng và cung cấp chức năng mới cho người dùng sẽ nói rằng các giải pháp chuyên nghiệp như vậy đáng giá từng xu. Họ có thể cắt giảm thời gian các nhà phát triển dành thời gian sửa lỗi và đưa họ trở lại mã hóa và cải tiến xây dựng.

Ngay cả khi bạn nghĩ rằng mã của mình là hoàn hảo và người dùng không gặp vấn đề gì, hãy cắm một công cụ như Raygun. Bạn sẽ ngạc nhiên với những gì bạn tìm thấy.

Thực hiện một cách tiếp cận chủ động và gặt hái những phần thưởng

Chúng tôi rất thích công nghệ để tự động khắc phục các sự cố phần mềm. Thật không may, tôi nghĩ rằng chúng tôi cách xa phần mềm tự phục hồi và tự nhận thức.

Bạn cũng có thể cắm các giải pháp giám sát lỗi vào quy trình công việc của nhà phát triển để làm cho lỗi và giải quyết sự cố dễ dàng hơn. Nhưng dữ liệu thường bị bẩn và tách biệt khỏi bối cảnh trong các hệ thống khác.

Tương lai của giám sát lỗi nằm ở việc đảm bảo tất cả các nhóm - mặt trước, mặt sau, quản lý hoặc hỗ trợ - có khả năng hiển thị đầy đủ về mọi vấn đề mà người dùng của họ gặp phải. Và sau đó có khả năng giải quyết nó ngay lập tức.

Điều này cũng mở rộng cho các xu hướng sắp tới trong không gian triển khai và phân phối liên tục. Bạn có thể áp dụng các bản sửa lỗi và chuyển đến sản xuất trong vòng vài phút sau khi xác định sự cố. Bạn không cần phải chờ vài tuần trước khi triển khai lớn tiếp theo.

Đặt trọng tâm vào nhóm của bạn khi xử lý lỗi và sự cố trong các ứng dụng của riêng bạn. Khám phá các vấn đề trước khi người dùng của bạn làm, và don Patrick dựa vào chúng để báo cáo lỗi.

Vì họ thắng được.