My background is mostly in Ruby on Rails and some front-end (Ember and a bit of React). I am mostly self taught, having started with PHP before moving on to Ruby and front-end JS development with Backbone.js before I ever had a job. I have been a professional developer for almost 6 years now (I am currently 25) and what I wrote here is mostly of what I have personally experienced on the job.
One of the things I quickly learned early on in my career is that the title “Senior” is practically meaningless. This title is not given on a basis of having reached a certain threshold of knowledge regarding our craft. It is given almost exclusively on having gone to an office for five years doing the same job (although not necesarrily with the same employer).
Most of us have experienced the one developer fresh out of college that can solve problems that some other “seniors” on your team could not even imagine solving. Yet this young developer will be branded as a “junior” despite being trusted to handle more complex issues. You can argue that being a “senior” is more than just being a good programmer, but if the “junior” developer is more productive and is trusted with tough problems, at the very least we should reconsider what a “senior developer” really is.
Arguments such as “I’d rather work with a bad programmer who is a great teammate than a good programmer who is a bad one” are lazy. Yes, nobody wants to work with bad teammates, but refusing to acknowledge that there are great programmers who are also great teammates at the age of 22 is not the solution.
In the end, programming skill is the most important skill for senior developer. Almost all the other skills that are also important (such as mentoring and working great with others) are important in every other team job on the planet. You can take away some of the other skills and they will still be able to get work done, although they may be a pain to work with. Take away their skill to program, they will become completely unproductive and unable to do the job.
I have encountered people who had a couple of years of Rails experience under their belts (and more with other programming languages) who could not create a controller or model from scratch without copy and pasting from other code or searching on the web. This is understandable for someone new to Rails, but once you have been working with Rails for a couple of years, this is something that is concerning.
I was once told (on Hacker News) that since I have almost 6 years of experience, I should now be eligible for “senior” positions. For a second, that made me smile. Then I realized, that if, by far, the most important metric for a “senior” role is how many years since you started your first job as a developer, could it be that the title is completely meaningless?