36

Possible Duplicate:
Whats the difference between Entry Level/Jr/Sr developers?

There seems to be three common java programmer qualification levels:

  • Junior
  • Middle
  • Senior

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?

3 Answers3

32

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!

Bill Michell
  • 1,990
13

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.

7

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 ;)

Michael Brown
  • 21,822