What makes a software developer different from a programmer or software engineer? You may be tempted to answer “not much.” To a certain degree, these terms are interchangeable. They all refer in a generic sense to someone who helps create software. But, when you dive deeper, you realize that there are important differences among software developers, software engineers and programmers. The terminology you choose to use plays an important role in defining job functions--not to mention setting expectations around salary and career trajectories.
To prove the point, here’s a breakdown of how developers, programmers and engineers are similar and different within the software ecosystem. We’ll also discuss the pros and cons of labeling yourself with any one of these particular terms--and how you can “move up” if you find that you’re stuck in a lower-paying, less prestigious role like programming.
The Software Hierarchy: Programmer vs. Developer vs. Engineer
Again, software programmers, developers and engineers all focus on one basic task: creating software. But their specific responsibilities and approaches can vary significantly. Indeed, there is a sort of hierarchy that separates these roles, with programmers occupying the least prestigious position and engineers at the top of the totem pole.
The differences in prestige are a reflection primarily of the varying degree to which each role is expected to perform tasks that extend beyond writing code.
When it comes to software programmer vs. developer, the differences come down mainly to scope. In general, the only task of software programmers is to churn out code. Programmers aren’t typically tasked with designing application architectures or helping to test or manage code as it flows down a CI/CD pipeline. They just write code to implement whichever functionality they are told to implement, then hand it off to someone else to build, test and deploy. Software developers have a broader purview. They spend much of their time writing code, but they may also help to build, test and deploy code. Sometimes, they participate in application design, as well.
Software engineers, meanwhile, assume the broadest set of design-centric responsibilities. They may sometimes write code, but their main tasks focus more on helping to plan and design applications. Software engineers take the lead in deciding when it’s time to modify an application architecture, or scrap a codebase and rewrite everything from scratch, for instance. They may also help to plan CI/CD pipelines, define release schedules and identify the best deployment options (like containers or serverless functions) for an application.
Programmer vs. Developer vs. Engineer: Salary and Career Trajectories
The varying responsibilities of software programmer vs. developer vs. engineer are reflected by the differing earnings and career opportunities associated with each role.
Salary-wise, the differences are significant. The average salaries of each role break down as follows, according to PayScale:
What’s more, compared to programmers, developers and software engineers typically enjoy more opportunity to advance into even higher-paying roles, such as DevOps engineer or SRE. The latter types of positions require familiarity with the entire software delivery and management process--something that developers and engineers are more likely to have than programmers, whose main job is merely to write code.
Moving up: From Programmer to Developer to Engineer (and Beyond)
Of course, it’s worth noting that programmers, developers and engineers alike tend to come from the same types of backgrounds. Most have degrees in computer science (although it is perhaps easier to become a programmer just by attending a coding bootcamp, whereas jobs in development and software engineering may be harder to come by without a formal CS degree).
The point at which the career paths of programmers, developers and software engineers diverge, then, is usually when folks enter the job market, not when they are learning about software development.
If you want to maximize your pay and career opportunities, this is good news. It means you can choose to be whatever you want to be. If you want to earn more and advance quickly in your career, try to land a position as a software developer or engineer out of the gate. If you start as a programmer, it may take longer to move up into development or engineering roles, and you’ll be paid less while you wait.
That said, if you’re already in a programming role but want to move up into development or engineering, there’s not a whole lot stopping you. You just need to learn about the broader software delivery process -- and, possibly, software architecture. As a programmer, you likely already have enough proximate knowledge to master these concepts relatively easily.
Conclusion: Choose Programmer vs. Developer vs. Engineer Labels Carefully
The bottom line: In the software industry, the labels that are applied to jobs play a central role in shaping how people think about and approach the creation of software. Although it’s tempting to think of programmers, developers and software engineers as interchangeable, the reality is that calling yourself a programmer on a resume, or applying only for jobs with programmer in their titles, will place you in a different place career-wise than calling yourself a developer or engineer.
Likewise, if you’re creating positions related to software production at a company, the labels you apply to them may play a central role in shaping who you end up hiring and how they approach their work.