In this article, Mad Devs Customer University addresses the main factor in the cost of software development: the software developer seniority level. The hourly rate of a top-level developer can be dramatically different from (sometimes even a few times higher than) the rate of an entry-level one. Here, we want to help you figure out what these levels are and how they affect the price.
The problem: no universal rules to define a seniority level
Picture it: you have a project in mind, but you have no idea what software developer qualifications are required for it. Some IT contractors offer you Senior developers (so the rate and the price immediately soar), and others suggest that Mid-level developers or Juniors will do just fine. How do you know what’s right?
Your best interest is to make sure that the team working with you does not have underqualified or overqualified professionals in it. If they are overqualified, you’ll end up paying more than necessary. If they are underqualified, the development will take longer than it could, and you’ll end up, again, overpaying.
The problem, however, is that the qualifications you’re interested in are not easily defined. The widespread hierarchy goes: Junior, Middle, Senior, Team Lead. But there are no universal criteria in the industry for who falls into which category. Each IT company has its own understanding of what knowledge, skills, competencies, and experience a developer must obtain to climb up this ladder.
Therefore, we will look at the question of qualification from two angles. On the client side, when he/she needs a certain level of expertise. And from the developers' side, how the career ladder of Software engineer levels looks like.
Let’s start with first part.
Hard and soft skills
This distinction is crucial in understanding seniority levels. You as a customer may need more hard-skilled or soft-skilled people on your team. But first, definitions:
Hard skills
Importantly, hard skills are quantifiable and testable. Hard skills encompass technical knowledge and abilities:
Specialized education / training
Abilities confirmed by exams / certification
Efficient coding
Proficiency in programming languages and frameworks
Use of specific software and tools
Soft skills
Soft skills are interpersonal and creative abilities that help build relationships and find solutions. Soft skills may be hard to measure or even identify right away. Yet they are treasured, especially in software developers, because it takes good soft skills to find creative solutions and make collaboration with customers fruitful.
Effective communication
Critical thinking
Teamwork
Conflict resolution and problem solving
Empathy
What are seniority levels
Again, the difference between software developer levels isn’t cast in stone: there are no industrywide standards. Still, the general descriptions below can help you figure out what kind of professionals you’re looking for.
The gradation (Junior, Middle, Senior, Team Lead) reflects how experienced a developer is, how much they know how to do, and how fast and effective they are at solving problems.
Junior
Juniors are beginners who are just learning how to develop software in real life.
Recent graduates with little to no experience in the industry
Entrusted with rather small non-strategic technical tasks
Focused on the minimum viability of the code: the central task is to merely make the code work
Often don’t know what they’re doing and may thus produce questionable code
Work slowly when faced with non-standard tasks as they grope for solutions
Hard skills
Juniors are just obtaining hard skills. However, they are not necessarily complete newbies in coding. If they’ve been hired by your contractor, it means that they do have certain hard skills. This is why it is absolutely okay to have entry-level developers working on your project: there will probably be tasks for them to handle.
Technical skillset:
IDE – Juniors navigate the interface and operate IDEs.
API – They are familiar and know how to handle with commonly used APIs.
Frameworks – Juniors have already worked with some frameworks and are familiar with popular ones that fit their language stack
Database development – Juniors know about the various features of the database, such as transaction management and design techniques.
Programming language – Junior developers usually pick a programming language that they are comfortable with and implement a solution that works seamlessly in their projects.
Soft skills
Juniors’ main soft skill is the ability to learn. Also, as they’re going to encounter certain development problems for the first time, they will need to find solutions as fast as possible. That is, they need to know where to go for advice (online and offline) and how to formulate correctly the problems they’re having.
What Juniors contribute to the overall value
They are the workforce that continuously completes tech tasks and keeps projects going.
Middle
Mid-level developers can solve development problems but still work closely with more experienced experts.
More independent than Juniors in their work
Review other team members’ code
Work with uncertainties and propose solutions
Consider risks, vulnerabilities, and possible future complications
Propose proactive measures
Code concisely and efficiently (the KISS (Keep It Simple, Stupid!) and DRY (Don’t Repeat Yourself) principles)
Have years of experience in communicating within the team and with the customers
Consult top-level developers for guidance or technical advice or both
Mid-level developers can solve development problems but still work closely with more experienced experts.
Mid-level developer.
- More independent than Juniors in their work
- Review other team members’ code
- Work with uncertainties and propose solutions
- Consider risks, vulnerabilities, and possible future complications
- Propose proactive measures
Code concisely and efficiently – the KISS (Keep It Simple, Stupid!) and DRY (Don’t Repeat Yourself) principles
Have years of experience in communicating within the team and with the customers
Consult top-level developers for guidance or technical advice or both
Hard skills
Mid-level developers are often as good as Seniors in terms of coding. This is why "Middle" in the developer classification doesn’t mean "mediocre." Their technical abilities are often sufficient to tackle even difficult development problems.
Technical skillset:
IDE – Middle devs used IDE for long while and know shortcut keys for most frequent operations.
API – They have solid and deep knowledge of APIs.
Frameworks – Middle developers are proficient in many frameworks and are able to write clean and simple code
Database development – Developers at the mid-levels are good at creating databases that are designed to work seamlessly with predefined query strings. They can also create non-clustered and fully-optimized indexes.
Programming language – They understand functional programming, which helps to apply functional concepts in different languages
Soft skills
If a developer has reached the middle level, it means that they have proved themself to be responsible. They are better than Juniors in terms of time management and meeting deadlines. Also, they often mentor Juniors, and this creates positive dynamics of improvement in a team with developers of different levels.
However, Mid-level developers are not normally required to have an overall vision for the projects. In other words, they lack the skills of strategic planning, which are the realm of seniors and team leads.
What mid-level developers contribute to the overall value
They safeguard the technical side of projects and make sure everything’s done on time.
Senior
Seniors are problem-solvers who take on tasks that other developers don’t know what to do with.
Work with ultimate uncertainty, where the desired result is not clearly defined
Before intervening with new solutions, consider how those will affect other functions and the entire project
Calculate costs for the customer
Plan how to achieve maximum results with minimum costs
Specify and list tasks for other developers
Set standards for code quality
Highly experienced in problem solving, decision making, and customer communication
Coordinate the work of the team and its composition
Participate in decision making related to business development
Mentor other developers and generate educational guidelines for them
Hard skills
Undoubtedly, seniors are expected to be technical specialists who make few mistakes and produce robust code. However, you should remember that they have specializations, too. No matter how highly rated a developer is, he or she cannot be proficient in every technology there is.
Technical skillset:
IDE – Senior can write own custom macros for workflow optimization.
API – They can write libraries for broader functionality or automation processes without additional code writing.
Frameworks – Senior’s expertise allows to build own frameworks.
Database development – A senior developer is well-versed in the various aspects of database administration, such as performance and index optimization. They also know about the various features of the database, such as DB replication and DB mirroring. These are the methods that transfer data from a primary database to a secondary database. Seniors know the two-phase commit and the join statements.
Programming language – They freely work with functional programming, concurrent and logic languages.
Soft skills
Soft skills are the senior developers’ strength. Most importantly, they know how to translate the customer’s requirements into specific development tasks. Also, they know how to adopt the customer’s perspective on the project. They won’t talk to you about the technical complications they’re having. Instead, they’ll talk to you about your business and propose solutions that will be best for it.
What seniors contribute to the overall value
They ensure the efficiency of development and high quality of products that meet the customer’s requirements and needs.
Team leads
Team leads are leaders accountable for the overall development and the final results.
Plan projects
Assess weaknesses and patch them up
Look for win-win solutions on the large-scale level
Mentor seniors and educate other developers
Resolve disputes
Set strategic goals
Hard skills
Team leads are experts who not only know how to use various technologies and frameworks but also introduce new ones for their teams.
Their technical skillset is similar to senior’s.
Soft skills
Team leads shape the vision for projects by working closely both with the customer and with the team. They need to know how to negotiate and convince effectively. Along with seniors, they look for solutions where everyone else (including perhaps the customer) seems stuck.
What team leads contribute to the overall value
They take responsibility for the wholesomeness of projects and development.
Now we can move second part – software development engineer levels.
What are the levels of software engineer
An engineering level is a person's position within a team or company. It depends on their experience and technical skills.
The standard software engineering career levels are:
Level 1 - Software engineer
Level 2 - Senior engineer
Level 3 – Senior staff engineer
Level 4 - Principal engineer
Level 5 - Distinguished engineer / Fellow
How do software engineer levels work
Most software development companies have career ladders that outline the various job levels engineers can expect to progress through. As they move toward the forth level of their careers, they can expect to be focused on a managerial or technical engineering career path.
The level of titles that software engineers have indicates their worth to the company, as well as their achievements. Having a standardized set of titles helps motivate employees.
The goal of a level system is to create clear expectations, which can prevent misunderstandings.
So, for the software engineers it is the road map to success in their career. Understanding how it works is the key to navigating the path to success. Tech professionals often get bored working the same job every day. An hierarchy motivate them and pushes them to reach their goals. Having a solid career path is also beneficial for businesses. It can help them grow and attract the best talent. Having a well-rounded career can also help employees feel valued and engaged.
Let’s look at what’s expected for each level.
Level 1. Software engineer
This position is typically someone's first full-time job. As you might guess, they may also be called Juniors. They do not take ownership of the company's product, but they work on assignments that are assigned by the other engineers.
They are not expected to be experts, but they are expected to be competent. The company knows that there will be learning curves, and they are comfortable with that.
Level 2. Senior engineer
Most senior software engineers have at least three years of full-time experience. This position doesn't have to be at the same company, but it carries higher expectations. They are expected to complete projects with little or no guidance.
Senior software engineers are usually expected to have a hand in guiding the junior engineers. They'll be able to help them get used to the team's culture and expectations.
Level 3. Senior staff engineer
Staff engineer is the first level of management that is usually focused on technical expertise and leadership skills. This position requires a combination of analytical and critical thinking.
They lead complex, high-risk projects and provide technical direction to the organization. They also support the development of processes and specifications.
And they also play a vital role in the development of the organization's technical capabilities by sharing their knowledge and experiences with other engineers.
Usually, staff engineers work directly with the permanent teams and with temporary project teams. They have autonomy and can report to a manager.
In some companies they also called Team leads.
Level 4. Principal engineer
A principal engineer is typically an experienced professional who has worked in a specific field for many years. They are also responsible for guiding to complete projects on time and within budget. This position requires a combination of technical expertise and leadership skills.
And the most important thing while the staff engineer is focused on ensuring that the team is successful, the principal engineer begins to focus on the company as a whole. Their responsivities are:
- Planning engineering strategies for a company
- Managing engineering departments in tasks like research and design
- Determining department goals and creating implementation plans
- Providing expert advice to other engineers
- Creating and managing engineering budgets
- Negotiating contracts with vendors
- Implementing process improvements
Level 5. Distinguished engineer / Fellow
Few people achieve the status of distinguished engineer, which is given in recognition of their technical achievements. The computer science gurus are the ones who have conceptualized, built, and launched multiple projects that have successfully impacted the company and the industry.
They are usually focused on developing their own expertise and contributing to the company's success. They also work with other team members and executives to improve the company's performance.
For example, the living legend Sebastian Thrun, who co-developed Google Street View, is Google Fellow.
Level variety
While level systems provide structure, they also have flexibility. They can be even more adaptable as the higher up the ladder one goes. Having more control over the company allows employees to take a more personal approach.
Google's level system is widely regarded as the most influential in the industry. However, there are also several companies that use similar systems.
The data collected by Levels.fyi allowed us to collect information about the titles and salaries of software professionals.
As we can see, Google, Amazon and Facebook use similar tracks and only variation exists is generally towards the higher end of the ladder.
Microsoft and Apple are the two outliers in the industry when it comes to the number of levels. While Microsoft has more levels than the other major companies, each promotion is smaller. At Apple, the promotions are more frequent, and the overall compensation is higher.
Another interesting example is represented by the next table:
Unlike other tech companies, Netflix doesn't have a level system. Instead, they have a single project that they're focused on. This makes them an ideal company for senior software engineers.
Software engineer salary by level
Level 1. Software engineer
According to Glassdoor, the average salary for an entry-level software engineer:
- In United States is $110,375
- In UK is £43,347
- In India is ₹597,218
There is no common salary for this level, though it can be broadly based on experience.
Level 2. Senior engineer
According to job site Glassdor, a Level 2 software engineer can expect to make around:
- In United States is $130,845
- In UK is £59,255
- In India is ₹891,016
Level 3. Senior staff engineer
According to salary.com, on February 25 2022 the average salary for a Level 3 software engineer is between $105,150 and $135,262.Top-earning individuals can potentially reach the $200,000 mark with a job title such as Staff Engineer.
Level 4. Principal engineer
Glassdoor estimates that a level 4 software engineer can make $148,077 annually. This figure is hard to determine due to the different titles and responsibilities of a Principal Engineer. In some cases, Principal engineer might be considered an executive level decision maker, which means that his/her average compensation could be in the millions.
Level 5. Distinguished engineer / Fellow
As a distinguished engineer, your annual income can't be measured in an annual basis. For context, Jeff Dean is the head of Google's AI division, and he makes his net worth around the hundreds of millions.
Tips for choosing the right seniority level for your project
Pricing
The higher the level, the higher the rate. In the same company, the time of a Senior developer can cost twice (or more) as much as that of a Junior.
There’s nothing unfair about it. Top-level developers are better qualified to deliver solutions to you. Moreover, they are necessary in any nontrivial project. If your project is about something more than creating a landing page, you probably won’t do without Middle-level developers or Seniors or both.
And the opposite is true, too: you don’t want too many top-level developers. The too-many-cooks principle works with them, too. It all depends on the scope of the project, of course, but usually, when you add to a project a Senior at a time, there will be a point where adding yet another one won’t bring value proportional to that developer’s rate. If you're considering hiring a senior software engineer, consider the time and budget that you have at your disposal. A junior may require more time for training, but a senior will start contributing immediately.
The pricing model in IT needs to be assessed in various contexts, including your business’s size and specific characteristics, and your willingness to take the risk. In this publication, Mad Devs answer your questions about pricing models with clarity and transparency.
Balance
So how to find the balance of seniority levels in the team to avoid overpaying?
As a customer, you won’t always be able to answer this question with certainty. Unless you are a technical specialist yourself, you may not fully understand what qualifications and solutions will be needed in the project.
This is why team composition is largely done on the side of the contractor. But let’s say they offer you high-level developers (which means the rate will be high, too), and you want to make sure that your money will be well spent. Also, having a senior software engineer in a leadership role from the start is very important to ensure that the project is properly organized.
Here are ways for you to check if you indeed are working with a top-class professional:
They focus on your costs and calculate how much you will end up paying
They propose ways to spend money and time more efficiently.
They talk about the prospects of the product they will be developing for you.
They don’t simply promise to do everything strictly according to your requirements; instead, they critically discuss what solutions will be optimal.
These are signs of a contractor you can trust. Most importantly, such a contractor won’t fail to explain to you their seniority level choices for your project.
Conclusion
It's important that you hire the right software development team to build a successful company. Before you start hiring, figure out what your company needs and what level of software engineer is needed.
Many public sector companies have specific job titles for software engineers, but there are also different levels of titles for different roles. Companies use ladder of levels to help develop their employees, and they can use that structure to make it easier to climb. Learning the levels and implementing what's expected from will help engineers improve and advance in your career.
Entry-level developers are worth having on the team, and top-level ones are worth the price. The seniority levels are not about dividing developers into bad ones and good ones. This system of levels creates a classification showing who is good at what. This is how tasks can be distributed with more efficiency.