Leveling your Software Engineers

Leveling your Software Engineers

What is the difference between a Junior Software Engineer and a Senior Software Engineer? Sometimes, as managers, when we are planning promotions, it is always hard to distinguish between levels if we only validate technical skills. You know, you might have a wonder kid who has only one year of experience, can produce super high-quality code, knows a lot about technologies, and has strong ownership and pride in their work. But you die inside when they write letters to clients or stakeholders. Of course, there are other situations when people have 5+ years of experience, but it feels like they are stuck in time with their skills development.

We should not evaluate engineers only based on their knowledge or experience. Years of service do not equate to the complexity of tasks people can handle.

In my teams, I try to build performance evaluations based on two parameters: a combination of hard and soft skills, and the impact on the team/company, which shows the engineer's ability to use these skills:

  1. Junior Software Engineer ????: Someone who has just started their career and is learning how the tech business works. It is good if they can take care of themselves and deliver under the mentorship of more senior folks.
  2. Software Engineer ????: This person can work independently, deliver good code, understand their team's process, and participate in improving it. They do not require constant support from senior folks.
  3. Senior Software Engineer ????: They influence the whole team with their tech knowledge, can own small projects, and mentor junior folks. Basically, this is a position where people can stay for many years, and it is not required for them to grow beyond this level.
  4. Staff Software Engineer ??♂?: Serves as technical leads to their team, leading big and complex team-level projects, and handling cross-team collaboration. They constantly lead some initiatives outside their projects. Their impact goes beyond their teams, affecting the organization where they work.
  5. Senior Staff Software Engineer ??♀?: Considered the technical leader of the whole organization, handling and leading org-level projects. They have a very good knowledge of the business domain where the company operates and can drive technical design discussions for company-level projects by representing their organization. Their impact goes beyond their organization, affecting engineers in sister organizations.
  6. Principal Engineer ??♂??: This is mostly the top position most engineers will ever reach in their company. They can lead and plan the overall company direction in a selected area (e.g., monitoring, developer experience, etc.). They impact either the entire company's business domain or the whole engineering department. In most cases, they work directly with VP or C-level executives.

Of course, there can be more positions and roles. For example, Google has eight engineering levels, with L10 having only a couple of engineers, all of whom are the brightest minds of their generation.

Eventually, you will also meet this exceptional engineering talent who will have deep knowledge of one specific technology, like understanding the internals of Java to the last line of code of the JVM, or a memory leak debugging wizard who won't fit rules applicable to other engineers. Although their number is quite small, a unique approach to leveling these geniuses will be applied.

So, evaluating your engineers' levels is super important for a fair and equal promotion process, though it should take into account your company's engineering culture. As they say in Thailand, "Same, same, but different."

Lina Kalysh

Strategic Talent Consultant by day, Tech Diver by... any chance I get! ??

3 个月

Love this

回复

要查看或添加评论,请登录

社区洞察

其他会员也浏览了