Back to Course|Engineering Manager Interviews: Leadership, Org Design & Strategic Execution
Lab

Build an EM Interview Self-Assessment Tool

25 min
Beginner
3 Free Attempts

Instructions

Overview

In this lab, you will build a Python command-line tool that helps Engineering Manager candidates assess their interview readiness. The tool will collect self-ratings across five competency areas, calculate scores, identify strengths and weaknesses, and generate a personalized study plan.

The Five Competency Areas

Your tool must evaluate candidates across these five areas:

  1. People Management — Hiring, coaching, feedback, performance management, conflict resolution
  2. Technical Architecture — System design, tradeoff analysis, technical decision-making
  3. Behavioral Storytelling — STAR-format stories, leadership narratives, structured communication
  4. Execution & Delivery — Project management, cross-team coordination, shipping under constraints
  5. Strategic Thinking — Vision setting, roadmap prioritization, connecting engineering to business

Requirements

Part 1: Data Collection

Create a function collect_ratings() that:

  • Accepts a dictionary of competency ratings (each rated 1-5)
  • Validates that all five competency areas are present
  • Validates that each rating is an integer between 1 and 5
  • Returns a validated ratings dictionary
  • Raises a ValueError for invalid inputs

Part 2: Score Analysis

Create a function analyze_scores(ratings) that returns a dictionary containing:

  • overall_score: The average score across all five areas (rounded to 1 decimal)
  • readiness_level: A string — "Strong" (avg >= 4.0), "Moderate" (avg >= 3.0), or "Needs Work" (avg < 3.0)
  • strengths: A list of competency names where the score is 4 or 5
  • weaknesses: A list of competency names where the score is 1 or 2
  • growth_areas: A list of competency names where the score is 3

Part 3: Study Plan Generation

Create a function generate_study_plan(analysis, weeks) that:

  • Accepts the analysis dictionary from Part 2 and a number of weeks (4, 8, or 12)
  • Allocates preparation time: 40% to weaknesses, 20% to growth areas, 10% to strengths (remaining 30% to general practice)
  • Returns a list of dictionaries, where each item represents a week with:
    • week_number: The week number (integer)
    • focus_area: The primary competency to focus on that week
    • daily_hours: Recommended daily study hours (float)
    • activities: A list of 2-3 specific activities for that week
  • Distributes weeks proportionally across weakness, growth, and strength areas

Part 4: Report Generation

Create a function generate_report(ratings, analysis, study_plan) that:

  • Returns a formatted string containing:
    • A header with the overall score and readiness level
    • A section listing all five competency areas with their scores and a visual bar (using # characters, where each # represents one point)
    • A strengths section listing areas rated 4-5
    • A weaknesses section listing areas rated 1-2
    • The complete week-by-week study plan
  • The output must be clean, readable, and well-structured

Example Usage

ratings = {
    "People Management": 2,
    "Technical Architecture": 4,
    "Behavioral Storytelling": 3,
    "Execution & Delivery": 5,
    "Strategic Thinking": 2
}

validated = collect_ratings(ratings)
analysis = analyze_scores(validated)
plan = generate_study_plan(analysis, weeks=8)
report = generate_report(validated, analysis, plan)
print(report)

Expected Output Format

============================================
EM INTERVIEW READINESS ASSESSMENT
============================================

Overall Score: 3.2 / 5.0
Readiness Level: Moderate

--- Competency Breakdown ---
People Management:       ## (2/5)
Technical Architecture:  #### (4/5)
Behavioral Storytelling: ### (3/5)
Execution & Delivery:    ##### (5/5)
Strategic Thinking:      ## (2/5)

--- Strengths (Score 4-5) ---
* Technical Architecture
* Execution & Delivery

--- Weaknesses (Score 1-2) ---
* People Management
* Strategic Thinking

--- 8-Week Study Plan ---
Week 1: People Management (1.5 hrs/day)
  - Read 'The Manager's Path' chapters on feedback
  - Practice delivering constructive feedback scenarios
  - Write 3 STAR stories about people management

[... remaining weeks ...]
============================================

Grading Rubric

Correctly scores across 5 competency areas — collect_ratings() validates all 5 areas exist with scores 1-5 and raises ValueError for invalid input; analyze_scores() calculates the correct overall average, readiness level, and categorizes strengths/weaknesses/growth areas accurately25 points
Generates accurate strength/weakness report — generate_report() produces a clean, readable report with overall score, readiness level, visual competency bars using # characters, and correctly separated strengths (4-5) and weaknesses (1-2) sections25 points
Produces personalized study plan based on gaps — generate_study_plan() supports 4, 8, and 12 week timelines; allocates approximately 40% of weeks to weaknesses, 20% to growth areas, and 10% to strengths; each week includes a focus area, daily hours, and 2-3 specific activities25 points
Handles edge cases and produces clean output — works correctly when all scores are equal (all 5s, all 1s, all 3s), when there are no weaknesses, or when there are no strengths; output is well-formatted with consistent alignment and no crashes or unhandled exceptions25 points

Checklist

0/10

Your Solution

3 free attempts remaining
FREE WEEKLY NEWSLETTER

Stay on the Nerd Track

One email per week — courses, deep dives, tools, and AI experiments.

No spam. Unsubscribe anytime.