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 configurationjobs
- (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"
}