Matrix

A career matrix is a part of the core and stored in ./core.ppl of the workspace. It tracks the structure of requirements for a family of jobs in order to create clear career progression.

Fields

  • name - (Required) - The human-readable name of the matrix - String
  • categories - (Required) - A map of categories (detailed below) mapped by their category identifier, which is also used by the job requirments configuration
  • jobs - (Required) - A list of job identifiers that are a part of the career matrix. - [Identifier]

A category block is defined within the categories block. It defines a single category of job requirements for each job in this matrix. It is identified by a unique identifier within the matrix that is used to define the job requirements. Each category has its own block.

  • name - A human readable name of the category - String
  • description - A human readable description of the types of requirements in this category - String

Categories and Job Requirements

Career matrices and jobs have a structural relationship with each other when defined together.

The matrix defines categories, and the identifier of each category (technical in the minimal example below) is also defined as a requirement for the job.

If this structure isn't exactly right, the workspace will fail to load, so someone configuring a matrix with jobs should make good use of the people app.

Examples

Minimal

matrix engineering {
  name: "Software Engineering"
  categories: {
    technical: {
      name: "Technical"
      description: "Core technical and architectural capabilities"
    }
  }
  jobs: [
    software_engineer_1,
  ]
}

job software_engineer_1 {
  name: "Software Engineer I"
  requirements: {
    technical: {
      implementation: "Implements well-defined features with guidance"
    }
  }
}

member kevin_osei {
  first_name: "Kevin"
  last_name: "Osei"
  job: software_engineer_1
}

Full

job software_engineer_1 {
  name: "Software Engineer I"
  requirements: {
    technical: {
      implementation: "Implements well-defined features with guidance"
      code_quality: "Writes maintainable code following team standards"
      code_review: "Participates in code reviews and bug fixes"
      testing: "Learns testing best practices"
    }
    project_execution: {
      delivery: "Delivers assigned tasks within expected timeframes"
      clarity: "Seeks clarification when requirements are unclear"
      updates: "Updates progress regularly"
      process: "Follows established development processes"
    }
    problem_solving: {
      debugging: "Debugs and resolves basic technical issues"
      impact: "Understands how their code impacts immediate dependencies"
      decomposition: "Learns to break down problems into manageable tasks"
    }
    collaboration: {
      participation: "Actively participates in team meetings"
      communication: "Communicates blockers and progress clearly"
      feedback: "Receives and implements feedback effectively"
      teamwork: "Works well with immediate team members"
    }
    growth: {
      learning: "Demonstrates eagerness to learn new technologies"
      initiative: "Takes initiative in skill development"
      mentorship: "Seeks and accepts mentorship"
      domain: "Builds understanding of product domain"
    }
  }
}

job software_engineer_2 {
  name: "Software Engineer II"
  requirements: {
    technical: {
      implementation: "Independently implements medium-sized features"
      design: "Designs straightforward technical solutions"
      code_review: "Provides thorough code reviews"
      documentation: "Contributes to technical documentation"
    }
    project_execution: {
      delivery: "Manages own deliverables reliably"
      decision_making: "Makes informed technical decisions"
      estimation: "Estimates work effort accurately"
      risk_management: "Identifies potential risks early"
    }
    problem_solving: {
      resolution: "Resolves complex issues independently"
      system_thinking: "Considers broader system impact"
      improvement: "Suggests process improvements"
      optimization: "Identifies optimization opportunities"
    }
    collaboration: {
      mentoring: "Mentors junior engineers informally"
      cross_team: "Communicates effectively across teams"
      technical_discussion: "Contributes constructively to technical discussions"
      status: "Provides clear status updates"
    }
    growth: {
      technical_growth: "Expands technical breadth"
      domain_expertise: "Develops domain expertise"
      feedback: "Proactively seeks feedback"
      strategy: "Understands product strategy"
    }
  }
}

