I’ve been a software developer for over 15 years and I still don’t know what to call myself.
You’ll notice in this book I try to drop programmer and sometimes software engineer into some of the text, just for SEO, because I honestly don’t know of a single title I can use to describe software developers which everyone can universally agree on.
(Although, I’m sure you’ve noticed by now that I’m pretty set on software developer. That’s why I use it so much.)
Beyond trying to agree on a generalized name for developers, software developers, programmers, software engineers, coders, computer programmers, and the like, we’ve got to contend with job titles.
What the heck is the difference between a Senior Software Engineer and a Junior Software Engineer?
And how do they compare to Software Developer II and Software Development Engineer in Test?
This is some pretty confusing stuff.
Well, if all of this has confused you in the past—and the present—I’m here to tell you that you are not alone.
I’m still confused by all of this, but this chapter is my feeble attempt to sort it all out for the both of us and offer you some general guidance in terms of how these titles can affect you and your career.
Job Titles Don’t Really Matter…
The first thing to know about job titles is that they don’t really matter.
Why don’t they matter?
Because there are a hundred different job titles across many different companies, and even when companies have the same job titles, their meaning within that company can greatly differ.
In one company Senior Software Engineer could be the title given to all standard development jobs.
In another company Senior Software Engineer could mean that you are the technical lead for an entire team of programmers.
In yet another company Senior Software Engineer could mean you are old.
So, when you read the name of a job title in this crazy world of technology, don’t read too much into it.
Instead, read the job description and pay attention to the pay—that is what really matters.
… But Get The Best One You Can
With that said, the world at large doesn’t know what I just told you.
As confused as you are about job titles, so is everyone else.
No one can figure out whether a Software Developer III is better than a Senior Development Engineer.
So, what do people go on?
What the job title sounds like.
Yes, it’s silly, but it you can land the job title Senior Director of Software Development, that’s probably going to get you a better next job than Junior Developer will, even though you might be doing the exact same job at a company that only has two programmers on the team.
That means you should try and get the most prestigious title as possible.
What? What is that you say, John?
Are you really saying that I should play this stupid title game?
Yes. I know it’s silly.
I know it’s meaningless, but executives play this little game all the time.
Ever wondered how someone gets to become a CEO?
Simple. They play the “title swap game” until they reach the CEO title at a small, rinky-dink company, and then they trade up to a bigger company now that they’ve got that title on their resume.
Again, I wouldn’t put too much emphasis on this.
During an offer negotiation, it makes sense to at least consider negotiating your title and seeing if you can add more prestige to it. You don’t have to emphasize it over other things, but you should ask for a better title.
You can also play this game when you get a promotion, or even in lieu of a promotion if you get turned down for a pay raise. (Hey, I know you can’t pay me more right now, it’s not in the budget, I get it, but could you at least change my title to Supreme Commander of the Secret Codes?)
Some Common Job Titles
Let’s talk about some of the most common job titles you are likely to encounter as a software developer.
First, we’ll start with the obvious, Software Developer.
Nothing special here. You’ll probably hear this one quite a bit—especially if you consume the content I produce.
I like this title because to me it's pretty descriptive and general enough to describe what most programmers do. They develop software.
Programmer. This one is interesting.
I actually prefer this one, because it’s extremely simple and it describes the core of what we do. We program.
Yes, we develop software, but technically you could develop software without programming and coder is a bit too vague.
However, it seems a great majority of programmers are insulted by just being called programmers.
You don’t get it man, they’ll insist. Software development is more than just programming.
I’m an engineer. I gather requirements, talk to customers, design, architect, test, mold clay sculptures out of silly putty.
No, I get it. But primarily what people hire you to do is to program. To write code.
So, I’ll have to be happy enough with my company being called Simple Programmer and I’ll use the more complex phrase software developer and call it a day.
Then you have Software Engineer and all of its many variants.
By the way, have you noticed that 90 percent of Software Engineers are Senior Software Engineers?
I’m ok with this title, but electrical engineers, mechanical engineers, structural engineers, and the like seem to lose their shit when they hear this title.
It kind of amuses me, but I’d rather avoid wasting my time continually arguing the point, so I generally avoid this term nowadays.
I’m not really a respecter of gatekeepers and people who say “you have to be approved and meet some criteria to call yourself an engineer.”
It’s kind of like people who insist on being called doctor since they have a Ph.D., or put silly initials after their name even in completely social settings.
The only academic authority I R-E-S-P-E-C-T is called R-E-S-U-L-T-S.
For me, not using software engineer isn’t really about respecting the engineer part of the title, it’s more about when I think about engineering, I think about the older, waterfall way of developing software.
When I think ‘software development,’ to me that conveys the evolution of software—the Agile way—a bit more.
The One Job Title To Avoid
With that said, there is one job title I would try to avoid if possible.
That is the job title of junior anything.
Junior Developer. Junior Software Developer. Junior Software Engineer.
Many programmers starting out think that they have to start out as junior developers – but it’s just not true.
I’ve found that junior developer positions usually require a similar set of skills as a non-junior developer role, but pay much less.
Besides, guess where the most competition in the software developer job market is?
That’s right. Junior developer.
If you are just getting started and don’t have any real-world experience yet, you may not be able to get a senior software engineer position, but there is no reason why you can’t get a regularly titled developer role.
The biggest problem with junior roles is that if you take a junior role, in about a year — or at the most, two — you’ll likely be doing the same work as developers without the junior attached to their title, but you’ll probably be paid significantly less.
So, instead of looking for junior roles, look for jobs with non-junior titles that simply require less experience or require a very specific set of skills which you specialize in.
It may actually be easier to land one of these jobs than a junior job, which every fresh college graduate will be competing for.
The Basic Roles Or Jobs
Even though there are quite a few different job titles for software developers, there are really only about five different roles on the technical track of software development.
Most jobs will fall into one of these job roles or levels.
SDET (Software Development Engineer in Test)
You don’t see this role in many small organizations, but larger companies like Microsoft like to hire developers first as SDETs.
A Software Development Engineer in Test is really just a software development role where you aren’t writing production code, but instead writing either code to test code or working on tools.
This role could also be called a tools developer or something similar.
You can think of this as a software development support role.
This is a good place to start, because if you work on writing automated tests or tools to help with testing, you’ll gain a good understanding of the testing process—which can actually help you to become a better developer overall.
Developer (junior / regular size / senior)
This is the standard software developer role.
Most developers are going to fall into this category of developers.
Here you are working on the actual product and writing code.
Team lead or tech lead
This is a step up the ladder from software developer.
In this role, you may be leading a team of developers, doing some management as well as development, will likely be contributing to the architecture of the code base, and perhaps doing code reviews and mentoring other developers.
Leads are also usually in charge of making important technical decisions about the project and perhaps interviewing developers, assigning tasks, or other responsibilities.
Leads are usually still writing code for most of their job, otherwise they’d be managers.
In this role a developer might not be writing code very much any more, but will still be highly technically involved with the software.
An architect may design the entire system, attend meetings to decide on technologies and architecture, or even prototype experimental features or complete systems.
Large companies tend to have architect roles—especially for large software systems that require quite a bit of design and planning.
An architect might be responsible for the technical direction and ultimate implementation of an entire project.
This role is barely a software development role—and some people could argue that it isn’t—but I decided to include it here since many software developers in large organizations end up in this role.
Some companies call this role a fellow or technical fellow.
Essentially in this role a software developer is a distinguished expert in the field and might be leading research, working as part of a think tank, or involved in very complex or high-profile projects.
A director-type role might also involve directing an entire organization of developers and making both technical and non-technical decisions as a director of software development.
Big Tech Company Job Titles
Job titles tend to get a little more formalized when dealing with larger corporations.
Most large tech companies like HP, Microsoft, Apple, etc., have a formal set of job titles and associated pay scales that go with them.
Knowing this information ahead of time can really help you with negotiations and understanding how this system works. It can help you to get raises or move up in the company.
It basically works like this.
Suppose you get a job at a big tech company.
Most likely, you’ll be applying for a specific job title—let’s say Software Development Engineer.
That job is associated with a level, which determines the pay and the responsibilities and general qualifications/expectations of someone in that role.
Typically this level will be assigned a number, like 59.
That particular job title, Software Development Engineer, might be associated with a range of levels.
So, for example, Software Development Engineer might go from level 59-60.
At 61, the title might change to Software Development Engineer II.
At 63, the title might change to Senior Software Development Engineer.
Each level has a lower and upper pay range, so the actual level is much more important than the title itself.
If you get a job at one of these companies, you want to get in at the highest level possible, so that you can have the highest possible pay band.
It would be better to get in at a higher level than a higher salary, if given the option, because over time the software developers at the same level who are lower on the pay band for that level are more likely to get raises.
The company’s Human Resources office tends to try and get everyone at the same level to near the same amount of pay.
Typically in these large corporations, a raise would just be a salary increase within the same level, but a promotion would be a raise to a higher level.
In most of these companies the pay bands themselves are kept somewhat secret—although you can find the information if you look hard enough—but the titles and level progressions are usually provided by HR.
You can also usually find a set of requirements that define what makes a software developer a certain level.
We’ll talk more about this in later chapters, when we discuss getting raises and promotions, but you should always know what the requirements of the level above you is and the level above that.
Shoot to fulfill all the requirements of the level that is two above you and you’ll have a much easier time getting a promotion.
You’ll also notice that some of the highest levels usually require you to be an industry leader and have an influence beyond your company.
This is one of the reasons why I stress creating a blog and building your personal brand so much.
If you ever want to be a technical fellow or similar role and reach the highest ladder levels, you need to be well-known in your specific niche within the software development industry.
That’s Quite A Bit About Job Titles
Yeah, I know—especially when I said they don’t matter.
But, the simple fact is that even though the job titles themselves don’t matter in the industry as a whole, they certainly can matter within an individual company.
So, my best advice to you is to not worry too much about a job title across companies, but to try and figure out what a job title means within a company and more importantly, to understand the job itself.
And if you really don’t like any of the jobs titles you’ve been given, you can always start your own company and call yourself whatever you like—that’s what I did.