For a non-technical founder or manager, it can be difficult to determine an engineer’s seniority level when it is time to hire the first members of a development team. Being aware of the software engineer seniority levels will help set more accurate expectations for a particular engineer.
Most employers still define developer seniority by their years of experience. However, it can’t objectively measure the developer’s expertise. Seniority is also not limited to technical knowledge and age.
Actually, different companies evaluate the developer level in their unique way. The same vary from project to project since assessments are context-dependent. Thus, depending on the workplace, two senior java developers can be very different from each other.
However, we can trace similar patterns to help those who haven’t got relevant experience yet. This article will explain how to evaluate seniority levels of software developers and what makes a developer more senior than another.
Defining seniority levels
Common and simple classification is junior, middle, senior. But as we mentioned above, companies may create their own software developer skill matrix, defining from 5 to 7 levels, from junior to senior.
Some of the companies base their classification on The Dreyfus model of skill acquisition, which identifies 5 stages of attaining and mastering skills. Andy Hunt in his book Pragmatic Thinking and Learning: Refactor Your Wetware applies the Dreyfus model to software development. He juxtaposes how programmers at different stages perceive the development process and approach problems, as well as, how they form mental models.
When you are just starting with your development team, you need an experienced software engineer to hire and manage other developers effectively. So first you should get the understanding of what makes a higher level of an engineer.
Traits of a senior software developer:
- considerable impact on previous projects. For example, they have written libraries that are used in critical components of software deployed for thousands of users
- responsibility for a project or a team
- experience in mentoring their peers
- vast knowledge in the business domain. A senior software developer should always consider how their work benefits the business
- good soft skills to find the balance between the client and the team
- a long-term vision of a product
- high levels of proactivity, solving problems before they arise
- practicing deliberate work — continuously monitoring one’s own performance, and asking for feedback
- adaptablity — ability to excel in this chameleon-like behavior
- high level of motivation to work in your industry and develop your product
- knowledge in software architecture
- being comfortable with multiple app technologies. They aim at acquiring transferable knowledge that will allow them to recognize and write good code in any programming language
- ability to cover several specialties, like DevOps, product, operations, team management, sales, UI, or design. So they understand the bigger picture.
Traits of an independent (or middle) software developer:
- ability to produce quality in the codebases and environments which they are working in
- broad horizontal skills without being real experts in these other areas
- being highly initiative and resourceful
- skills in mentoring novices
- lack the experience to prioritize the focus of their attention in the project
- ability to deliver work with less supervision while being assigned to relatively routine tasks
- ability to see the results of the occurring problems and learn how to avoid them in the future.
Traits of a junior software developer:
- no or little work experience
- doing almost all tasks under the supervision
- performing tasks with little impact on the final product
- being code-focused, rather than development-focused
- focus on acquiring new skills and grow vertically
- knowledge about the basics of the technologies necessary for their profile
- a LOT of energy.
Time to assess
We will describe it in our example. Assessment in Digis takes 5 stages:
1. The recruiter is looking for appropriate titles, technologies, and similar projects in the portfolio to fit a certain position.
2. Spoken English level assessment. Initially, a recruiter asks whether the candidate is able to be interviewed in English and then have a short call to be sure the developer can speak English. The language level is also checked during the next interview.
3. We request an appropriate position code sample or ask an engineer to make a test task. Our senior software engineers review the code. Successful candidates go to the next level.
4. Interview with project manager and senior technical developer. We ask theory questions to prove developer’s technical knowledge. Interviews are great for getting some form of understanding of how the developer handles his or her work. You also get the first impression of the person and their soft skills.
5. Feedback. In Digis our technical interviewers by asking questions to candidates assess their hard (technologies necessary for a particular job) and soft skills. The grades include none, novice, intermediate, advanced, expert. Accumulating all the skills’ grades, we determine engineer level. The information represents a feedback document with recommendations for further skills improvement. For our company, it is a case-by-case process.
- Do not make test tasks too long
- Appreciate candidates’ time and always give them feedback
- Do make your decision only based on job titles. Having a title is different from having the skills and abilities to succeed in this role. You might miss some good options if you sort people out based only on their titles.