Junior Developer: The Title You Should (Almost) Never Accept
I’ve had sort of a hate-hate relationship throughout my career with the title of junior developer. Wait, that’s too nuanced. Remove the “sort of” — I’ve just had a hate-hate relationship with the term.
This isn’t a job title you should accept, unless you have your back against the wall. A prospective employer might say to you, “congratulations, we’re offering you a junior developer position!” Treat this equivalently to “congratulations, we’re offering you a position at $10,000 below market value!” or “congratulations, you’re on your own for health insurance!”
If you’re hard-up, take it. But keep your job search going full throttle, and keep your current “junior developer” role off your resume. If you don’t have mouths to feed and rent to pay, take a pass.
Why? Well, I’ll get to that.
Junior Developer Title on My Mind
Last week, unprovoked, I tweeted out my opinion of this title. I don’t need to rehash that tweet here, since I’ve already explained my stance here. But I got a thoughtful and reasonable question in response.
Can I ask what your reasoning is? In the past we’ve taken on people with no development experience & called them “junior”, & the day they get to drop that word from their title seemed to me to be a positive celebration of their progress in learning. But open to new perspectives.
— Russell Dunphy (@rsslldnphy) April 1, 2018
I didn’t respond to this because I’m terrible at Twitter. In fact, I didn’t actually notice it for days and then I got busy. I thought to respond at that point, but then I realized that I’m enough of a blabbermouth that I’d adjudicate myself much better in a blog post of 1,000+ words than I would in a tweet of 280 characters or fewer.
Then, coincidentally enough, someone mentioned me in another tweet (that I also didn’t notice for a while).
Got some responses. Need more! RT for reach. #DevDiscuss
CC: @raelyard @saltnburnem @ThePracticalDev @pavsaund @ReidNEvans @pryelluw @jonhider @rick_pack2 @daedtech @tednewardhttps://t.co/CSOivuE0oB
— Jose Gonzalez (@JoseGonz321) April 4, 2018
“How do you reward junior devs that are kicking ass?”
My initial, off-the-cuff thought? Stop calling them “junior devs,” for God’s sake. But I didn’t get the sense that was appropriate for the conversation.
Instead, I think it’s appropriate here, in a post telling you not to accept this title.
The Intended Audience Here
Notice to whom I’m directing this advice. In the last sentence of the last section, I told you not to accept junior developer as a title. Same thing in the title of the blog post.
I didn’t say not to offer that title. I’m not writing this post as a treatise on the nuance of which titles companies should offer. In fact, I don’t think much of the construct of job titles anyway. Internally, they’re mostly sound and fury, existing to salve egos and make the HR pay matrix easier to compute. Externally, though, they matter, and that’s why I’m addressing people who have not yet knuckled under and accepted a poison pill title like “junior developer.”
Now, it may seem that my tweet was aimed at companies — “junior developer shouldn’t be a thing.” But, actually, that was my shorthand (and, somewhat opaque, if I’m being honest) way of saying that it shouldn’t be a thing because everyone should stop taking it. If an org floated a junior developer role to the assorted sites, sharks, and recruiters, and nobody applied, the titular problem would soon sort itself out.
No applicants for bad titles, no more bad titles. So stop accepting this title, and it will stop being a thing.
I’m Hiring an Incompetent Software Developer — Any Takers?
Let’s do a thought exercise. I’ve pretty well lost track of what salaried software developers make these days, but I’ll assume that, for the most part, it’s going to be decently under $150K per year. But don’t worry, I’ve got a job for you.
I’m looking for a full or short stack ninja that tests first, asks questions later, agiles to the max, and whatever manically enthusiastic things will get your attention in a job blurb. I don’t like people to work more than 40 hours per week, I don’t have any ping pong tables, offering instead good health insurance, dignity, and autonomy in your work. And I’ll offer you $150K per year even if you made $85K per year at your last job. Sound good?
Well, there is one catch, and I’m pretty firm on this point.
The official job title is “Incompetent Software Developer.” That’s what it will say in your offer letter and on the placard adorning the door to your corner office. It’ll say that on your business cards as well. And we have a pretty strict social media policy, so you’ll also have to updated your LinkedIn, Facebook, and Twitter titles all to read “Your Name Here, Incompetent Software Developer at DaedTech.”
Do you take this job?
That’s not a rhetorical question, by the way. An incremental $65K per year is no joke — that’s a TON of money. Some people might say you can’t put a price tag on dignity. Others might say, “I sure can, and that price is $65K.” I wouldn’t judge either way.
The Job Title as a Negative-Value “Perk”
In a CIO role that I once had, years ago, I had to revamp the org chart for my group, as I described here. I picked the titles that I thought would make my people most competitive on the open market because I wanted good things for them in their careers.
The owner of the company had an objection at the time that infuriated me. He worried that giving them good job titles would make it easier for them to work elsewhere and wondered if we shouldn’t sandbag them a little. Make them “coders” instead of “software engineers” or throw in a “junior” at the lowest level.
I subscribe to Richard Branson’s wisdom related to this matter (which I think post-dated the conversation anyway). “Train people well enough so they can leave, treat them well enough so they don’t want to.” You keep people by partnering with them and making them feel valued, not by sandbagging them. When you sandbag them, you hold them hostage.
If I call you incompetent software developer, publicly, and overpay you, I’m slapping golden handcuffs on you. If I call you “junior developer” and offer you a job when most others won’t, I’m doing a milder, subtler, more socially acceptable version of the same.
Job Titles Matter More to Employees Between Jobs than During Them
The job title, in spite of being a construct whose value I fundamentally question, is sociologically fascinating for an armchair dilettante like myself. Within a company, job titles mostly matter procedurally. They tie to pay bands and the org chart, which means that they’re basically trailing indicators of your status. They don’t confer anything useful that your offer letter, HR file, and the organizational chart don’t convey. Mostly, they help with vanity considerations, like whether you’re more important than the “senior” down the hall or less important than the “principal” with a corner cube.
But then, when you go to interview somewhere else, they suddenly matter in a very economically tangible way. The loose title consensus across the broad spectrum of companies (and, quite often, the question “how much did you make at your last job”) is how your new company places you in its pecking order. If you were “senior developer” there, you should probably be something like that here.
This results in some weird dynamics with titles. For instance, take companies that get cute and give people titles like “software rockstar.” You’ll probably see a little steam come out of the ears of HR and recruiters as they talk to you, trying to figure out the appropriate pay band.
But take something less cute. Take something like “junior software developer.” They know just where to put you — on the reject pile before they bother with a phone screen.
You think otherwise? “Junior” is a synonym for “probationary” and for “we don’t think you’re up to this job, but we’ll take a flier that you might prove us wrong.” How do you think that’s going to play when you’re applying for other jobs while sporting that title?
They’d rather hire someone with no experience, because at least that’s an unknown. Hiring another company’s “junior developer” means hiring someone that another company knows about and doesn’t believe in.
Don’t Limit Your Options If You Can Avoid It
In the beginning of the post, I said that I wasn’t going to try talking companies out of making this play. Why would I? I’m not a fan of it, ethically, but it’s a rational realpolitik play. They’re taking a gamble on you at the entry level, so they have the leverage and the natural incentive to handcuff you in response. It’s little different than tuition claw-backs and overreaching non-competes. Both are rational, in my opinion somewhat bad faith, and entirely avoidable from an applicant’s perspective.
That’s why I’m not appealing to companies. I’m not going to beg them not to operate out of rational self-interest, or to avoid claw-backs or to stop trying to frighten you into silly non-compete contracts. And I’m not going to beg them to stop giving you bad titles if you’ll accept them.
Instead, I’m going to beg you to not accept bad titles.
But I’m only going to do this if it makes sense for you. If the company is an otherwise great opportunity or if you need to pay your rent, then do what you have to do and figure out how to generate mobility for yourself later. As you consider the offer, though, think of it this way. When you accept “junior developer” as a title, you’re throwing yourself entirely on that company’s mercy. Think of it as the equivalent of them asking you to sign a contract stating that you’ll only work for them until they say you can go elsewhere.
That might, in fact, be your best option. But if you can afford to wait for a better offer, then do so.
By the way, if you liked this post and you're new here, check out this page as a good place to start for more content that you might enjoy.
Great article. The take away i find is = sell your self, but don’t sell your self short.
I’d say that’s a great tl;dr summary 🙂
Really? If that is the case and the tldr is “don’t sell your self short”(sic), this whole article is pretty damn stupid.
You think so, “ex-junior?” I guess I’ll just have to un-publish it and re-think my life. Glad you stopped by!
You’re welcome.
No, no, please don’t unpublish it. Keep this stupidity online, so people can see it.
Any information will most likely be useful to someone at some point.
Wow, how philosophical. I bet comments sections everywhere are richer for your efforts.
But anyway, thanks for your permission to let it stand. I’d been sweating it out over the last week, wondering what you’d decide.
You are called junior, in any field, because you are. It means you are less experienced, and have quite a path ahead of you. It means tasked deemed easy or even trivial by more experienced developers will take you a long time to complete and the code you produce is more prone to bugs. I don’t invent this, that’s just how it is. It also means the companies that hire you will pay less, because you are a bigger risk and larger investment. It doesn’t mean that nobody will hire you. I’ve worked for several companies in the past who… Read more »
I’m not entirely clear who the “you” that you’re addressing is, Is this comment directed at me, the author, or are you adding sort of an addendum and addressing other readers? Edit: and, am I reading the implication correctly in the last paragraph that, over the course of a fifteen year career, you’ve accepted non-consecutive software development roles with “junior” in the title? (E.g. going from “Junior Developer to “Software Engineer II” and back to “Junior Developer” or something) If so, I’d be interested to hear how that all shook out. There’s got to be an interesting lateral transition story… Read more »
The ‘you’ in my previous reply is not directed at the author, but at the general reader. I’ve had the opportunity of growing from junior to medior in my first job, and have always been able to find a job fitting my skill level. That’s exactly the point I’m trying to make. It’s the skills you possess that earn the title you deserve. I got where I am today through a lot of hard work and because I love what I do. I’ve met engineers in the past who boasted the title senior developer who were, quite frankly, not skilled… Read more »
I definitely agree that, let’s call them “over-titled” (and with too much responsibility) software developers exist. I wrote a pretty long and popular take on that years ago, in fact: https://daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner/ Philosophically, I view this as a core problem with the premise of the job title. But let me ask you this. Do you think your career path would have gone differently or worse in any way if your first job had left “junior” out of your title? Would you have worked less, acquired fewer skills, or been worse for it somehow? Or, conversely, were you somehow better for that… Read more »
This pretty-much nails what I was thinking. Having worked at a company which takes on junior developers so that they can learn and grow, this definition of junior is on-point. When the person demonstrates that they are beyond the junior phase (can work without the safety-net of a senior watching over their code for issues, checking in with them regularly to ensure that they aren’t being held up by a problem that they need help with, checking on their progress to guide them out of potential rabbit-holes, etc), then they have a title upgrade. And naturally, what goes on their… Read more »
I agree the term is silly, but at the same time, experience matters way beyond the proficiency in the application of particular static bits of knowledge. When writing such articles I would suggest to take somewhat broader view on the job market while searching for arguments compared to provocative examples that come to highlight a particular belief. The topic is indeed interesting if scaled towards the increasing automation we observe in all areas of the industry nowadays. So if you are up to it(and are willing to spare the time), I would suggest to go out of the box and… Read more »
I have no idea why someone came by and down-voted this, so I did what I rarely do and voted on a comment to at least level you out to zero. There’s a lot of interesting ground that you cover here that’s stuff I like to discuss: the commodification of lower skilled software development, chasing tech stacks instead of developing problem solving skills in a domain, evolution of job titles. Hard for me to address everything, especially in a time crunch, but this touches on a lot of subjects that I write about and I suspect we’d share a lot… Read more »
It never bothered me at all being a Junior Developer, it just seemed accurate.I stayed for 2 years before leaving for another city for personal reasons – the company was fantastic. If I stayed until my next review 6 months later, I probably would’ve been bumped to intermediate. When I applied at the new company I worked for, they didn’t care about my title. They said they wanted someone with 2 years of Oracle + Struts, that’s what I had. They asked good interview questions (the only time this ever happened). I can understand what you’re saying, but I don’t… Read more »
The challenge that I face with the blog and having a pretty decent amount of traffic/readers is that I’m always addressing the situation in aggregate. In other words, I wouldn’t go so far as to say that “the title of ‘junior developer’ guarantees that you won’t ever get another job.” With pretty much every bit generalized writing that I do, someone could come along with counter-example(s). But on the flip side, I get a lot of reader questions and requests for advice, and a disproportionate number of them about job searching are (1) I can’t get hired at the entry… Read more »
I also started out with the title ‘junior developer’, but worked for a bigger IT contractor for 5+ yrs so I left with the title ‘senior’ developer, mostly thanks to a manager that was generous. At the time this made it a lot easier to get in at certain companies starting with that senior title and getting the accompanying pay. I did some product mgmt for several years, which further increased my paycheck, but then I decided I wanted to do some development again, bcs I was losing contact. So I used the senior title again, which guaranteed the higher… Read more »
I think, personally, that the subject of job titles would make for a pretty fascinating anthropological study, both as an internal concern for the company and also intra-company as people move around. Something you’re saying here, though, strikes me as interesting, and I can relate since I’ve been programming for a similar amount of time in various capacities. When you move on to the Nth object-oriented language, or the Mth web framework or what have you, do you really feel that this somehow resets you to “junior” for some definition of that word? I mean, the switch from say Java… Read more »
Well yeah, it is a fact that it’s not the language switch, that was mostly the easiest part, but the surrounding ecosystem : Delphi and its components (was my first job though, and only for 6 months since the company was really awful, but that’s another story), then 3-4 years in some banking-specific language that has no resemblance to anything I knew, and very limited. At the time in that job there was hardly any work for the dozens of developers, but we weren’t allowed to : 1. internet access, 2. external email, 3. install anything on that PC, 4.… Read more »
Titles are funny things. Once, during the .com years (before they became .bomb), I stepped out of consulting to take a W2 position in the competitive world of trading. My initial title was “Software Development Manger”. The next time the owner of the company introduced me to a client, he called me “Director of Software Development.” I blinked, shook hands…and printed business cards with that title. (We had to provide our own cards.) He never complained. The next big client, I was introduced as “VP of Software Development.” Blinked again, printed new cards. In the fullness of time, I was… Read more »
Bingo! That’s exactly what I’m getting at. People (especially individual contributors in the programming field) put a lot of stock in title modifiers because they think it is an accurate reflection of some objective notion of merit (rarely true, since it’s generally just a reflection of years spent in the industry). But title is negotiable in any job search (and, to a lesser extent, at perf review time), and negotiating a better one has a compound interest effect that makes a huge difference in your career. (As an aside, I like the title acquisition story. I’ve seen that sort of… Read more »
I don’t accept the premise that Junior = Probationary. Following that premise, Senior also = Probationary because more is expected from the experience and knowledge behind that title. Every company I have worked for in my 25+ year career has had a “proving” period of some sort, whether it was official, or behind closed doors talks of whether a developer is “making the grade” regardless of the title for which they were hired. I do agree that if you can at all avoid the “Junior” title, you should, especially since the pay range would most likely be increased. But that… Read more »
“I don’t accept the premise that Junior = Probationary. Following that premise, Senior also = Probationary because more is expected from the experience and knowledge behind that title” If we follow that a little further, don’t we arrive at the conclusion “job titles are silly” via “all job titles are probationary since you’re always new to the title at some point?” Junior isn’t a probationary title in the sense that you’re new to the company — it’s the sense that you’re new to the *discipline*. “Senior” doesn’t imply newness to the *discipline*. That’s the difference. All titles and all jobs… Read more »
Job titles are sometimes problems for companies and employees. In my case, I started at this startup as “Senior Software Developer” even though I had 20 years of experience, started 2 companies, exceeded this job title 15 years earlier, etc. The HR person at the time said (Job titles don’t matter and will never be used to deny pay raises, etc). Fast forward 17 years and after 2 acquisitions, the current company says I make too much for my job title and has been giving me tiny pay raises (around 1%) for the last 3 years (ignore the fact that… Read more »
Ouch. Sounds like years of retroactive imposition of tighter pay matrices to keep bulk software development cost down as they expanded (and doubtless to add a layer or two of management). “Job titles don’t matter” ==> sounds like every hiring authority I’ve ever heard when trying to convince someone to accept a title they’re no thrilled with. Out of curiosity, doesn’t your company have some kind of architecture track that splits the difference in job description between software development and management, but while creating some upward pay mobility for developers? That’s a pretty common way for org chart designers to… Read more »
I do agree with the idea of the article, but as a though doesn’t the same concept apply to something like a Senior Software Developer or whatever title. The title implies advanced knowledge, a certain set of skills and a certain level of pay. A company might look at that and go I can hire him, but I can’t afford him so I will offer lower salary. The employee may have managed to fail upward, it does happen, and be either unskilled or incompetent, but managed to hide this well enough to up his title and than jump jobs to… Read more »
I guess the one question I wonder about and see others mention is how capable are future employers at finding out what your actual job title history really is? I mean I’ve been at this business for over 20 years now and I know back when I started in Paleolithic you could adjust your title a bit and no one would be the wiser. These days I always wonder if I put down that I’m a lead software engineer (which btw one of my managers actually called me by mistake because that’s what he thought I was) how badly is… Read more »
The first dictionary definition of “junior” is “of, for, or denoting young or younger people.” That’s the problem. It’s not enough that it also means “lower in status or rank.” The connotation likens someone to a child. It’s insulting to call an adult a “junior” anything. My previous company at least used the title “Associate Developer.” Their titles were as meaningless as anyone’s but at least they didn’t belittle anyone.
I couldn’t agree more with the subtle insinuation of child-like status. (That’s actually why we made the post graphic one of an adult patting a “toddler programmer” on the head.)
It seems that my Micro$oft API stack skillset has always gone obsolete so fast that I’m always a “junior” developer.