"Titles don't matter in our organization." Then what do you do when developer “X” asks for a promotion? How do you identify and point out the skills that he/she should develop first? And what about level-setting new hires? In both scenarios, you'd need an effective career ladder for software engineers at hand.
Take it as both an expectations-setting tool (for you) and as a professional goal-setting tool (for your team).
One that would:
- clearly define all job roles and career milestones
- make available all the expectations and objectives associated with each role
- list all the skills to develop and knowledge to gain for a software developer to move to the next level
- display the spheres of ownership and responsibility corresponding to each step in the ladder
It would be the best answer to your team's legitimate question:
“How to grow as a software engineer”
... all while providing you with an unbiased, transparent method to evaluate your software engineers.
1. A Career Ladder for Software Engineers Serves as a Tool for...
… setting expectations for your employees.
- the skills to grow or to sharpen
- to the specific knowledge to be gained
- to the spheres of responsibility
- to the company values to embrace (resolving conflicts, being customer-centric, taking initiative...)
… it's all there, clearly defined for your team and prospective candidates to see.
While all the software engineers in your team must have proven coding skills and be customer-focused, there are specific skills that prove their potential to tackle bigger challenges. And higher spheres of ownership and responsibility.
A job ladder comes to pinpoint precisely those “other” skills and gained knowledge that entitle your employees to... level up.
2. Why Do You Need One in Your Company? And When Precisely?
Let's say that you stick to your “titles don't matter in our company” motto.
How would you address the following scenarios then?
- a software developer in your team asks for a promotion, but he/she hasn't yet developed all those skills that a next-level engineer must have
- you're recruiting and you need to determine whether a candidate that you're evaluating is a level... 2 or a level 3 software engineer
- a team leader in your company needs to provide feedback and to indicate employees the specific skills they'll need to grow
See my point?
Without an unbiased framework that would:
- help you level-set new candidates
- detail precisely what you're expecting from employees taking on specific roles in your organization
... your decisions risk being highly subjective.
“And when should I consider designing a career ladder for software engineers?”
The “signal” you need looks something like this:
You already have about 7-10 software developers in your team and you're planning to name one of them a full-time manager.
It's then that you should consider defining all the job roles relevant for your team and tracing the career paths, as well.
3. Typical Job Title Hierarchy For Software Developers
3.1. Junior (Level 1) Software Engineer
- creates pre-defined features
- writes tests, addresses bugs,
- identifies blocking issues
- communicates progress
- gradually learns new programming languages
- carries out the tasks assigned to him/her, but needs direction with up-front project planning and segmenting his tasks into multiple single tasks
Gaining experience: 0-3 years
Besides the above-mentioned skills, critical thinking, initiative, and loads of potential for personal growth are other pieces of evidence that “signal” you that you're interviewing your future level 1 software engineer.
3.2. Level 2 (Senior) Software Engineer
- “owns” a functional area of development
- writes test plans
- breaks down complex requirements into smaller tasks
- sets measurable goals and meets them within the given timeline
- reviews code changes
- is in charge of (and responsible of) the operations carried out in his functional area
- mentors on-boarding developers
The skills that set him/her apart from a level 1 software developer?
- he copes with vaguely defined requests, as well, turns them into... gold
- he would break down complex tasks into easily manageable, smaller tasks
- he's able to work independently between check-ins
- he can make reasonable decisions
Experience: 3-8 years
3.3. Senior (Level 3) Software Engineer
- takes ownership over the development and deployment of the whole software product
- sets standards
- writes technical specifications
- tracks down risks in a preliminary phase of the project
- streamlines various processes (relying on TD, Scrum...)
- comes up with solutions to reduce the complexity level of involved tasks
- when needed, he's ready to walk into the shoes of a “tech lead”
- has an in-depth understanding of the company's dynamics and specific processes
Experience: +5 years
- takes ownership of a cross-team shared infrastructure
- has proven technical expertise in a business-critical area
- gets involved in the recruitment process and mentors new hires
- collaborates with the CTO and other architects on adopting new technologies
- promotes the organizational culture
- has a deep understanding of all the implications of scalability, reliability and operational costs
Why is the architect the top job role title on any typical career ladder for software engineers?
Because he/she is the one who:
- has the competencies to evaluate system-wide platform decisions
- … to put together a long-term technical strategy for the whole company
- has the deep expertise that enables him/her to work both as an individual contributor within a given team and to collaborate, as an architectural reviewer, with the CTO
Experience: +8 years
By designing a career ladder for software engineers within your organization you'll:
Clearly define the “rules the game” for all the team "players" involved. They'll know what expectations you have from them and what professional goals they can set.