What's the Big Diff between Juniors and Seniors Titles?
If you were to take a quick scan of the current job market you’d see many development positions prepended with the generic – Junior, Intermediate, Senior headers in front of them. Nowadays we are getting really fancy because we need to attract new MORE qualified people by using such terms as Guru, Expert, Ninja, Rockstar, etc, etc, etc.
Can you really look at these designators and apply them so broadly to a field that is still so young and so widely influenced by external factors?
Generalist vs Specialist
Developer A is a Java back-end developer; he understands database protocols and is well-skilled in database design (particularly Oracle). He has been working in this field for approximately 12 years. His work is solid; he understands what needs to be done and the gotchas to look out for; however his experience and knowledge is solely focussed on data and no other area.
Developer B is a .NET developer; she doesn’t really specialize in any certain area, has some well-applied experience in WPF, WCF and WF. She is not nearly as experienced as Developer A but she knows how the different parts of how a system works together and what caveats need to be in place for the different technologies to align.
So – who is the Junior and who is the Senior? If you go by total years of experience then you are essentially placing your bets based on performance in a single area vs a span of information across disciplines? (forget the fact one is Java and one is .NET, that serves no value in this discussion) Although I would not think Developer B to be at the level of experience of Developer A, they do have something going for them in that they understand multiple facets and protocols of development and programming which would lend them to working in multiple areas and understand the need to twist indexes and database return results to fit the needs to small networks and such.
Veteran vs Noob
So let’s say we still have Developer A and B in our scenario, Developer B has been with Company X for her entire career to date (5 years) and has worked with the company’s products since Day 1. Developer B has come on board to solve the company’s data issues; he’s got a lot of experience but knows little about the Products. In meetings, Developer A clearly has more influence with the rest of the project team because of what she has accomplished to date and her sound knowledge of the company’s products. While on the other side Developer B is struggling to get buy in for his ideas? However, Developer B’s suggestions are incorrect in some facets, primarily because she doesn’t have the required experience in that field to make the kind of decision that developer B can but she is regarded as being a more Senior developer because of her internal experience and product knowledge.
We have now crossed over to including Product knowledge and past successes into the definition of a Developer. Developer B has delivered some pretty solid product and knows the suite inside and out (which is good) and has built up credibility with her team to trust her decisions (again good). But now she has been put into the position to make technical decisions related to a technology area she does not understand and has not worked with. In essence she was promoted into a position where she was not qualified to enter but based on what she did for the company, it seemed like the right thing to do.
Whether we like it or not, Product/Company knowledge indirectly becomes key decision criteria in determining what level a developer is at. Sure we can peg them at Junior, Intermediate or Senior on Day 1. But after that, their stock starts to go up with every release that goes out the door (and these factors are quite complimentary). Have a good understanding of the product and you’ll know how to better code for a problem. Need to implement a new feature under the gun? Well you know the codebase so get to it and Ship It!
So in the end does it matter if we call people Junior, Intermediate or Senior? When you enter a new organization, in some ways you are really a junior once again, you might re-accelerate to Senior quickly but you still have to contend with the internal product experience already acquired by internal resources that have made them more than what they were when they signed on. And really, who is going to put a new Senior Developer on a mission critical outage on Day 1? No one (at least no one in their right mind who wants to see the bug actually get resolved), so in the end why not just call us what we are – Software Developers – those of different skills, capabilities and knowledge.
Now if you’ll excuse me I have to go get ready for a dentist appointment with my Senior Dental Hygienist and Junior Dentist (see doesn’t that sound dumb)?