loading...
Cover image for Are software titles inflating during the years?

Are software titles inflating during the years?

sobolevn profile image Nikita Sobolev ・5 min read

I have heard a lot of rants about inflation of terms like "junior", "middle", and "senior". More experienced programmers like to mention that "grass used to be greener back in my days".

If you have never heard about this opinion you can get familiar with it in one of these posts:

So, I have decided to conduct a small and simple case study on these titles for the last 20 years. The main goal of this study is to answer a question: do developer titles lose their value?

Please, note that this is not a scientific paper, it is just an excuse to discuss this topic with the community. And I kindly invite you to express your opinion in the comments.

20 years ago

2000s

Let's move back in time into 2000 (yes, it was almost 20 years ago, and no, 1970s were 50 years ago).

Joel Spolsky wrote a legendary post in 2000 called "How do You Compensate Programmers?". There's an awesome table with values and skills for different levels of developers that I am going to quote as a main reference to that point in time.

Junior in 2000

Years of experience: 0
Technology exposure: Two programming classes and incredible aptitude
Initiative and architectural skills: Can develop code with significant mentoring and review. Intended mainly for summer interns and high school kids.

Years of experience: Recent grad – 1 year
Technology exposure: Coding for one OS like Unix, two or three programming languages, no API experience
Initiative and architectural skills: Can execute on a plan or write code that someone else specified, requires some mentoring

Well, we can agree that apart from technology stack not much have changed.
Junior developers still require mentoring and guidance.

Middle in 2000

Years of experience: 1 years – 3 years
Technology exposure: 2 platforms (e.g. WinAPI and Unix); RDBMS; two or three other programming platforms (like ASP, JSP, PHP, perl, etc)
Initiative and architectural skills: Can work independently on a feature and can suggest improvements and shortcuts

Years of experience: 3 – 5 years
Technology exposure: Enough different technologies to be able to make excellent choices of architecture
Initiative and architectural skills: Can design and architect a feature independently; given an interesting problem to work on, can architect, lead, and build the whole thing; can mentor less experienced developers

The same is pretty accurate for the middle role as well. Technologies have changed. Principles stayed. We still give independent tasks to middle devs, we still rely on their decisions. And we rely on them more and more as the time goes by.

Senior in 2000

Years of experience: 5 – 10 years
Technology exposure: All the above, plus, knows enough about other disciplines to be able to lead specialists in those areas (e.g. networking, wireless, hardware, datacenter, telecom, etc)
Initiative and architectural skills: Can conceive, design, architect, and lead a team to implement an entire product or company. CTO-like skills.

Years of experience: 10 years plus
Technology exposure: Significant experience inventing and architecting new technologies which are widely used throughout the industry
Initiative and architectural skills: Invents whole new programming languages like C++; extensively known through books and articles.

And again. We clearly see a picture of a modern-day senior developer. Maybe except for that "new C++" part.

And that is pretty much it about that time. Ok, here's an old programming joke for you if you feel nostalgic.

10 years ago

2010s

That's the time when I have started my career. Let's see what job definition we had back then.

Let's use SO as the main source of quotes, since it has many different opinions.

Junior 10 years ago

Person A: A Junior developer will need near-constant help. Not only will they not know the business domain, but they may also struggle with the fundamentals of the language or the toolset. They don't know what they don't know, so without guidance, they will make frequent mistakes.

Person B: They are assigned the least complex tasks and should be supervised fairly closely. Generally they know about 10% of what they think they know. Usually they have not been through the whole development cycle and so often make some very naive choices if given the opportunity to choose. Sadly many of them don't actually care what the requirement is, they want to build things their way.

No doubt that this definition matches the one that Joel gave 20 years ago.

Middle 10 years ago

Person A: A regular Developer has some experience under their belt. They will be independently productive and will be able to tackle most tasks on their own, or understand when they need to reach out for help.

Person B: Middle developers can produce working code with less supervision as long as they are assigned to relatively routine tasks. They are not generally tasked with high-level design or highly complicated tasks that require an in-depth level of knowledge. They may be tasked with the design of a piece of the application though, especially as they are in the zone to become a senior developer.

That's is almost a quote of Joel thoughts. As we can see the principle remains the same for middle developers too.

Senior 10 years ago

Person A: A Senior Developer has even more experience and will be able to design solutions as well as completing tasks. However, they may need their proposed designs vetted before they start to implement, as they won't necessarily have an overall architectural vision. They will be able to mentor more junior members of the team.

Person B: Seniors are experts in their chosen technology stacks. They are given the hard tasks (the ones nobody knows how to solve) and often get design responsibilities. They often work independently because they have a proven track record of delivering the goods. They are expected to mentor Junior and intermediate developers.

And again, this is an exact match of both today and 10-year-ago understanding of how "Senior developer" is.

Conclusion

We can clearly see that the definition of developer levels have not changed much. But, the industry have. And changes are massive! Almost all sources that I have found say that it is more challenging to become software developer now than it was 10 or 20 years ago.

So, do developer titles lose their value? No, the brief overview of existing sources shows that they do not lose their value. And instead, we are raising the entry gap for each of them by increasing the number of technologies one needs to know.

And what do you think? Let's discuss!

Discussion

markdown guide
 

I think in general titles aren't helpful. They are set to show progression and set salary ranges. On one hand it's important to help individuals feel the sense they are progressing, but on the other hand, there are so many levels you can give out. How do you balance grow and progression and inflation of titles? That's hard. Although on company described how they tried:

Riot Engineering Debugging Titles

 

I agree with you, titles only mess things up. I know a lot of cases when senior engineers from one company become middle or even junior developers in another.

I believe that progression must be clearly visible from:

  1. Code you write. Including quality and amount
  2. Metrics you generate. That's a whole different topic: what metrics to choose and how to monitor them

Thanks for the article. It is really interesting.

 

In many places Senior titles and above are utterly meaningless. Even within an organization no one knows what they mean.

One manager years ago explained that the difference in titles indicated the number of our applications the developers had worked on. That was the only way they knew to measure skill.

Some people will know what I'm talking about. If some don't, that's a good thing. In many environments there is no interest in improving the quality of work. The idea that there even is such a thing as quality or any sort of best practices is alien. They measure success by producing an initial hacked-together release of some web site and then suffer the consequences for years without learning anything. And everyone is a senior developer.

 

Different titles may also indicate how many jobs you have switched. When switching jobs your progress in titles will be much faster.