What is a senior developer?


There was a very interesting discussion in the office today about what a senior developer is (we were talking about JavaScript developers, but I guess it could be applied to any programming language).

I was saying that there is no possible way that a developer can be senior after only 2 years of experience. There is simply not enough time to meet the unexpected. And that is what, in my opinion, makes a senior: the unexpected. The ability to not be surprised and blocked. That is when a developer becomes senior.

There were of course voices that said that 2 years is more than enough. And it only depends on how passionate you are (how can passion be a factor in establishing seniority?). Then there was a slip from someone who said: if you convince your current employer to make you a senior, than you can put it in your CV and the next job recruiter would have to take you into account for a senior role. That made me think: hm.. sneaky one. So you you put it in your CV just for to market yourself? So the seniority became just a keyword? Who is to blame for this? Can we fix it?

About 3 years ago someone estimated that the number of programmers doubles every 5 years. I suppose then, there is this need of making oneself appear “seniorer” than the rest. But is it fair? and I mean it. There are senior developers with less than 2 years of experience and less than 25 years of life who participate in technical reviews during interviews (and I mean it because I have seen it) and they evaluate people that have more years of experience then they have of life, only to conclude that the respective developer is not good enough. I guess I am a bit afraid that I will one day be evaluated by one of these. And maybe I am more afraid of my reaction to it. I am afraid that I will try to impress this kid into hiring me. Is this ok? Is there something wrong with me? Are there any others like me?


5 Responses to What is a senior developer?

  1. I became a senior in exactly 2.5 years. It was because of the passion. I jumped on everything, studied everything, practiced everything, and I had a background in management so I was a more big picture kind of guy anyway. At year 5, I am a senior architect designing and building large, multi-domain enterprise systems.

    I agree that dealing with the unexpected is a big part of it, but I had that covered as well. I event progressed in a very difficult environment (payments gateway) where every problem that arose was potentially catastrophic. I often had several 20-30 year veterans coming to me for advice. They hated it, but sometimes you gotta do what you gotta do. I was constantly being accused by those that didn’t know me, of being too big for my britches as if it was going to all come crumbling down on me, but it never did. I only continued to learn and apply. I’ve troubleshot and recovered from several disasters where entire production servers were repeatedly crashing, and event a core database being ransomware’d (don’t worry, none were a result of anything I designed lol). I run training seminars, manage teams, advise business stakeholders, develop actual code, and of course normal architect duties such as research, design, specification, analysis, etc. I have 100% job offer rate (I get scouted a lot and tend to attend a lot of interviews). To be fair, I’m not 25 years old, I’m 37. I just got a late start.

    My point here isn’t to brag but to point out that it is absolutely possible and passion makes a large difference. Sure, maybe I just had a knack for this stuff, I had a background that gave me a leg up, I see the world and software differently than most, I see the matrix, whatever… but it was my devotion to the craft that got me to where I am and where I can say that I’m not one of those “expert-beginners” that shouldn’t have the title that they have. I earned it and I love what I do.

    Objectively, the only things that I don’t have that more tenured devs do have is the patience that is forged over decades. I am admittedly impudent and crass. Mostly because I grew up military and served 6 years on the USAF flightline. I have very high expectations of devs on my team and I’m often not very forgiving of failure to develop oneself. This is something I am working on personally.

    The hard thing to do is navigate the bullshitters in the field. Those that honestly believe they’re rockstars, but are garbage. We have one on my team right now that weaseled his way in. He won’t be here much longer. I think the best way to control this is, depending on the size and maturity of your organization, is to have engineering levels an actual rubric to define and gauge them. Then stick to them. It’s much harder for people to grab promotions they have not earned.

    For example, my last company defined a senior developer (E-3+) as someone that is closing in on being an E-4 (team lead/application architect). They can stand in for engineering managers when needed. They can lead the SDLC from soup to nuts. They can create every layer of a brand new application from scratch and see it through to production launch if needed. They can and do mentor lower level devs. And a few more descriptions — but have demonstrated these abilities. Then when bringing in new hires that did not progress through the same rubric, they have 90 days to gain that kind of trust with the team. If at the end, the do not fit the description, they are offered a demotion or are let go. And of course, they are paid commensurately.

    With regards to your concern that you may be interviewed by some relative noob in the future: It’s important to remember and acknowledge that software development changes rapidly. As technologies improve, practices change and not everyone keeps up. So while person A with 25 years experience has a track record of success, that doesn’t necessarily mean that they’re a better fit than a hot shit dev with 2 years experience that is up to date with all of the latest tech. I mean… in most cases, yes the 25 year vet is probably going to be a more productive choice depending on what the company is looking for. Sometimes we get bit by someone holding a title that they have not earned, sometimes we get bit by someone that holds a title that they earned once upon a time but who has also been weighed down by experience.

    What I mean to say is that too many times, I’ve been confronted with this scenario where Veteran A is working on the same project as Noob B, but the in the end, Noob B is putting out twice as much (if not more) as Veteran B and in roughly equal if not high quality because he used newer techniques, leveraged the current framework, etc. Oftentimes this is because the veteran has been bit by more things than the noob as and they’re thinking through a lot of that stuff and then coding defensively around it, etc. — and that’s great, but sometimes it’s debilitating. So it really depends on the individuals and what the company needs. Sometimes we need safety and maturity, and other times we need tangible progress that the investors can see. Those needs fluctuate with time, for course. In other words, it’s not the perception of your prowess so much as it is about finding a fit for both the company the team. I’ve had to turn down far more seasoned vets than I have up an coming developers because of these factors.

    • I agree with what you say about passion and gaining the knowledge. As you said, you are 37. If you were 25, would it have been the same? I am sure one can gain the knowledge, but had you had time to gain the experience?

    • Hey, great comment! It seems that you know how to express yourself, how to make others understand what you are saying, how to be a teacher. This quality and your passion is what drives your rapid evolution.

      But, you are a (good) exception. I think in most cases Oana’s observation applies. That’s a bad think but it is the reality, at least here in Europe.

      Thanks again for your nice point of view!

  2. Typo: 20-30 veterans coming to me for advice = 20-30 year* veterans

Leave a Reply

Your email address will not be published. Required fields are marked *