لماذا الاعتماد على المستخدمين للإبلاغ عن الأخطاء هو أغبى شيء تفعله على الإطلاق

إذا كان لديك مستخدمين غير سعداء ، كيف تعرف؟

نحن جميعا نحب أن رمز.

عندما نفكر في الترميز ، فإننا عادة ما نصور أنفسنا نبني.

بناء الميزات والابتكارات الجديدة والوظائف الجديدة والتحديثات المثيرة التي سيحبها المستخدمون. إنها تلك الصورة الذهنية التي تجعلنا متحمسين للأشياء التي يمكننا بناءها بعد ذلك.

لكن الصور الرومانسية في رؤوسنا لا تُترجم إلى واقع.

يقضي مطورو البرامج معظم وقتهم في مهام أخرى غير البناء. يحضرون الاجتماعات ويناقشون المواصفات ويخططون وينظموا التعليمات البرمجية الموجودة. وبالطبع ، فإن نشاطهم المفضل هو إصلاح الخلل.

لم أقابل بعد مطورًا يحب إيجاد المشكلات في قاعدة بياناته. لكن هذا الإحباط ينبع على الأرجح من حقيقة أن إيجاد الأخطاء وإعادة إنتاجها يستغرق وقتًا طويلاً.

تاريخياً ، كان على مطوري البرامج البحث عن الإبرة الموجودة في كومة قش. لقد تعين عليهم العثور على الإجابات بأنفسهم ، بدلاً من الاعتماد على لقطات الشاشة هذه من المستخدمين الذين تم نشرهم في مستند Microsoft Word.

كلنا كنا هناك!

ما المتصفح والإصدار الذي تستخدمه؟ ما OS؟ هل يمكن أن تخبرني بالضبط أين نقرت؟ ثم ماذا حدث؟ ما هي الصفحة التي كنت من قبل؟ كيف وصلت إلى هذه الشاشة؟

الكثير من الأسئلة ، عدد قليل من الإجابات (المفيدة).

تصحيح مشكلة يمكن أن يستغرق إلى الأبد!

الاعتماد على المستخدمين للإبلاغ عن المشاكل

لا يزال العديد من فرق تطوير البرمجيات تعتمد على المستخدمين للإبلاغ عن مشاكل في تطبيقاتهم.

وهو مجنون نوعا ما في هذه الأيام.

إنه مثل سلاسل مطاعم الوجبات السريعة. يضعون عبء على العملاء لمسح الجداول الخاصة بهم من خلال توفير الصواني ومحطات التخلص من القمامة. قد يكون طعام المطعم فظيعًا. لكن العميل لم يتمكن من تطهير طاولاته بهدوء ، وتخلص من سلة المهملات ، وسار بعيدًا. ما لم يستغرقوا وقتًا للشكوى ، يفترض الموظفون أن هناك عميلًا سعيدًا غادر لتوه من المطعم.

لكنهم لن يعودوا أبدا.

يتوقع بعض المطورين من المستخدمين إعالة أنفسهم عند استخدام تطبيقاتهم. بعد كل شيء ، إذا كان لا أحد يبلغ عن مشاكل ، فليس لدينا أي حق؟ وضع عبء على المستخدمين للإبلاغ عن المشاكل التي يواجهونها مقيد. ستشاهد حوالي واحد بالمائة من إجمالي المثيلات التي تؤثر على قاعدة المستخدم بالكامل ، وستكون التفاصيل الفنية رفيعة وغير متسقة.

سيقضي المطورون وقتًا أطول في محاولة تصحيح المشكلة - باستخدام أجزاء صغيرة من المعلومات - بدلاً من إصلاحها. هذا إذا تمكنوا من إيجاد المشكلة على الإطلاق.

البرنامج ليس جيدًا كما تعتقد

كنت أتحدث مع صديق لي الذي يعمل مع تاجر تجزئة كبير على الإنترنت. أوضح لي كيف وجدوا مشكلة كبيرة في نظام الطلب عبر الإنترنت لم يعرفه أحد.

بعد عدة أيام من التحقيق ، لم يتمكنوا من تحديد المشكلة. في تلك المرحلة ، قرروا تجربة أداة مخصصة لاكتشاف وتشخيص الأخطاء في تطبيقها.

