Stories about Software


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.

Regular developer patting a "junior developer" (actually a toddler) on the head

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.

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).

“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.

Add a Comment

27 Comments on "Junior Developer: The Title You Should (Almost) Never Accept"

newest oldest most voted
Notify of
Joseph c

Great article. The take away i find is = sell your self, but don’t sell your self short.

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 »
Davyd McColl
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 »
Tim Stoev
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 »
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 »
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 »
Dave I.
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 »
Jake Moon
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 »
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 »
Alex M
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 »
Scott Hannen

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.


It seems that my Micro$oft API stack skillset has always gone obsolete so fast that I’m always a “junior” developer.