Advice

A Software Developer’s Guide to Jobs and Job Titles

John Sonmez · Feb 20, 2017 · 11 min read

I’ve been a software developer for over 15 years and I still don’t know what to call myself.\n\nReally.\n\nYou’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.\n\n(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.)\n\nBeyond 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.\n\nWhat the heck is the difference between a Senior Software Engineer and a Junior Software Engineer?\n\nAnd how do they compare to Software Developer II and Software Development Engineer in Test?\n\nThis is some pretty confusing stuff.\n\nWell, if all of this has confused you in the past—and the present—I’m here to tell you that you are not alone.\n\nI’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.\n\n

Job Titles Don’t Really Matter…

\n\n\n\nThe first thing to know about job titles is that they don’t really matter.\n\nWhy don’t they matter?\n\nBecause 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.\n\nIn one company Senior Software Engineer could be the title given to all standard development jobs.\n\nIn another company Senior Software Engineer could mean that you are the technical lead for an entire team of programmers.\n\nIn yet another company Senior Software Engineer could mean you are old.\n\nSo, when you read the name of a job title in this crazy world of technology, don’t read too much into it.\n\nInstead, read the job description and pay attention to the pay—that is what really matters.\n\n

… But Get The Best One You Can

\n\nWith that said, the world at large doesn’t know what I just told you.\n\nAs confused as you are about job titles, so is everyone else.\n\nNo one can figure out whether a Software Developer III is better than a Senior Development Engineer.\n\nSo, what do people go on?\n\nWhat the job title sounds like.\n\nYes, 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.\n\nThat means you should try and get the most prestigious title as possible.\n\nWhat? What is that you say, John?\n\nAre you really saying that I should play this stupid title game?\n\nYes. I know it’s silly.\n\nI know it’s meaningless, but executives play this little game all the time.\n\nEver wondered how someone gets to become a CEO?\n\nSimple. 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.\n\nAgain, I wouldn’t put too much emphasis on this.\n\nDuring 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.\n\nYou 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?)\n\n

Some Common Job Titles

\n\nLet’s talk about some of the most common job titles you are likely to encounter as a software developer.\n\nFirst, we’ll start with the obvious, Software Developer.\n\nNothing special here. You’ll probably hear this one quite a bit—especially if you consume the content I produce.\n\nI like this title because to me it’s pretty descriptive and general enough to describe what most programmers do. They develop software.\n\nProgrammer. This one is interesting.\n\nI actually prefer this one, because it’s extremely simple and it describes the core of what we do. We program.\n\nYes, we develop software, but technically you could develop software without programming and coder is a bit too vague.\n\nHowever, it seems a great majority of programmers are insulted by just being called programmers.\n\nYou don’t get it man, they’ll insist. Software development is more than just programming.\n\nI’m an engineer. I gather requirements, talk to customers, design, architect, test, mold clay sculptures out of silly putty.\n\nNo, I get it. But primarily what people hire you to do is to program. To write code.\n\nSo, 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.\n\nThen you have Software Engineer and all of its many variants.\n\nBy the way, have you noticed that 90 percent of Software Engineers are Senior Software Engineers?\n\nI’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.\n\nIt kind of amuses me, but I’d rather avoid wasting my time continually arguing the point, so I generally avoid this term nowadays.\n\nI’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.”\n\nIt’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.\n\nThe only academic authority I R-E-S-P-E-C-T is called R-E-S-U-L-T-S.\n\nFor 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.\n\nWhen I think ‘software development,’ to me that conveys the evolution of software—the Agile way—a bit more.\n\n

The One Job Title To Avoid

\n\n\n\nWith that said, there is one job title I would try to avoid if possible.\n\nThat is the job title of junior anything.\n\nJunior Developer. Junior Software Developer. Junior Software Engineer.\n\nMany programmers starting out think that they have to start out as junior developers but it’s just not true.\n\nI’ve found that junior developer positions usually require a similar set of skills as a non-junior developer role, but pay much less.\n\nBesides, guess where the most competition in the software developer job market is?\n\nThat’s right. Junior developer.\n\nIf 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.\n\nThe 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.\n\nSo, 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.\n\nIt may actually be easier to land one of these jobs than a junior job, which every fresh college graduate will be competing for.\n\n

The Basic Roles Or Jobs

\n\nEven 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.\n\nMost jobs will fall into one of these job roles or levels.\n\nSDET (Software Development Engineer in Test)\n\nYou don’t see this role in many small organizations, but larger companies like Microsoft like to hire developers first as SDETs.\n\nA 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.\n\nThis role could also be called a tools developer or something similar.\n\nYou can think of this as a software development support role.\n\nThis 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.\n\nDeveloper (junior / regular size / senior)\n\nThis is the standard software developer role.\n\nMost developers are going to fall into this category of developers.\n\nHere you are working on the actual product and writing code.\n\nTeam lead or tech lead\n\nThis is a step up the ladder from software developer.\n\nIn 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.\n\nLeads are also usually in charge of making important technical decisions about the project and perhaps interviewing developers, assigning tasks, or other responsibilities.\n\nLeads are usually still writing code for most of their job, otherwise they’d be managers.\n\nArchitect\n\nIn this role a developer might not be writing code very much any more, but will still be highly technically involved with the software.\n\nAn architect may design the entire system, attend meetings to decide on technologies and architecture, or even prototype experimental features or complete systems.\n\nLarge companies tend to have architect roles—especially for large software systems that require quite a bit of design and planning.\n\nAn architect might be responsible for the technical direction and ultimate implementation of an entire project.\n\nDirector\n\nThis 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.\n\nSome companies call this role a fellow or technical fellow.\n\nEssentially 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.\n\nA 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.\n\n

Big Tech Company Job Titles

\n\n\n\nJob titles tend to get a little more formalized when dealing with larger corporations.\n\nMost large tech companies like HP, Microsoft, Apple, etc., have a formal set of job titles and associated pay scales that go with them.\n\nKnowing 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.\n\nIt basically works like this.\n\nSuppose you get a job at a big tech company.\n\nMost likely, you’ll be applying for a specific job title—let’s say Software Development Engineer.\n\nThat job is associated with a level, which determines the pay and the responsibilities and general qualifications/expectations of someone in that role.\n\nTypically this level will be assigned a number, like 59.\n\nThat particular job title, Software Development Engineer, might be associated with a range of levels.\n\nSo, for example, Software Development Engineer might go from level 59-60.\n\nAt 61, the title might change to Software Development Engineer II.\n\nAt 63, the title might change to Senior Software Development Engineer.\n\nEach level has a lower and upper pay range, so the actual level is much more important than the title itself.\n\nIf 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.\n\nIt 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.\n\nThe company’s Human Resources office tends to try and get everyone at the same level to near the same amount of pay.\n\nTypically 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.\n\nIn 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.\n\nYou can also usually find a set of requirements that define what makes a software developer a certain level.\n\nWe’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.\n\nShoot to fulfill all the requirements of the level that is two above you and you’ll have a much easier time getting a promotion.\n\nYou’ll also notice that some of the highest levels usually require you to be an industry leader and have an influence beyond your company.\n\nThis is one of the reasons why I stress creating a blog and building your personal brand so much.\n\nIf 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.\n\n

That’s Quite A Bit About Job Titles

\n\nYeah, I know—especially when I said they don’t matter.\n\nBut, 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.\n\nSo, 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.\n\nAnd 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.\n\n


\n\n

John Sonmez

John Sonmez

John Sonmez is the founder of Simple Programmer, author of "The Complete Software Developer's Career Guide" and "Soft Skills: The Software Developer's Life Manual." He helps software developers build remarkable careers.