Sunday, July 30, 2023

Which Software Engineer Should You Recruit?


 

Which software engineer should you recruit to your team? What is the difference between a junior, senior and an ace software engineer? What is the expected salary, and does it worth spending it?


A crucial part of a being a senior software engineer and team leader in a software company is the hiring new personal process. This occurs when you're building up a new team for a new project, when the project expands and requires more developers, and when your need to fill in the gaps of software engineers who went seeking other adventures out of the company.

Before starting a recruiting process, we must understand who are we looking for. Support we want a full stack developer, should we hire a fresh newbie just out of the university, or a software engineer that had been out there working for 2 years? 10 years? What if we happen to encounter a superstar, should we hire him and pay the high cost?


Mixed Team

To answer this we should first examine the current situation in the existing team. A general guideline for an excellent team is to have a team that includes up to 7 employees. Most of the employees in the team should be seniors, which means they should have a good experience of at least 10 years. One or two of the employees should be juniors, with experience of 1-4 years. If you're lucky, you will also have a superstar software engineer in the team, with at least 15 years of experience and excellent analytical and performance abilities.

Why do we need such a team? 

We need such a team to create maximum production while avoiding tension. The difference in the team members skills would create a sharing and teaching habit between the more experienced team members to the others. The superstar can technology guide and lead the team while tackling a huge share of the tasks himself. 

Let's examine each of these typecasts.




The Junior

The junior software developer has 1-4 years of experience. The production output from this team member is expected to be very low. It might be even negative production output:

1. The team needs to invest resources in educating the junior software developer.

2. The mistakes and bugs caused by the junior cause production lost, both when fixed during the development process, and when are discovers as bugs on customer deployments.


Still there are benefits for employing a junior:

1. The need to education and information sharing in the team becomes an integral and a legit process in the everyday working process. This benefits both the juniors, but under the surface provides a benefit for the senior team members as well.

2. The payroll of a junior is low.

3. There are many juniors available in the market

4. The junior would eventually become a senior, and in case he chooses to stay in the company, it is a senior with several year of experience exactly in the development domain you need.

5. In the long term, this is the only effective method to train new software developers, that is - by experience, and as a society we should strive to create senior software developers.


The Senior

The senior software developer has at least 5 years of experience, which usually spent in several companies. The production output from this team member is expected to be high. In case you don'y have a superstar in the team, this is where the majority of work is done. 

A senior in the team is expected to have payroll of 2-3 times more than a junior, and it is harder to find a good senior, and the seniors are less available in the market.

The senior is usually limited to few technology domains, for example: 1-2 programming languages, 1-2 development frameworks.

The Superstar

The superstar software developer has at least 15 years of experience. If you are lucky to get one in your team, then you are in good state. The superstar would both lead the guide the juniors and seniors in the team, and would take the heavy-lifting tasks on his own. A production output from a superstar is at least 5 times fold higher than a senior software engineer.

Why?

The superstar has high development rate and high quality code. This means a lot of output, with very few rejects in form of bugs and customer issues. The architecture of the product would usually also handled by the superstar, reducing mistakes that otherwise would have huge impact on the road-map in the future.

The superstar is not limited by domains, any new programming language, and any new framework, is usually taken over in a short period. In most cases, the superstar adapts and enhances the frameworks to the team needs.

A superstar in the team is expected to have payroll of 2-3 times more than a senior, and it is extremely hard to find one in the market.





No comments:

Post a Comment