After years of programming, I'm still not quite sure yet myself. Many times you'll see those keywords in job descriptions and then stop for a second and maybe decide that you won't apply, because while you're good, you're not quite up to a "senior" level good just yet. Maybe a few more years. I've done that many times, and not because I don't think that I can't handle the work, but mainly because I don't want to work for a company that has that type of structure in place anymore. A company where knowing one more technology, or having one more year of experience, puts you above somebody else. It's awkward at times and usually involves in pay imbalances and nobody has time for that. And at the end of the day I just want to program to solve a problem.
The main problem with these title prefixes though is that there is no formal standard for them. Every single person that will interview you will think of "senior" as something completely unique to themselves. Most will associate it with 10+ years of programming though probably. I had a recent phone interview which went well, and about halfway through the interviewer said "ah, so you're more like a mid-level then" and I agreed, but I'm not sure why I consider myself mid-level. And so this post was born to discuss and bring out some of those issues.
I've worked with a few senior developers in my day, and they were older gentlemen, at least older than me at the time. I was 24 and they were 33. And they were great guys and we became close friends who drank and played pool after work. They obviously got paid substantially more than I did, but I was fine with that, since they were senior and I was just a developer. About a year later, I found myself doing the exact same work that they did. We all came in, we all had tickets to close, sometimes we worked on each others code and we helped each other out daily. We all worked late into the night and we all worked weekends. But they were still senior developers, and I was still just a developer.
At another job had the duty to hire a senior developer for my department, and more specifically for the website that I worked on. And after many interviews, I finally found a candidate that was well rounded enough and that I could see myself working with day in and day out. For the next 6 months, he would ask me first before he made any changes and he would value my advice a bit more, because I had already been working with that website for years. But he was still a senior developer. He had been working for a longer period of time, but he had no idea how the current system was set up here.
One thing was true, these guys had been programming for a while and if that's enough to warrant being a senior developer, then that's fine and dandy. Were any of them particularly amazing at this craft? I would say probably not. They were just hardworking guys that liked talking about code alot, like alot of programmers that I know. But after some arbitrary years, they started getting called senior. And that's the thing. That nowadays, it does seem like that word gets thrown around randomly.
You should be a senior when you've spent years at a company learning all of their intricacies that only you could understand. It should be a earned title that you can take to your next job. "Oh you were a senior at this place, nice". It definitely shouldn't be just a measure of time in which you may or may not have worked very hard. Sitting in a chair making CSS changes and adding a link here or there for 10 years is definitely different than building from the ground up solutions for a company for 2 years.
At the end of the day though, and this is the big moral of the story, a title is just a title and it doesn't measure skill or years of experience. If I took a job next week that just so happens to have the word "senior" attached to it, the only impact that would have is that I get to put "senior" on my resume. It doesn't make me better than the guy to the left of my cubicle who's been there for years and maybe it shouldn't warrant a bigger paycheck either. Programming is that field where the code should do all of the talking.
Enjoy this post?