How to Estimate Your Software Engineering Expertise

You probably know that developers are divided into junior, middle, and senior according to their level of expertise. If you just broke into the IT world as a junior, you’re probably wondering what it takes to climb the ladder. Is it a matter of time, experience, or something else?

NCube believes that moving up the career ladder will open up opportunities for you to take on challenging projects, progress professionally and get employed at top software development services if this is your goal.

How to evaluate your expertise level?

There are several approaches to evaluating your programming skills level. One of the most popular was elaborated by Meilir Page-Jones in 1998. According to this approach there are seven stages of expertise in software development where productivity is a key factor. You can see the productivity curve rising with each stage.

  1. Innocent
  2. Exposed
  3. Apprentice
  4. Practitioner
  5. Journeyman
  6. Master
  7. Researcher

The matrix of developers’ competency used by many companies today belongs to Sijin Joseph, a technology executive with over a decade’s experience in software engineering. The skillsets are distributed between Junior, Middle, and Senior. Here is how Joseph’s approach correlates with stages described by Meilir Page-Jones.

Junior – a developer with up to 2 years of experience who is familiar with the programming language of their choice and can perform tasks independently. In the junior role, you will be focused mainly on backend and admin system, fix minor bugs, work on features outlined by senior engineers, help with project planning and generally adapt to the work environment and codebase.  

Junior knows a programming language by heart. He or she may occasionally need a word of advice from a middle/senior developer, and that’s okay. Overall, Junior can complete a simple tech task from beginning to end such as writing class, method or function without supervision. A specialist at this level should never be tasked with finding solutions to complex business challenges or building a software architecture landscape.

Middle – an engineer with 2-4 years of experience who can work independently, at a good pace and generate high-quality code. A specialist at this level is in his element when they are writing code. They understand tech requirements and can translate them into viable solutions.

A transition from Junior to Middle is defined by the quality of code. You’ll know you are a middle developer when you can write code that can be understood and managed by others as well as rewrite someone else’s code yourself to make it more efficient. Then, there are extra chores like planning testing, code review and mentoring juniors. In the middle role, you’ll probably have to balance more than one project or several tasks.

Senior – an engineer with 5-8 years of experience who can provide technical solutions that tie back to business goals. A specialist in this role understands the software development process in detail. They are well-versed in code qualities such as algorithmic correctness, maintainability, performance, security, and extensibility.

There is no single road to becoming a senior. It usually takes to have an inquisitive mind, experimental spirit, a desire to prove and disprove assumptions and to always keep the big picture in mind. On the technical front, they can take up an entire development through launch process, foresee initial risks, and compose technology requirements. On top of that, a senior software developer must take up management of junior and middle teams.

Afterword: What’s next?

The number of years worked in the field is often used as a factor to gauge engineers’ capabilities. However, this approach doesn’t take into account an essential truth – some engineers do not progress throughout their career. An engineer can remain in the same role for several years if not faced with complex tasks. One of the reasons for the stagnation lies in the Dunning-Kruger effect. This is a cognitive bias in which people overestimate their skills, which harms their career growth. In software development, middle engineers are more likely to suffer from it than their junior and senior counterparts. The worst hard incurred by this effect is that they cannot imagine other, and better, practices than the ones they already know about. On the other hand, there are engineers who realize how many things they still have to learn. At this point they begin their transition to the next level.

So how do you know you’ve advanced? There is no standard of transition from a role to the next. In some companies, there are prescribed levels indicating what skills a developer should have down when taking a position. But they tend to vary among different employers. A valuable factor in estimating your current level could be the level of responsibility you are ready to take up.