job senior_engineer {
  name: "Senior Software Engineer"
  requirements: {
    technical: {
      implementation: "Designs and implements complex features"
      architecture: "Architects scalable solutions"
      leadership: "Provides technical leadership"
      best_practices: "Drives best practices adoption"
    }
    project_execution: {
      initiative: "Leads significant technical initiatives"
      technical_debt: "Balances technical debt with delivery"
      architecture: "Makes sound architectural decisions"
      quality: "Ensures quality of deliverables"
    }
    problem_solving: {
      challenges: "Solves ambiguous technical challenges"
      scaling: "Anticipates scaling problems"
      solutions: "Creates systemic solutions"
      processes: "Improves development processes"
    }
    collaboration: {
      mentoring: "Mentors other engineers actively"
      influence: "Influences technical decisions"
      leadership: "Drives technical discussions"
      cross_org: "Works effectively across organization"
    }
    growth: {
      leadership: "Develops leadership capabilities"
      perspective: "Broadens system perspective"
      industry: "Stays current with industry trends"
      vision: "Contributes to technical vision"
    }
  }
}

job staff_engineer {
  name: "Staff Software Engineer"
  requirements: {
    technical: {
      architecture: "Architects complex distributed systems"
      strategy: "Drives technical strategy across projects"
      oversight: "Provides technical oversight for critical initiatives"
      decisions: "Makes high-impact architectural decisions"
    }
    project_execution: {
      leadership: "Leads multi-team technical initiatives"
      roadmap: "Defines technical roadmaps"
      excellence: "Ensures technical excellence across projects"
      balance: "Balances business needs with technical concerns"
    }
    problem_solving: {
      challenges: "Solves organizational technical challenges"
      architecture: "Creates scalable system architectures"
      opportunities: "Identifies strategic technical opportunities"
      governance: "Develops technical governance"
    }
    collaboration: {
      influence: "Influences cross-team technical decisions"
      consensus: "Builds consensus across engineering groups"
      mentoring: "Mentors senior engineers"
      communication: "Communicates technical vision effectively"
    }
    growth: {
      innovation: "Drives technical innovation"
      culture: "Shapes engineering culture"
      industry: "Contributes to industry discussions"
      leadership: "Develops organizational leadership skills"
    }
  }
}

job principal_engineer {
  name: "Principal Software Engineer"
  requirements: {
    technical: {
      vision: "Defines technical vision for multiple products"
      strategy: "Creates multi-year technical strategies"
      innovation: "Drives innovation in core architectures"
      standards: "Establishes technical standards"
    }
    project_execution: {
      leadership: "Leads organization-wide technical initiatives"
      planning: "Drives strategic technical planning"
      impact: "Makes decisions affecting multiple teams"
      strategy: "Influences product strategy"
    }
    problem_solving: {
      challenges: "Solves complex organizational challenges"
      capabilities: "Creates new technical capabilities"
      opportunities: "Identifies strategic opportunities"
      practices: "Develops engineering best practices"
    }
    collaboration: {
      influence: "Influences organization direction"
      partnerships: "Builds strategic partnerships"
      mentoring: "Mentors technical leaders"
      representation: "Represents engineering organization"
    }
    growth: {
      practice: "Advances state of practice"
      knowledge: "Contributes to industry knowledge"
      leadership: "Develops future technical leaders"
      culture: "Shapes engineering culture"
    }
  }
}

matrix software_engineering {
  name: "Software Engineering"
  categories: {
    technical: {
      name: "Technical"
      description: "Core technical and architectural capabilities"
    }
    project_execution: {
      name: "Project Execution" 
      description: "Delivery and implementation of technical work"
    }
    problem_solving: {
      name: "Problem Solving"
      description: "Technical problem solving and system thinking"
    }
    collaboration: {
      name: "Collaboration"
      description: "Working with others and leadership"
    }
    growth: {
      name: "Growth and Learning"
      description: "Personal and professional development"
    }
  }
  jobs: [
    software_engineer_1,
    software_engineer_2,
    senior_engineer,
    staff_engineer,
    principal_engineer
  ]
}

member kevin_osei {
  first_name: "Kevin"
  last_name: "Osei"
  job: software_engineer_2
  email: "test-kevin-osei@hedge-ops.com"
}

member alex_rivera {
  first_name: "Alex"
  last_name: "Rivera"
  email: "test-alex-rivera@hedge-ops.com"
}