العودة للدورة|مقابلات مدير الهندسة: القيادة وتصميم المؤسسات والتنفيذ الاستراتيجي
معمل

بناء أداة بناء القصص السلوكية لمقابلات مدير الهندسة

30 دقيقة
متوسط
3 المحاولات المجانية

التعليمات

نظرة عامة

في هذا المعمل، ستبني أداة سطر أوامر بلغة Python تساعد مرشحي مدير الهندسة على تنظيم وتقييم وتحضير قصصهم السلوكية للمقابلات. تستخدم الأداة إطار STAR-L (الموقف، المهمة، الإجراء، النتيجة، القيادة) وتوفر مطابقة ذكية بين القصص وأسئلة مقابلات مدير الهندسة الشائعة.

مجالات الكفاءة الخمسة

يجب أن تتعرف أداتك على مجالات الكفاءة الخمسة هذه وتعمل معها:

  1. إدارة الأفراد -- التوظيف، التوجيه، التغذية الراجعة، إدارة الأداء، حل النزاعات
  2. الحكم التقني -- قرارات البنية، البناء مقابل الشراء، ترتيب أولويات الدين التقني، الاستجابة للحوادث
  3. التسليم -- تنفيذ المشاريع، التنسيق بين الفرق، إدارة النطاق، الإطلاق تحت القيود
  4. الاستراتيجية -- وضع الرؤية، ترتيب أولويات خارطة الطريق، ربط الهندسة بنتائج الأعمال
  5. التواصل -- التحديثات التنفيذية، التأثير عبر الوظائف، الإدارة نحو الأعلى، مواءمة أصحاب المصلحة

المتطلبات

الجزء 1: تخزين القصص (صيغة STAR-L)

أنشئ فئة StoryBank بالطرق التالية:

add_story(story) -- تقبل قاموساً بالمفاتيح المطلوبة التالية:

  • title (str): عنوان وصفي قصير للقصة
  • situation (str): السياق والإطار
  • task (str): دورك ومسؤوليتك
  • action (str): ما فعلته أنت وفريقك
  • result (str): النتيجة القابلة للقياس
  • leadership (str): مساهمتك القيادية الفريدة
  • competencies (list of str): واحد أو أكثر من مجالات الكفاءة الخمسة
  • tags (list of str): علامات حرة اختيارية (مثل "scaling"، "conflict"، "reorg")

يجب أن تقوم الطريقة بـ:

  • التحقق من وجود جميع المفاتيح المطلوبة
  • التحقق من أن competencies تحتوي فقط على أسماء مجالات كفاءة معترف بها
  • تعيين id عدد صحيح فريد لكل قصة (يبدأ من 1، ويزداد)
  • تخزين القصة داخلياً وإرجاع id المعيّن
  • رفع ValueError للمدخلات غير الصالحة

get_story(story_id) -- تُرجع قاموس القصة بناءً على id، أو ترفع KeyError إذا لم تُوجد.

list_stories(competency=None) -- تُرجع قائمة بجميع القصص. إذا تم توفير competency، تُرشّح لتعرض فقط القصص المصنفة بمجال الكفاءة ذلك.

الجزء 2: مطابقة الأسئلة

يجب أن تتضمن الأداة بنك أسئلة مقابلات مدير الهندسة الشائعة المربوطة بمجالات الكفاءة. خزّن 3 أسئلة على الأقل لكل مجال كفاءة (15 سؤالاً كحد أدنى).

match_stories_to_question(question_text) -- تقبل نص سؤال وتُرجع قائمة بالقصص المطابقة مرتبة حسب الصلة. منطق المطابقة:

  • استخراج مجالات الكفاءة من السؤال باستخدام مطابقة الكلمات المفتاحية (مثل "hire" أو "team growth" تُربط بإدارة الأفراد؛ "deadline" أو "shipped" تُربط بالتسليم)
  • إرجاع القصص التي تتداخل علامات كفاءتها مع الكفاءات المستخرجة
  • ترتيب النتائج حسب عدد الكفاءات المتداخلة (الأكثر تداخلاً أولاً)
  • إرجاع قائمة فارغة إذا لم تتطابق أي قصص

get_questions_for_competency(competency) -- تُرجع قائمة أسئلة المقابلات المرتبطة بمجال كفاءة معين.

الجزء 3: تقييم جودة القصة

أنشئ طريقة score_story(story_id) تقيّم جاهزية القصة للمقابلة وتُرجع قاموساً يحتوي على:

  • total_score (int): من 100
  • breakdown (dict): درجات كل معيار
  • suggestions (list of str): اقتراحات تحسين محددة