ما وجدوه كان ينذر بالخطر.

حددت الأداة أن أحد الخوادم الثمانية ينفد من الذاكرة ويلقي الأخطاء. تسبب هذا في تدفق تدفق السحب للمستخدم إلى توقف تام.

تم قطع جلسة واحدة من بين كل ثمانية جلسات خروج للمستخدم.

أسفر العثور على هذه المشكلة وحلها عن ارتفاع فوري في المبيعات قدره 20.000 دولار شهريًا! لم يعد الأشخاص يواجهون مشكلات أثناء عملية الشراء.

قدروا أنها أثرت على أكثر من 5000 مستخدم - ومع ذلك لم يتلقوا سوى تذكرة دعم اثنين حول هذا الموضوع.

على الرغم من أن الفريق كان سعيدًا للعثور على المشكلة ، إلا أن هناك خيبة أمل ساحقة. من المحتمل أن يكون هناك خطأ مجهول قد أدى إلى زيادة قدرها 100000 دولار في الإيرادات الضائعة.

البريد الإلكتروني نفسك عند حدوث أخطاء هي فكرة غبية

يمكنك الجلوس بمشاهدة دفق مباشر من المشاكل التي تحدث في سجلات مخلفات الكود. ويمكنك استئجار جسم دافئ للقيام بذلك أثناء نومك. أو ، يمكنك إرسال بريد إلكتروني لنفسك عند حدوث استثناء غير معالج - تبدو فكرة رائعة!

حتى تفعل ذلك.

إذا قمت بإعداد هذا الأمر ، فقد يبدو كالتالي:

الفراغ العام TryProcessLineNumber (int lineNumber)
{
    محاولة
    {
        ProcessLineNumber (LINENUMBER)؛
    }
    catch (استثناء السابقين)
    {
        LetMyselfKnowViaEmail ("حدث خطأ ما:" + ex.Message) ؛
    }
}

ولكن حذار من المشاكل التي يمكن أن تخلق.

قد تكون أخطاء إرسال بريد إلكتروني مناسبة للمشاريع الجانبية الصغيرة والمشاريع الشخصية. ولكن بمجرد التوسع خارج ذلك ، تبدأ الأمور في الفوضى. فوضوي جدا جدا:

  • تفاصيل التشخيص محدودة
  • من الصعب إعداد قواعد الإخطار وتبدأ الأمور في الصخب
  • الاستثناء الذي يتم اكتشافه في حلقة لا نهائية يمكن أن يرسل 50،000 رسالة بريد إلكتروني إلى صندوق الوارد الخاص بك بين عشية وضحاها
  • الأخطاء ليس لها مستوى أولوية أو تأثير رؤية وكلها تبدو متساوية
  • بعد أن تصل إلى أكثر من مائة رسالة بريد إلكتروني ، تتخلى عن قراءتها

بعد وقت قصير من البدء في إرسال الأخطاء بالبريد الإلكتروني ، تبدأ في تجاهلها. أو يمكنك تصفيتها في مجلد بسبب وجود الكثير من الضوضاء وعدم وجود إشارة.

لقد تركت للبحث عن آلاف رسائل البريد الإلكتروني التي تبحث عن مثيل الخطأ الصحيح.

نحن بحاجة إلى شيء أكثر ذكاء.

ELMAH - تسجيل الاستثناءات الخاصة بك

ELMAH (وحدات تسجيل الأخطاء ومعالجاتها) هي أداة لتسجيل الأخطاء على مستوى التطبيق قابلة للتوصيل تمامًا. يمكن إضافته ديناميكيًا إلى تطبيق ويب ASP.NET قيد التشغيل ، أو حتى جميع تطبيقات ويب ASP.NET على جهاز ، دون الحاجة إلى إعادة التجميع أو إعادة النشر.

ELMAH لا يدعم كل لغة برمجة ومنصة. نظرًا لأن وظيفتها محدودة إلى حد ما عند البحث في السبب الجذري للمشكلة ، يتم استخدامها عادةً في المشروعات الأصغر. كما أنه ليس في مرحلة التطوير النشط هذه الأيام ، ولكنه على الأقل شيء ، وهو مجاني.

الماح تسجيل الأخطاء

