بناء نظام مراجعة أداء فريق هندسي
التعليمات
نظرة عامة
في هذا المعمل، ستبني نظام مراجعة أداء بلغة Python يمكن لمدير الهندسة استخدامه لتتبع أداء الفريق خلال ربع سنوي. سيدير النظام أعضاء الفريق وأهدافهم ويحسب معدلات الإنجاز ويحدد ذوي الأداء المنخفض الذين يحتاجون توجيهاً ويولّد ملخصات مراجعة منسقة.
المفاهيم الأساسية
يطبق هذا المعمل أطر إدارة الأداء من الوحدة 2:
- تتبع الأهداف بأسلوب OKR مع نسب إنجاز قابلة للقياس
- تحديد ذوي الأداء المنخفض باستخدام عتبات قابلة للتعديل
- ملخصات مراجعة جاهزة لنموذج SBI مع تقييمات محددة قائمة على الأدلة
- مخرجات صديقة للمعايرة تمكّن المقارنة بين الفرق
المتطلبات
الجزء 1: إدارة أعضاء الفريق
أنشئ دالة add_team_member(team, name, role, level) تقوم بـ:
- قبول قاموس الفريق واسم العضو (نص) والدور (نص) والمستوى (نص، مثل "L3"، "L4"، "L5")
- إضافة العضو إلى الفريق بقائمة أهداف فارغة وحالة افتراضية "on_track"
- إرجاع قاموس الفريق المحدّث
- رفع
ValueErrorإذا كان اسم العضو موجوداً بالفعل في الفريق
أنشئ دالة remove_team_member(team, name) تقوم بـ:
- إزالة عضو من قاموس الفريق
- إرجاع قاموس الفريق المحدّث
- رفع
KeyErrorإذا كان العضو غير موجود
الجزء 2: إدارة الأهداف
أنشئ دالة add_goal(team, member_name, goal_title, weight) تقوم بـ:
- إضافة هدف إلى قائمة أهداف العضو المحدد
- كل هدف يحتوي على:
title(نص)،weight(عدد عشري، 0.0 إلى 1.0)،completion(عدد عشري، الافتراضي 0.0) - التحقق من أن مجموع الأوزان للعضو لا يتجاوز 1.0
- رفع
ValueErrorإذا كان العضو غير موجود أو إذا كانت إضافة الهدف ستتجاوز مجموع الوزن 1.0
أنشئ دالة update_goal_completion(team, member_name, goal_title, completion) تقوم بـ:
- تحديث نسبة الإنجاز (0.0 إلى 1.0) لهدف محدد
- رفع
ValueErrorإذا لم تكن نسبة الإنجاز بين 0.0 و1.0 - رفع
KeyErrorإذا كان العضو أو الهدف غير موجود
الجزء 3: حسابات الأداء
أنشئ دالة calculate_member_score(team, member_name) تقوم بـ:
- حساب درجة أداء موزونة: مجموع (وزن_الهدف * إنجاز_الهدف) لجميع الأهداف
- إرجاع عدد عشري مُقرَّب لرقمين عشريين
- رفع
KeyErrorإذا كان العضو غير موجود
أنشئ دالة identify_underperformers(team, threshold=0.6) تقوم بـ:
- إرجاع قائمة من القواميس للأعضاء الذين درجتهم الموزونة أقل من العتبة
- كل قاموس يحتوي على:
name،score،role،level، وstruggling_goals(قائمة عناوين الأهداف ذات الإنجاز أقل من 0.5) - القائمة مرتبة حسب الدرجة تصاعدياً (الأداء الأقل أولاً)
أنشئ دالة calculate_team_stats(team) تقوم بـ:
- إرجاع قاموس يحتوي على:
team_size: العدد الإجمالي للأعضاءaverage_score: متوسط الدرجة الموزونة عبر جميع الأعضاء (مُقرَّب لرقمين عشريين)highest_performer: قاموس يحتوي علىnameوscoreلأفضل أداءlowest_performer: قاموس يحتوي علىnameوscoreلأقل أداءon_track_count: عدد الأعضاء بدرجة >= 0.7at_risk_count: عدد الأعضاء بدرجة بين 0.4 و0.7underperforming_count: عدد الأعضاء بدرجة < 0.4
الجزء 4: توليد ملخص المراجعة
أنشئ دالة generate_review_summary(team) تقوم بـ:
- إرجاع نص منسق يحتوي على:
- عنوان مع إحصائيات الفريق
- قسم لكل عضو فريق يعرض:
- الاسم والدور والمستوى
- كل هدف مع وزنه ونسبة إنجازه وشريط تقدم مرئي باستخدام أحرف كتل
- الدرجة الموزونة الإجمالية
- تصنيف الحالة: "Exceeding" (>= 0.9)، "On Track" (>= 0.7)، "Needs Attention" (>= 0.4)، أو "Underperforming" (< 0.4)
- قسم ملخص يسرد ذوي الأداء المنخفض مع إجراءات موصى بها
- يجب أن يكون الإخراج نظيفاً ومقروءاً ومنظماً بشكل جيد
مثال على الاستخدام
team = {}
# إضافة أعضاء
team = add_team_member(team, "Alice Chen", "Senior Engineer", "L5")
team = add_team_member(team, "Bob Kumar", "Engineer", "L4")
team = add_team_member(team, "Carol Davis", "Junior Engineer", "L3")
# إضافة أهداف لـ Alice
team = add_goal(team, "Alice Chen", "Lead API redesign", 0.4)
team = add_goal(team, "Alice Chen", "Mentor 2 junior engineers", 0.3)
team = add_goal(team, "Alice Chen", "Reduce P1 incidents by 50%", 0.3)
# تحديث نسب الإنجاز
team = update_goal_completion(team, "Alice Chen", "Lead API redesign", 0.9)
team = update_goal_completion(team, "Alice Chen", "Mentor 2 junior engineers", 0.8)
team = update_goal_completion(team, "Alice Chen", "Reduce P1 incidents by 50%", 0.7)
# حساب الدرجات
score = calculate_member_score(team, "Alice Chen")
print(f"درجة Alice: {score}") # 0.81
# توليد المراجعة الكاملة
summary = generate_review_summary(team)
print(summary)
تنسيق الإخراج المتوقع
================================================
ENGINEERING TEAM PERFORMANCE REVIEW
================================================
Team Size: 3
Average Score: 0.64
On Track: 1 | At Risk: 1 | Underperforming: 1
------------------------------------------------
Alice Chen | Senior Engineer | L5
------------------------------------------------
Lead API redesign (40%) [==========-] 90%
Mentor 2 junior engineers (30%) [========--] 80%
Reduce P1 incidents by 50% (30%) [=======---] 70%
Weighted Score: 0.81 — STATUS: On Track
------------------------------------------------
Bob Kumar | Engineer | L4
------------------------------------------------
Deliver auth service (50%) [======----] 60%
Write tech spec for caching (30%) [=====-----] 50%
Improve test coverage (20%) [====------] 40%
Weighted Score: 0.53 — STATUS: Needs Attention
------------------------------------------------
Carol Davis | Junior Engineer | L3
------------------------------------------------
Complete onboarding tasks (40%) [========--] 80%
Fix 10 bugs from backlog (30%) [===-------] 30%
Shadow on-call rotation (30%) [==--------] 20%
Weighted Score: 0.47 — STATUS: Needs Attention
================================================
UNDERPERFORMERS REQUIRING ACTION
================================================
1. Carol Davis (L3) — Score: 0.47
Struggling goals: Fix 10 bugs from backlog, Shadow on-call rotation
Recommended: Create a 30-60-90 day coaching plan
================================================