معايير التقييم (25 نقطة لكل معيار):

  1. الدقة (25 نقطة):

    • 25 نقطة: يحتوي على رقمين/مقياسين محددين على الأقل في حقل result (مثل "40%"، "3 أسابيع"، "$500K")
    • 15 نقطة: يحتوي على رقم/مقياس محدد واحد على الأقل
    • 5 نقاط: لا أرقام أو مقاييس محددة
  2. الاكتمال (25 نقطة):

    • 5 نقاط لكل حقل STAR-L يحتوي على 20 حرفاً على الأقل من المحتوى (situation، task، action، result، leadership)
  3. التأطير القيادي (25 نقطة):

    • فحص حقل leadership بحثاً عن كلمات إجراءات قيادية: "decided"، "coached"، "mentored"، "unblocked"، "hired"، "restructured"، "negotiated"، "prioritized"، "delegated"، "influenced"
    • 25 نقطة: وُجدت 3 كلمات إجراءات قيادية أو أكثر
    • 15 نقطة: وُجدت 1-2 كلمة إجراءات قيادية
    • 5 نقاط: لم تُوجد كلمات إجراءات قيادية
  4. الاتساع (25 نقطة):

    • 25 نقطة: القصة مصنفة بـ 3 مجالات كفاءة أو أكثر
    • 15 نقطة: القصة مصنفة بمجالي كفاءة
    • 10 نقاط: القصة مصنفة بمجال كفاءة واحد

لأي معيار يحصل على أقل من الحد الأقصى، أضف اقتراحاً محدداً إلى قائمة suggestions.

الجزء 4: ورقة تحضير المقابلة

أنشئ طريقة generate_prep_sheet() تُرجع نصاً منسقاً يحتوي على:

  • عنوان يتضمن إجمالي عدد القصص ومتوسط درجة الجودة
  • قسم تغطية الكفاءات يُظهر عدد القصص لكل مجال كفاءة، مع تحذير لأي كفاءة بأقل من قصتين
  • أفضل قصة تقييماً لكل مجال كفاءة (العنوان، الدرجة، وملخص سطر واحد باستخدام حقل result)
  • قسم "تحليل الفجوات" يسرد الكفاءات بدون قصص أو بقصص منخفضة التقييم فقط (أقل من 50)
  • قسم "عناصر العمل" مع توصيات محددة (مثل "أضف قصتين إضافيتين للاستراتيجية"، "حسّن الدقة في قصة 'توسيع الفريق في Acme'")

مثال على الاستخدام

bank = StoryBank()

# إضافة قصة بصيغة STAR-L
story_id = bank.add_story({
    "title": "Scaling the Payments Team",
    "situation": "Our payments team had 3 engineers and was responsible for processing $2M in daily transactions. The company planned to launch in 5 new markets within 6 months, requiring 3x throughput.",
    "task": "As the EM, I needed to triple the team size while maintaining system reliability and delivery velocity during the transition.",
    "action": "I created a structured hiring plan with a rubric focused on distributed systems experience. I implemented a buddy system for onboarding and established a 30-60-90 day ramp plan. We ran parallel workstreams so new hires could contribute to the new market integrations while senior engineers maintained the core platform.",
    "result": "Grew the team from 3 to 11 engineers in 5 months with zero mis-hires. System uptime remained at 99.97%. We launched in all 5 markets on schedule, processing $6.5M in daily transactions by quarter end.",
    "leadership": "I personally designed the hiring rubric, conducted 28 phone screens, and made the final call on every hire. I restructured the team into two squads to maintain ownership clarity. I negotiated with the VP of Engineering for a dedicated recruiter, which cut our time-to-hire from 45 to 22 days.",
    "competencies": ["People Management", "Delivery", "Strategy"],
    "tags": ["scaling", "hiring", "payments", "international"]
})

# تقييم جودة القصة
score = bank.score_story(story_id)
print(f"Story score: {score['total_score']}/100")

# مطابقة القصص مع أسئلة المقابلات
matches = bank.match_stories_to_question(
    "Tell me about a time you scaled a team significantly."
)

# توليد ورقة التحضير
prep_sheet = bank.generate_prep_sheet()
print(prep_sheet)

تنسيق الإخراج المتوقع

إخراج التقييم

Story score: 90/100
Breakdown:
  Specificity:        25/25
  Completeness:       25/25
  Leadership Framing: 25/25
  Breadth:            15/25
Suggestions:
  - Consider tagging this story with additional competency areas for broader coverage