ELMAH عبارة عن حزمة NuGet لتطبيقات الويب .NET. يقوم بتسجيل كل استثناء يحدث على موقع ويب واحد أو أكثر على وحدة التخزين التي تختارها. بخلاف أطر تسجيل أخرى ، تقوم ELMAH بتسجيل الدخول إلى كل استثناء تلقائيًا عند تكوينه بأبسط أشكاله. بالتأكيد ، هناك واجهة برمجة تطبيقات يمكنك استخدامها لتسجيل الأخطاء المخصصة. لكن معظم الناس يستخدمون الجزء التلقائي فقط. في هذا البرنامج التعليمي ، سنركز فقط على الأجزاء الأساسية.

إليك برنامج تعليمي رائع حول كيفية البدء.

أدوات مخصصة للخطأ والتحطم

إذا كنت جادًا في معالجة الأخطاء والتعطل في تطبيقاتك ، فاستخدم أداة مخصصة لمراقبة الأخطاء. يكتشف ويشخص المشاكل التي تؤثر على المستخدمين الخاصة بك تلقائيا عن طريق إضافة مزود لرمز التطبيق الخاص بك.

إنها بضعة أسطر من التعليمات البرمجية - هذا كل ما يتطلبه الأمر.

يتيح لك استخدام أداة مثل هذه:

  • قم بقص الاستثناءات الصاخبة والتركيز على الأشياء المهمة ، مثل التأثير على المستخدمين
  • قم بإعداد إعلامات قابلة للتكوين عبر البريد الإلكتروني أو Slack أو HipChat
  • استخدم أداة واحدة لتتبع لغات ومنصات متعددة
  • استفد من تجميع الأخطاء بحثًا عن أخطاء مماثلة
  • اجعل فريقك بأكمله على قمة الأخطاء وحلها
استخدم نظامًا مخصصًا لرصد الأخطاء مثل Raygun

أدوات مثل هذه ليست رخيصة أو مجانية مثل البرامج الأخرى التي ناقشناها ، ولكن ما السعر الذي تضعه في وقتك؟ قل أنك تستخدم حلًا مجانيًا. ثم يجب عليك إيقاف الترميز لمدة ثلاث ساعات أثناء محاولة إعادة إنشاء خطأ. هذا هو في الواقع عائد ضعيف جدا على الاستثمار.

ستقول الفرق التي تتطلع إلى التحرك بسرعة وتقديم وظائف جديدة للمستخدمين أن مثل هذه الحلول المهنية تستحق كل سنت. يمكنهم خفض الوقت الذي يقضيه مطورو البرامج في إصلاح الأخطاء وإعادتهم إلى تحسينات الترميز والبناء.

حتى لو كنت تعتقد أن الكود الخاص بك مثالي ، ولا يواجه المستخدمون أية مشكلات ، قم بتوصيل أداة مثل Raygun. سوف تفاجأ بما تجده.

اتخاذ نهج استباقي وجني المكافآت

كلنا نحب التكنولوجيا لإصلاح مشاكل برامجنا تلقائيًا. لسوء الحظ ، أعتقد أننا بعيدون عن برمجيات الشفاء الذاتي والوعي الذاتي.

يمكنك أيضًا توصيل حلول مراقبة الأخطاء بسير عمل مطور البرامج لتسهيل حل الأخطاء والتعطل. لكن البيانات غالبًا ما تكون متسخة ومعزولة عن السياق في الأنظمة الأخرى.

يكمن مستقبل مراقبة الأخطاء في التأكد من أن جميع الفرق - الواجهة الأمامية أو الخلفية أو الإدارة أو الدعم - لديها رؤية كاملة لكل مشكلة يواجهها المستخدمون. ثم لديهم القدرة على حلها على الفور.

يمتد هذا أيضًا إلى الاتجاهات القادمة في مجال التوزيع والنشر المستمر. يمكنك تطبيق الإصلاحات وشحنها إلى الإنتاج خلال دقائق من تحديد المشكلة. ليس عليك الانتظار أسابيع قبل النشر الرئيسي التالي.

ركز على فريقك عند التعامل مع الأخطاء والتعطل في التطبيقات الخاصة بك. اكتشف المشكلات قبل المستخدمين ، ولا تعتمد عليهم للإبلاغ عن الأخطاء.

لأنهم لن يفعلوا ذلك.