Чому покладатися на те, щоб ваші користувачі повідомляли про помилки - це найглуміша річ, яку ви коли-небудь робите

Якщо у вас є нещасні користувачі, як би ви це знали?

Ми всі любимо кодувати.

Коли ми думаємо про кодування, ми зазвичай зображаємо себе, як будувати.

Створення функцій, нових інновацій, нової функціональності та захоплюючих оновлень, які користувачі сподобаються. Саме ця ментальна картина збуджує нас із того, що ми можемо будувати далі.

Але романтичні образи в наших головах часто не перекладаються на реальність.

Розробники програмного забезпечення витрачають більшу частину свого часу на інші завдання, крім створення. Вони відвідують зустрічі, обговорюють технічні характеристики, планують та прибирають наявний код. І звичайно, їх улюблене заняття - це виправлення помилок.

Я ще не маю зустрітися з розробником, який любить знаходити проблеми у своїй кодовій базі. Але це розчарування, ймовірно, випливає з того, що пошук та відтворення помилок потребує тривалого часу.

Історично розробникам програм довелося шукати голку в копиці сіна. Вони повинні були самі знайти відповіді, а не покладатися на ці скріншоти користувачів, розміщених у документі Microsoft Word.

Ми всі були там!

Який браузер та версію ви використовуєте? Яка ОС? Чи можете ви мені точно сказати, де ви натиснули? Тоді що сталося? На якій сторінці ви були раніше? Як ви навіть потрапили на цей екран?

Стільки питань, так мало (корисних) відповідей.

Налагодження проблеми може зайняти назавжди!

Покладаючись на повідомлення користувачів про проблеми

Багато команд із розробки програмного забезпечення все ще покладаються на користувачів, щоб повідомити про проблеми зі своїми додатками.

Яка в ці дні божевільна.

Це просто як мережі ресторанів швидкого харчування. Вони покладають на клієнтів необхідність очищати власні столи, надаючи лотки та станції для вивезення сміття. Їжа ресторану може бути жахливою. Але замовник міг спокійно прибрати свій стіл, скинути сміття і пішов. Якщо вони не знайдуть час для скарги, співробітники припускають, що ще один щасливий клієнт просто покинув ресторан.

Але вони ніколи не повернуться.

Деякі розробники розраховують, що користувачі можуть захищати себе під час використання своїх програм. Зрештою, якщо ніхто не повідомляє про проблеми, у нас немає - правда? Надання вашим користувачам інформації про проблеми, які вони відчувають, обмежує. Ви побачите приблизно один відсоток від загальної кількості випадків, що впливають на всю вашу базу користувачів, а технічні деталі будуть тонкими та непослідовними.

Розробники витратять більше часу, намагаючись налагодити проблему - використовуючи невеликі шматочки інформації - ніж виправляючи її. Це якщо вони взагалі можуть знайти проблему.

Ваше програмне забезпечення не таке добре, як ви думаєте

Я розмовляв зі своїм другом, який працює у великому інтернет-магазині. Він пояснив мені, як вони знайшли велику проблему в системі замовлення в Інтернеті, про яку ніхто не знав.

Після кількох днів розслідування вони не змогли точно визначити проблему. Тоді вони вирішили спробувати спеціалізований інструмент для виявлення та діагностики помилок у їх застосуванні.

Те, що вони знайшли, викликало тривогу.

Інструмент визначив, що на одному з восьми серверів не вистачає пам’яті та помилки. Це призвело до того, що потік касового апарату користувача завершився.

Кожен восьмий сеанс перевірки користувачів був порушений.

Пошук та виправлення цієї проблеми призвело до негайного покращення продажів у розмірі 20 000 доларів на місяць! Люди більше не стикалися з проблемами в процесі покупки.

Вони підрахували, що це вплинуло на понад 5000 користувачів - проте вони отримали лише два квитки підтримки.

Хоча команда із задоволенням знайшла проблему, також було розчарування. Невідома помилка, ймовірно, призвела до втрати доходу в розмірі 100 000 доларів.

Надіслати електронною поштою себе, коли виникають помилки - дурна ідея

Ви можете сидіти, спостерігаючи за потоковим потоком проблем, що трапляються в журналах прокладки коду. І ви можете найняти тепле тіло, щоб це зробити, поки ви спите. Або ви можете надіслати повідомлення електронною поштою, коли трапляється необроблений виняток - здається чудовою ідеєю!

Поки ти цього не зробиш.

Якщо ви налаштуєте це, це може виглядати приблизно так:

публічна недійсність TryProcessLineNumber (int lineNumber)
{
    спробуйте
    {
        ProcessLineNumber (рядокNumber);
    }
    улов (виняток ex)
    {
        LetMyselfKnowViaEmail ("Щось пішло не так:" + ex.Message);
    }
}

Але остерігайтеся проблем, які він може створити.

