Update on Software Engineering Career Ladder
August 19, 2024
Back in April, I posted the new career ladder I was planning to introduce at OpenSesame, which I’ve joined as VP of Engineering. We rolled it out in July, so now’s a good time to share what we’ve learned so far.
Here’s the latest version of the ladder. (PDF)
Culture Changes
The purpose of the new career ladder is to help change the engineering culture at OpenSesame. The previous career ladder put a lot of emphasis on individual ownership and investigating new technologies. The new ladder focuses on teamwork, peer leadership, and maintainable code.
So far, this seems to be working. My managers tell me that they’re seeing shifts in behavior, with people volunteering to lead meetings and take on work they didn’t before. We’ve also been able to use the new career ladder as a touchstone for people who are having performance problems.
Verdict: So far, so good.
Manager-Led Evaluation
The old career ladder was employee-led. Each employee was expected to take ownership of their progression by providing examples of their skills. Each example was entered into a spreadsheet and given a score of 1-5 by their manager (or rejected entirely). Once the employee had reached a certain score threshold, they were eligible for promotion.
Employees felt that this approach was fair, as unbiased as these things can be, and gave clear direction about what they needed to accomplish. On the minus side, it required a lot of work, and some employees didn't put in the effort. It was inadvertently weighted toward “butt in seat” time and ability to self-promote.
The new career ladder makes evaluations manager-led. Managers are expected to fill out a spreadsheet evaluating employees on a wide range of skills. Each skill is rated on the following scale:
None: the employee doesn’t have the skill
Learning: they’re still learning the skill
Proficient: they can exercise the skill without help in some situations
Fluent: the skill is second nature and they exercise it whenever it’s appropriate
Promotion requires fluency in all the skills for a given title, including previous titles, although individual skills can be waived at managers’ discretion.
This lighter-weight approach allows us to have a lot more skills, and we were hoping it would remove the bias the previous system had toward self-promotion and longevity. Our concern was that it would put a lot more burden on the individual managers to understand their employees and fill out their spreadsheets.
As we’ve put it into practice, it’s definitely been a lot of work for managers to fill out the spreadsheets. For managers that know their employees well, the work’s been tolerable... mostly a matter of documenting what they already know. For managers that are new to their team, it’s been tough. They don’t have the intimate knowledge that filling out the spreadsheet requires, and it’s taking a lot of time to find out.
You could argue that the system is working as intended, and that managers should know their people well enough to fill out the spreadsheet. I tend to agree. It’s still a burden. The theory is that it’s only going to be difficult the first time, and then will get easier. We’ll see if that happens.
The other open question is whether engineers feel this system is better. People had mixed feelings about the old system—they didn’t like the bias, but they did like how clear it was, and they thought it was fair if you were willing to put in the effort. I haven’t had a chance to go back and interview the engineers about what they think about the new system yet, but I’d like to do so.
Verdict: Jury’s still out on this one.
Latest Update
In April, the ladder only covered up to Technical Lead. Now it also covers the advanced titles—Staff Engineer for the engineer track and three Engineering Manager titles for the management track. We still need to add Principal Engineer for the engineer track, and specialty skills, but this is enough for a foundation.
The management track is the biggest addition, with 78 new skills. Just as the ladder sets new expectations of engineers, the management track sets new expectations for managers, with material about managing the system rather than just managing the work.
Read the full career ladder here. (PDF)
Here’s a summary of the titles and skills, with changes marked:
Associate Software Engineer
Associate Software Engineers are just starting their software development careers. They're expected to understand the basics of software development, and be able to work in a professional setting, but they're mostly working under the guidance of more experienced engineers.
Baseline Expectations (was “Professionalism”)
- Spoken and written English
- Work ethic
- Intrinsic motivation
- Remote attendance
- In-person attendance
- Active participation
- Assume positive intent (new)
- Respectful communication
- Transparency
- Team orientation
- Follow the process
- Persistence (was “Grit”)
- Absorb feedback
- Growth mindset
- OpenSesame Qualified1
Classroom Engineering
- Object-oriented programming language
- Pairing/teaming driver
- Classroom-level debugging
- Function and variable abstraction
1“OpenSesame Qualified” is our internal training program.
Software Engineer
Software Engineers contribute to the work of their team without explicit guidance. They've begun to demonstrate peer leadership skills and are developing their abilities as generalizing specialists.
Basic Communication
- Collective ownership
- Defend a contrary stance
- “Yes, and...”
- Try it their way
- Technical feedback
- Active listening
- As-built documentation
Basic Leadership
- Basic facilitation
- Team steward
- Valuable increment steward
- Scut work
Basic Product
- Your team’s product
- Your team’s customers and users
- User story definition
Basic Implementation
- Your team’s programming language
- Your team’s codebase
- Basic test-driven development
- Sociable unit tests
- Narrow integration tests
- End-to-end tests
- Manual validation
- Spike solutions
- Basic SQL
- Pairing/teaming navigator
- Basic algorithms
- Basic performance optimization
- Debugging your team’s components
- Simple dependency integration
- Unhappy path thinking
Basic Design
- Decompose problem into tasks
- Class abstraction
- Mental model of your team’s codebase
- Mental model of a complex dependency
- Method and variable refactoring
- Campsite rule
- Fail fast
- Paranoiac telemetry
- Evaluate simple dependencies
Basic Operations
- Source control
- Your team’s release process
- On-call responsibility
- On-call triaging
- Issue investigation
- Your team’s cloud infrastructure
- Code vulnerability awareness
- Cloud vulnerability awareness
Senior Software Engineer
Despite the name, Senior Software Engineers are still fairly early in their careers. However, they have enough experience to take a strong peer leadership role in their teams. They've developed broader generalist skills and deeper specialist skills.
Advanced Communication
- Clear and concise speaking
- Clear and concise writing
- Technical diagramming
- Explain mental model
- Ensure everyone’s voice is heard
- Coalition building
- Interpersonal feedback
- Runbook documentation
Advanced Leadership
- Peer leadership
- Comfort with ambiguity
- Risk management
- Intermediate facilitation
- Mentoring and coaching
- Critique the process
- Build quality in (new)
- Circles and soup
Advanced Product
- Ownership
- Vertical slices
- Cost/value optimization
Advanced Implementation
- All of your team’s programming languages
- All of your team’s codebases
- Codebase specialty
- Code performance optimization
- Complex dependency integration
- Retrofitting tests
- Exploratory testing
Advanced Design
- Codebase design
- Simple design
- Reflective design
- Cross-class refactoring
- Basic database design
- Mental model of team dependencies
Evaluate complex dependencies(moved to Technical Lead)- Simplify and remove dependencies
Advanced Operations
- Observability
- Basic build automation
- Basic deployment automation
- Incident leader
- Incident communicator
- Incident fixer
Senior SE Specialty
- Choose one of the specialty skill sets listed below.
Technical Lead
Technical Leads are the backbone of a team. They combine deep expertise in several specialties with the ability to mentor and coach less experienced team members. They work closely with the team's other technical leads to advise engineering managers on the capabilities and needs of the team. However, this remains a coding-centric role, and the majority of their time is spent as a player-coach working alongside other team members.
Team Leadership
- Personal authority
- Leaderful teams
- Leadership specialty
- Assess technical skills
- Assess interpersonal skills
- Assess product skills
- Technical interview
- Impediment removal
Interpersonal Leadership
- Humility
- Psychological safety
- Calm the flames
- Ignite the spark
Product Leadership
- Options thinking
- Status and forecasting
- Progress and priorities
Design Leadership
- Pragmatic idealism (new)
- Simple codebase architecture
Reflective codebase architecture(moved to Staff Engineer)- Risk-driven codebase architecture
- Architectural refactoring
- Evaluate complex dependencies (moved from Senior Software Engineer)
- Published API design
Technical Lead Specialties
- Choose three(?) additional specialty skill sets.
After the Technical Lead level, people can choose the Technical Track, which consists of the Staff Engineer and Principal Engineer titles, or the Management Track, which consists of the Manager and (eventually) Director titles.
Staff Engineer (New)
Staff Engineers make a difference to the performance of Engineering as a whole. They spend time with each team in turn, working hands-on as player-coaches, and cross-pollinating information and ideas. They bring a breadth and depth of expertise that people are happy to learn from.
Departmental Leadership
- Cross-team personal authority
- Management team personal authority
- Cross-pollination
- All teams’ products
- All teams’ codebases
- Reflective codebase architecture (moved from Senior Software Engineer)
- Evaluate shared dependencies
- Pedagogy
- The heart of the matter
- Identify systemic technical weaknesses
- Identify systemic product weaknesses
- Identify systemic process weaknesses
Principal Engineer (WIP)
This level hasn’t been defined yet.
Associate Manager of Engineering (New)
Associate Engineering Managers work under the guidance of more senior managers to learn the craft of managing teams. In contrast to the Engineer Track, which focuses on peer leadership, managers focus on the team as a system, with an emphasis on people, process, and product.
Manager Baseline
- Self-starter
- Time management
- Clear communication
- Situational awareness
- Responsiveness
- Reliability
- Organization
- Detail orientation
- Radical transparency
- Disagree
- Commit to vision
- Commit to action
Basic People Management
- Team rapport
- Tailored approach
- Performance evaluation
- Performance development
- Career development
- Assess team dynamics
Basic Process Management
- Systems thinking
- Understand the why
- Delegation
- Assess team process
- Development resources
- Management specialty
Basic Product Management
- Engineering credibility
- Go to gemba
- Engineering partner
- Assess team technical skills
Manager of Engineering (New)
Engineering Managers are capable of managing teams without guidance. They're not about telling people what to do; instead, their job is to engineer a system that provides the team with the context, skills, resources, and peer leadership it needs to excel without management involvement.
Advanced People Management
- Difficult conversations
- Performance remediation
- Improve team dynamics
- Conflict resolution
- Hiring manager
- Diverse perspectives
- Bench strength
Advanced Process Management
- Manage the system
- Improve team ownership
- Improve team process
Advanced Product Management
- Improve team technical skills
- Chartering
- Business context
- Stakeholder context
- Permeable shield
- Stakeholder communication
- Advanced forecasting
Organizational Management
- Presentations
- Spreadsheets
- Administration
- Procurement
- Governance
- Event planning
- Team-level advisor
Senior Manager of Engineering (New)
Senior Engineering Managers are leaders on the engineering management team. They look beyond their own team to how they can improve the performance of all engineering teams. They're mentors to other managers and advisors to senior management.
Management Leadership
- Management team leader
- Cross-team initiatives
- Cross-team pollination and growth
- Cross-team process alignment
- Identify systemic issues
- Address systemic issues
- Division-level advisor
Process Design
- Process design mentoring
- Change management
- Principle: Rely on people
- Principle: Deliver value
- Principle: Eliminate waste
- Principle: Seek technical excellence
- Principle: Improve your process
- Key idea: Build quality in
- Key idea: Collective ownership
- Key idea: Continuous improvement
- Key idea: Embrace failure
- Key idea: Face-to-face communication
- Key idea: Feedback and iteration
- Key idea: Fast feedback
- Key idea: Last responsible moment
- Key idea: Minimize work in progress
- Key idea: Optimize for maintenance
- Key idea: Self-organizing teams
- Key idea: Simplicity
Feedback
Please share your thoughts!