شدّة العيب وأولويته
مئة عيبٍ ووقتٌ محدود؛ بأيّ ترتيبٍ نُصلح، وكيف نقرّر؟ ⏱ نحو 35 دقيقة.
- تفرّق بين الشدّة والأولوية.
- تدرك أن الأثر على العمل قد يرفع الأولوية.
- تحوّل الحكم إلى قرار بمصفوفة.
- ترتّب الإصلاح حسب الأثر لا الاكتشاف.
١ليست كل العيوب سواء
مئة عيبٍ في قائمتك، ووقتٌ محدود. أيّها أوّلًا؟ هنا نفرّق بين بُعدين كثيرًا ما يُخلطان:
| الشدّة Severity | الأولوية Priority | |
|---|---|---|
| تقيس | حجم الضرر التقنيّ | عجلة الإصلاح للعمل |
| يقرّرها | المُختبِر/التقنيّ | مدير المنتج/العمل |
| مثال عالٍ | انهيار الخادم | خطأٌ إملائيّ في الشعار |
المفتاح: عيبٌ قد يكون عالي الشدّة منخفض الأولوية (انهيارٌ في ميزةٍ لا يستخدمها أحد)، أو منخفض الشدّة عالي الأولوية (خطأٌ إملائيّ في اسم الشركة على الصفحة الرئيسية — بسيطٌ تقنيًّا لكنه محرج فيُصلَح فورًا).
٢مصفوفة القرار
نرتّب الإصلاح بدمج الشدّة مع تكرار الحدوث والأثر على العمل. مصفوفةٌ بسيطة تحوّل الحكم إلى قرار:
def priority(severity, blocks_purchase): "severity: 1=بسيط .. 4=حرج | blocks_purchase: هل يمنع الشراء؟" if severity >= 4 or blocks_purchase: return "P1 — فورًا" if severity == 3: return "P2 — هذا الأسبوع" if severity == 2: return "P3 — لاحقًا" return "P4 — عند التفرّغ" print(priority(4, False)) # حرج ولو لا يمنع الشراءprint(priority(1, True)) # بسيط لكنه يمنع الشراء ← عاجلprint(priority(2, False))
لاحظ السطر الثاني: عيبٌ بسيط الشدّة لكنه يمنع الشراء صار P1. الأثر على العمل يرفع الأولوية ولو كانت الشدّة التقنية منخفضة.
٣من الفرز إلى العمل
هذا جزءٌ من «تحليل وتقييم النتائج»: لا نكتفي بعدّ العيوب، بل نرتّبها حتى يذهب الوقت المحدود إلى الأهمّ أثرًا.
توقّع وتحقّق
الشدّة تقيس:
الأولوية تقيس:
خطأ إملائيّ في اسم الشركة بالصفحة الرئيسية:
نُصلح أوّلًا ما:
الخلاصة
- الشدّة تقيس الضرر التقنيّ، والأولوية تقيس عجلة الإصلاح للعمل.
- عيبٌ قد يكون عالي الشدّة منخفض الأولوية أو العكس.
- الأثر على مهمّة المستخدم (كمنع الشراء) يرفع الأولوية ولو قلّت الشدّة.
- نُصلح أوّلًا ما يمنع المستخدم، ثم ما يضرّ الثقة، ثم التجميلات.
تحدٍّ برمجي: رتّب العيوب
متوسطأكمل priority: تعيد "P1" إن كانت الشدّة ≥ 4 أو العيب يمنع الشراء، و"P2" إن كانت الشدّة 3، و"P3" لغير ذلك. اطبع أولوية ثلاث حالات.
- طبّق القاعدة أعلاه.
- اطبع أولوية
(2, True)و(3, False)و(1, False).
ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:
def priority(severity, blocks_purchase): # P1 إن severity>=4 أو blocks_purchase، P2 إن severity==3، وإلا P3 passprint(priority(2, True))print(priority(3, False))print(priority(1, False))
💡 تلميح 1
severity>=4 or blocks_purchase → "P1".💡 تلميح 2
severity==3 → "P2"، وإلا "P3".حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
def priority(severity, blocks_purchase): if severity >= 4 or blocks_purchase: return "P1" if severity == 3: return "P2" return "P3"print(priority(2, True))print(priority(3, False))print(priority(1, False))