Seniors are not equal to seniors – about differences in the same position.
Even within the same job level in the IT industry, significant differences in skills, experience, and professional roles can be observed. There are many reasons for this, one being the individual definition of job levels in different companies, the scope of responsibilities, or even organizational culture. It can happen that a senior in one company would be classified much lower in another where the tech stack is more diverse and advanced.
Another reason is the phenomenon of horizontal promotion, where you’re given a promotion on paper that doesn’t actually change anything but temporarily satisfies the developer’s ambitions and need for growth (especially financial growth). This is usually closely tied to tenure at a particular company.
The biggest and most negative impact on determining proficiency levels in programming comes from outsourcing, where less qualified individuals are recommended for better positions by default. This maximizes the difference between the cost a client pays for an employee and the actual salary of that employee, generating profit for intermediary companies.
The issues raised above make defining a developer’s level a difficult and highly subjective topic, yet each of us wants to price our skills on the job market as accurately as possible.
Work experience – is it a reliable indicator of qualifications?
The following division based on years of experience is often encountered:
- Junior (up to 2 years of experience)
- Mid (2-5 years of experience)
- Senior (5-10 years of experience)
- Expert (over 10 years of experience)
How does this look in practice? A person with just under 2 years of commercial experience might be considered a senior in their environment. This can be due to factors such as working with relatively new technologies (for example, a front-end framework like ReactJS), a substantial amount of non-commercial experience (especially hobbyist programming), a desire for self-improvement, and, of course, working overtime. 🙂
On the other hand, a senior who has been working in the same place for 10 years might be classified as a mid-level developer on the market. This can happen if they haven’t developed themselves either at work or outside of it.
How quickly we advance and improve our qualifications largely depends on our engagement, self-confidence, and the challenges we face in our career. A confident person with the right technical background (e.g., an engineering degree) and, most importantly, a willingness for self-driven development, will have a much easier time climbing the professional ladder of promotion.
Junior developer
A Junior Developer is someone at the early stage of their career in the IT industry. They typically have basic technical knowledge and may still be learning or have recently graduated. They are usually assigned elementary tasks that are easy to verify for correctness or high-priority tasks with an understanding of the risk of technical debt.
The main characteristics of a junior developer are:
- Lack of or limited experience: They are taking their first steps in commercial programming, learning business requirements and the specifics of the profession.
- Basic technical knowledge: They have a foundational understanding of programming languages, tools, and technologies used in their area.
- Dependence on supervision: They require support and guidance from more experienced colleagues to perform tasks efficiently.
Mid developer
A Mid Developer is someone with some professional experience who is capable of working primarily independently.
Their characteristics:
- Independently organizes and plans their work.
- Can find solutions to problems on their own and actively shares their knowledge while supporting communication and (technical) integration between teams.
- Has a solid understanding of the systems and technologies within the team’s responsibilities and actively expands their knowledge of the systems and technologies used in the project.
- Can implement new technical solutions within the team.
- Adheres to the software development rules and standards applicable to the project.
- Ensures effective use of time.
- Actively develops their skills and broadens their knowledge.
- Collaborates with the team to accomplish tasks.
- Meets long-term and short-term goals on time.
- Implements new features in the application and enhances existing ones.
- Supports the application testing process.
Senior developer
A Senior Developer possesses deep knowledge and broad experience in their field. Their scope of work includes:
- Supporting others in organizing, planning work, and solving problems.
- Being open to colleagues’ ideas and engaging in discussions about their own solutions.
- Effectively communicating with team members, ensuring clarity and mutual understanding.
- Communicating openly and efficiently within the project, providing constructive feedback and clearly conveying information to non-technical stakeholders.
- Being familiar with the technologies, infrastructure, and systems in the project or department.
- Independently designing architecture and selecting technical solutions for new systems, as well as designing and implementing integration between teams or systems.
- Selecting tools and creating optimal solutions in an efficient manner.
- Being goal-oriented and ensuring tasks are completed successfully.
- Actively identifying and eliminating risks in the team’s systems.
- Recognizing and influencing process changes within the team.
- Leading the onboarding process for new employees.
They are distinguished by:
- Active collaboration with team members in accomplishing tasks and achieving set goals.
- Encouraging creative thinking and knowledge sharing among team members to enhance the team’s effectiveness.
- Ensuring the security, transparency, performance, and high quality of code and applications developed.
- Supporting the application testing process by automating tests (unit, integration, end-to-end tests).
Ekspert
An Expert is a senior developer who significantly influences the development of the industry and the community around a specific technology. They introduce innovative solutions, create public tools and libraries, write articles, and deliver lectures related to their field. Their knowledge is interdisciplinary and well-informed.
They actively participate in organizing the department’s work and improving its efficiency.
- Create tools used by multiple teams.
- Can conduct a system audit and prepare recommendations for improvement.
- Recognize and influence process changes within the department.
- Actively promote technical development within the department and identify areas of need.
They are distinguished by:
- Actively sharing knowledge both within and outside the department.
- Supporting the business with specialized expertise.
- Building the brand of the team, department, and company.
- Preparing architectural concepts for projects.
- Coordinating collaboration between teams.
- Ensuring architectural and technological consistency in the solutions being developed.
How to define yourself?
I have prepared an .xlsx file for you to download and fill in with assessments for each area I previously mentioned. I hope this tool will help you independently evaluate your skills and, most importantly, highlight areas for further development. For greater objectivity, you can ask a colleague to fill it out on your behalf.
If you want to improve your qualifications in React-Native, feel free to use my set of verification questions on the Udemy training platform. It will help you identify technical areas where you still have room for growth, allowing you to become a better mobile developer.