What's the difference between junior, middle, and senior developers?
Whats the difference between Entry Level/Jr/Sr developers?
There seems to be three common java programmer qualification levels:
What makes a programmer "junior", "middle", or "senior"? Does it mean the the programmer has a specific amount of certifications or job expertise? How do IT companies decide what title to give to a programmer?
The problem with your questions is that it is too subjective. Each organization will have different criteria for "ranking".
Well, as a sample, I tried to frame my question to Java Developers only because I thought that any organization should know what to expect from Java Developers they want to hire :) So there should be some common orientations but maybe I missed something... :S
Related: What does the suffix after software engineer/developer job titles mean? (i.e. Software Developer III) They aren't supposed to be decided willy-nilly.
I like to compare it to Burger King sandwiches. Junior is small, just basic and tastes good. Middle is the wopper, can do a lot of energy. Senior is the Triple-Whopper. You will be satisfied for a long.
@Mark Trapp, that is interesting, thanks for linking that. I have had many job titles over the years, and none of them have been on that list. My current "job title" is not on that list. I wonder if somewhere deep in the pit of hell known as HR (9th circle), they have me classified as something else...
There will be as many answers to this question as there are programmers. But I judge them this way:
- 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 which, if not kept on top of, will derail the wider team.
- 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.
- 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.
But you should really head over to this much better answer to see what I ought to have written!
@user592704 - they could. It depends entirely on the company. There are companies where you're either a developer or a senior developer, but everyone has chances to prove themselves through whatever they're working on. In places with more hierarchy, they usually define certain criteria before someone is considered that level, that or they just go by feeling based on a person's level of work and contributions the company. Places might even have Principals and Architect-specific roles.
@user592704 - I don't understand that that means. I think generally, an architect is already recognized as an advanced developer.
I'd expect a Senior Developer to be able to think clearly about Architectural issues. But I wouldn't permit them to make architectural decisions in isolation. Whether they would have to refer to an individual with the title of "Architect" or just to a board of their peers would be a matter for the company in question. Personally, I prefer a board of peers, even if some of those peers have job titles different to "Senior Developer".
You could tie it to the programmer's competency matrix if you want to make it a "harder" metric. Titles are not set in stone; it's all HR speak. Convenient buzzwords to encapsulate characteristics that may not even be precisely defined if they are defined at all.
To tie it to the PCM:
Junior Developer: Rates at least an n^2 in most disciplines. Could rate n or log(n) in a few and can have a few 2^n and still be okay.
Middle Developer: Majority n with a minority of n^2 and as few 2^n as possible. As many log(n)s as possible but will likely still be a minority.
Senior Developer: Majority n with a strong minority or even slight majority in log(n) and as few n^2 and no 2^n.
Legendary: Log(n) in everything possible with a few ns and nothing below that mark.
Specialist: Log(n) in their specializations and experience appropriate otherwise.
Obviously these would be "ideals" for each category. I doubt there are many that would fit the title who would truly measure fully to the standards.
I wish there was a shortcut in here for referencing the Dreyfus Model of Skills Acquisition. I'd say my concepts of Junior Middle and Senior map well to the five stages if you think of each level as a range:
- Anyone in the Novice or Advanced Beginner stage I would consider Junior.
- Competent developers are Middle
- Proficient and Expert would be Senior.
Of course the trick comes in metaknowledge. It's difficult for a person to recognize that someone knows more than he knows. If as a novice developer, I'm assessing another developer's knowledge, I wouldn't be able to assess them as anything more than a Novice (if I could assess them as higher than novice by definition I have enough knowledge to be above novice myself). The other end of the spectrum, it's difficult to assess someone with significantly less skill apropriately. Think of an expert assessing a competent developer. It's easy to say oh well he doesn't understand how to do X...he's obviously a novice.
The only solution is to have people of multiple skill levels assess an individual. At each level, you'll identify that the person is either as competent as me or not. The highest level that you get a positive would be the most accurate assessment. Now there's the problem of how to assess your existing employees ;)
quite logical metrics :) But really is there some standard way especially if there so many certifications? How to know the person knows things more or less... is it more easy just to count certificates or portfolio projects? Or It is a common rule to compare developers' levels in some kind of personal quality rate?
I've interviewed so many developers who look great on paper but couldn't answer the simplest of questions. I actually joke with colleagues that having a certification on your resume is a strike against you. I ask the same questions of all developers so it's unbiased but interestingly not one of the developers I have hired had a certification listed on his resume. (I say his because to date I've never interviewed a female developer).
Unfortunately, you can cram for many certifications nowadays. There are some higher level certifications (like the Microsoft Certified Architect and the Java Certs that require more than taking a multiple guess exam) that truly convey knowledge. If someone has a CCIE for example there's no question that they know how to configure a Cisco network. I wouldn't put much weight on most certifications for making a decision.
No the SCJD. You have to write an application to spec and follow with a written explanation of your app
@user592704, I have never met a hiring manager who cared about certifications or found them an indicator of competence. Most people who I personally have interviewed with certifications ended up having the least actual, practical knowledge. I see them as a minus not a plus for hiring. HR may like them though.