Помилки електронної пошти можуть бути придатними для менших побічних проектів та особистих проектів. Але як тільки ви розширюєтесь поза цим, все починає псуватися. Дуже, дуже безладно:

  • Діагностичні деталі обмежені
  • Важко налаштувати правила сповіщення, і все починає шуміти
  • Виняток, що потрапив у нескінченний цикл, може надсилати 50 000 електронних листів у вашу поштову скриньку протягом доби
  • Помилки не мають рівня пріоритетності чи видимості удару, і всі вони виглядають рівними
  • Після того, як ви отримаєте більше ста листів, ви відмовляєтесь від їх читання

Невдовзі після того, як ви почнете надсилати собі електронні помилки, ви починаєте їх ігнорувати. Або ви фільтруєте їх у папку, оскільки там так багато шуму і сигналу немає.

Вам залишилось шукати тисячі електронних листів, шукаючи потрібний екземпляр помилки.

Нам потрібно щось розумніше.

ELMAH - реєстрація винятків

ELMAH (модулі реєстрації помилок та обробники) - це програма для реєстрації помилок на основі програми, яка повністю підключається. Його можна динамічно додавати до запущеного веб-додатку ASP.NET або навіть до всіх веб-додатків ASP.NET на машині, без необхідності перекомпіляції чи перерозподілу.

ELMAH не підтримує будь-яку мову програмування та платформу. Оскільки його функціональність досить обмежена під час висвітлення першопричини проблеми, вона зазвичай використовується для менших проектів. Він також не дуже активно розвивається в наші дні, але принаймні це щось, і це безкоштовно.

Elmah реєстрація помилок

ELMAH - це в основному пакет NuGet для веб-застосунків .NET. Він реєструє всі винятки, що трапляються на одному чи кількох веб-сайтах у вибраному вами сховищі. На відміну від інших фреймворків журналу, ELMAH автоматично реєструється у всіх винятках під час налаштування у найпростішому вигляді. Звичайно, є API, який можна використовувати для реєстрації користувацьких помилок. Але більшість людей користуються лише автоматичною частиною. У цьому підручнику ми зупинимося лише на основних частинах.

Ось чудовий підручник із того, як розпочати роботу.

Виділені засоби звітності про помилки та аварії

Якщо ви серйозно ставитесь до обробки помилок і збоїв у своїх програмах, використовуйте спеціальний інструмент моніторингу помилок. Він автоматично виявляє та діагностує проблеми, що впливають на ваших користувачів, додаючи постачальника до коду програми.

Це кілька рядків коду - ось усе, що потрібно.

Використання такого інструменту дозволяє:

  • Виріжте шумні винятки та зосередьтеся на важливих речах, наприклад, що впливають на користувачів
  • Налаштування настроюваних повідомлень електронною поштою, Slack або HipChat
  • Використовуйте один інструмент для відстеження декількох мов та платформ
  • Скористайтеся групуванням помилок для подібних помилок
  • Тримайте всю свою команду над помилками та їх вирішенням
Використовуйте спеціальну програмну систему для моніторингу помилок, наприклад, Raygun

Такі інструменти не є дешевими або безкоштовними, як інші програми, про які ми обговорювали, але яку ціну ви приділяєте своєму часу? Скажіть, ви використовуєте безкоштовне рішення. Тоді вам доведеться припинити кодування на три години, намагаючись відтворити помилку. Це насправді дуже погана віддача від інвестицій.

Команди, які прагнуть швидко рухатися та надавати користувачам нові функціональні можливості, скажуть, що такі професійні рішення варті кожного цента. Вони можуть скоротити час, який розробники витрачають на виправлення помилок і повернути їх до поліпшення кодування та побудови.

Навіть якщо ви вважаєте, що ваш код ідеальний, і користувачі не мають жодних проблем, підключіть такий інструмент, як Raygun. Ви будете здивовані тим, що знайдете.

Візьміть активний підхід і отримайте нагороди

Ми всі любимо технології, щоб автоматично вирішувати проблеми з програмним забезпеченням. На жаль, я думаю, що ми трохи пішли від програмного забезпечення для самолікування та усвідомлення себе.

Ви також можете підключити рішення для моніторингу помилок до робочих процесів розробника, щоб полегшити вирішення помилок та збоїв. Але дані часто забруднюються та відокремлюються від контексту в інших системах.

Майбутнє моніторингу помилок полягає у тому, щоб усі команди - передній, зворотний, управління чи підтримка - мали повну видимість щодо кожної проблеми, з якою стикаються їх користувачі. А потім мати можливість вирішити це відразу.

Це також поширюється на майбутні тенденції щодо постійного простору доставки та розгортання. Ви можете застосувати виправлення та відправити до виробництва протягом декількох хвилин після виявлення проблеми. Вам не доведеться чекати тижнями до наступного великого розгортання.

Зосередьтеся на своїй команді під час обробки помилок та збоїв у власних програмах. Відкрийте для себе проблеми, перш ніж ваші користувачі, і не покладайтеся на них, щоб вони повідомляли про помилки.

Тому що вони не будуть.