إخراج ورقة التحضير

============================================
EM INTERVIEW PREPARATION SHEET
============================================

Total Stories: 8
Average Quality Score: 72/100

--- تغطية الكفاءات ---
People Management:   3 stories  [OK]
Technical Judgment:  2 stories  [OK]
Delivery:            3 stories  [OK]
Strategy:            0 stories  [WARNING: No stories!]
Communication:       1 story   [WARNING: Need at least 2]

--- أفضل قصة لكل كفاءة ---
People Management:  "Scaling the Payments Team" (90/100)
  Result: Grew team from 3 to 11 in 5 months with zero mis-hires
Technical Judgment:  "Migration to Microservices" (75/100)
  Result: Reduced deployment time from 2 hours to 15 minutes
Delivery:           "Holiday Launch Under Pressure" (82/100)
  Result: Shipped 2 weeks early, handled 3x expected traffic
Strategy:           NO STORIES -- حضّر قصصاً لهذه الكفاءة
Communication:      "Executive Buy-in for Platform Rewrite" (68/100)
  Result: Secured $1.2M budget approval in one presentation

--- تحليل الفجوات ---
* Strategy: لا توجد قصص متاحة
* Communication: قصة واحدة فقط (الحد الأدنى الموصى به 2)

--- عناصر العمل ---
1. أضف قصتين على الأقل لكفاءة Strategy
2. أضف قصة واحدة أخرى لكفاءة Communication
3. حسّن الدقة في "Executive Buy-in for Platform Rewrite" (الدرجة: 68)
============================================

معايير التقييم

تخزين قصص STAR-L مع التحقق -- StoryBank تخزن القصص بشكل صحيح مع جميع حقول STAR-L المطلوبة (العنوان، الموقف، المهمة، الإجراء، النتيجة، القيادة، الكفاءات، العلامات)؛ add_story() تتحقق من الحقول المطلوبة وترفع ValueError للحقول المفقودة أو أسماء الكفاءات غير الصالحة؛ تعيّن معرفات صحيحة متسلسلة تبدأ من 1؛ get_story() تسترجع بالمعرف وترفع KeyError للمعرفات المفقودة؛ list_stories() تُرجع جميع القصص وتدعم الترشيح حسب مجال الكفاءة25 نقاط
مطابقة الأسئلة وربط الكفاءات -- الأداة تتضمن بنك أسئلة من 15 سؤال مقابلة على الأقل عبر 5 مجالات كفاءة؛ match_stories_to_question() تستخرج مجالات الكفاءة من نص السؤال باستخدام مطابقة الكلمات المفتاحية؛ تُرجع القصص التي تتداخل علامات كفاءتها مع الكفاءات المستخرجة؛ ترتب النتائج حسب عدد الكفاءات المتداخلة (الأكثر صلة أولاً)؛ تُرجع قائمة فارغة عندما لا تتطابق أي قصص؛ get_questions_for_competency() تُرجع الأسئلة الصحيحة لكل مجال25 نقاط
تقييم جودة القصة عبر 4 معايير -- score_story() تقيّم الدقة (عدّ المقاييس/الأرقام في حقل النتيجة)، الاكتمال (فحص محتوى 20+ حرف في كل حقل STAR-L)، التأطير القيادي (اكتشاف كلمات الإجراءات القيادية في حقل القيادة)، والاتساع (عدّ علامات الكفاءة)؛ total_score محسوب بشكل صحيح من 100؛ التفصيل يُظهر درجات المعايير الفردية من 25؛ قائمة الاقتراحات تقدم توصيات تحسين قابلة للتنفيذ لأي معيار يحصل على أقل من الحد الأقصى25 نقاط
توليد ورقة تحضير المقابلة -- generate_prep_sheet() تنتج تقريراً منسقاً يتضمن: إجمالي عدد القصص ومتوسط درجة الجودة؛ تغطية الكفاءات مع تحذيرات للمجالات بأقل من قصتين؛ أفضل قصة تقييماً لكل كفاءة مع العنوان والدرجة وملخص النتيجة؛ تحليل الفجوات يحدد الكفاءات بدون قصص أو بقصص منخفضة التقييم فقط (أقل من 50)؛ عناصر عمل تقترح قصصاً محددة للإضافة أو التحسين؛ تتعامل مع الحالات الحدية بسلاسة (بنك فارغ، قصة واحدة، جميع الكفاءات مغطاة)25 نقاط

قائمة التحقق

0/10

حلك

3 محاولات مجانية متبقية
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.