In fields like Software Engineering qualifications usually cannot be measured by good marks at university. Skills, experience and problem-solving abilities are valued the most, and to simplify the process of evaluation and selection, the following common classification was introduced: junior, middle, senior. Of course, nowadays, more and more companies make their own hierarchy titles, such as 59–60 SDE, 61–62 SDE II and 63–64 Senior SDE at Microsoft or ICT 2, ICT 3, ICT 4, ICT 5 and ICT 6 at Apple.
When you hire a software development team, it is important to understand the common classifications in order to tailor your search to your specific needs and make it productive and cost-efficient. In this article, we will give you the basic description of each level and provide tips about when it makes the most sense to hire an engineer of this or that qualification.
- most likely, a student
- no experience or some “trial” projects
- temporary employment
- basic computer programming skills
To become part of the “junior-middle-senior” classification, software engineers should already have sufficient knowledge of the tools they are going to use and understanding of the processes involved in their application. To gain this experience, one can do an internship, and many companies gladly offer them, as doing so enables them to help an aspiring professional and get some work done for smaller costs or, sometimes, for free.
However, if there are interns on a team, there should be someone who can teach and supervise them. That’s why building a whole team of interns and juniors is absolutely not possible. One should think twice when trying to cut development costs in this way, but it is definitely worth it when you decide to train loyal employees who perfectly fit your company’s goals and needs.
- entry-level professional
- 0-2 years of work experience
- basic understanding of IT from both software and hardware perspectives
- sufficient knowledge of computer development tools
able to fix some small bugs in software and work on internal features
After successfully completing an internship, one has all the chances of becoming a junior software developer. Having some practical experience already, juniors can complete the basic tasks but still need to be supervised. The most ardent ones can also cope with middle-level problems but will probably need to be helped.
Additionally, software developers of this level may also need some time to accommodate themselves to working with a team, including developing their communication skills and getting used to working within fixed deadlines.
In general, developers of this rank can be very helpful and efficient when completing basic technical tasks, such as implementing a piece of standard application logic in the frame of the project’s architecture. Therefore, they also need to be complemented by developers of a higher level.
- intermediate-level professional
- 2-5 years of experience
- basic software debugging skills
- suggests effective solutions for problem-solving
- sets up a development environment
- mentors junior developers
- works on several projects simultaneously
- optimizes software code
- detects bugs in the code
The biggest difference between middle and junior developers is that the first doesn’t need supervision anymore. However, middles may need some assistance from seniors when dealing with tasks of higher complexity. However, on this level, the difficulty of tasks mostly involves logics and solution development rather than technicalities. Mid-level software developers should be able to transform the requirements coming from business development and sales into IT tasks and find an appropriate solution for them. Most of these solutions should be built based on standard templates, which is very important when writing code collectively.
Mid-level developers can distinguish good code from bad code and try to optimize it. They also are more likely to have well-developed teamwork skills and understand the way their IT department is structured, including who to report and who to assist.
Many developers stay on this level for their entire career, as their skills are good enough for consistent, satisfactory performance, but reaching the senior level is not part of their ambition.
- expert-level professional
- >5 years of experience
- makes the decisions within the full scope of a project
- improves the quality and structure of the previously written code
- communicates with clients and process owners
- mentors the junior and mid-level developers on the team
- distributes the tasks
- comprehends the full scope of a project and provides the best suggestions and methods to develop, test, implement and maintain a project
- conducts code reviews on codes
The senior level is all about responsibility and decision-making. They are supposed to choose the best technical solutions that will make the project profitable with minimum losses. They work in tight connection with management, sales and business development teams and are themselves part of the business leadership.
They are, of course, proficient in writing code and can swiftly improve the code written by others. However, as was previously pointed out, senior developers are not hired primarily to write code. Their key function is to lead the software development team and deliver the products the company needs. This also means that they possess strong soft skills, as they are partially managers.
Of course, all of these great qualifications sound splendid, and it would be a very attractive idea to hire just senior developers, but, as we probably don’t need to point out, the cost for this is also great. According to data from levels.fyi, the average annual income for senior software developers at Google is $348,678, compared to $184,329 for junior developers.
All in all, it is worth noting that these labels were introduced for simplification, and, in real life, there are many exclusions. They should not be taken too seriously, and there should be some room for flexibility and making decisions based on the individual case of a specific candidate.
To summarize, a well-balanced software development team needs all of them. A good junior developer can cope with a familiar task, quickly and proficiently. A good middle developer needs less supervision and can improve code design, and they are the “workhorses” of the team. However, if the team doesn’t have at least one senior developer, the project will most likely not survive long. Junior and mid-level developers can deliver a working product, but the strategic elaboration of it is doubtable. A senior developer is the only person fully qualified to choose technology and platforms, so not having one from day one will hurt you.