In any field, different people play different roles in achieving the field’s goals. This is especially true of developers: not only do developers have different roles, but they also often have very different focuses and skill sets. For instance, a developer who focuses on front-end visual production and a developer who focuses on the underlying logic of software will approach projects from drastically different angles, with different sets of tools at their disposal. However, if you’re not a developer yourself, it may be difficult to suss out the different types of developers and to find the type that best meets your needs.
This year, StackOverflow put together a comprehensive survey with over 90,000 respondents, examining the tech landscape, and developers in particular. Using that data, we created a thorough list of the 12 most common developer types, to help answer the basic questions about different sorts of developers: what they do, how they work, and where they stand in the field.
Backend Developer: Otherwise known as a server-side developer, a backend developer focuses on the logic of software systems—ie, what makes a system work and how to improve its performance. They are generally concerned with how machines work in of themselves (ie, “computer theory”) and with designing systems that process and store data, often performing complex algorithmic calculations in the process. They are the second most common type of developer, closely following fullstack developers.
Backend developers are usually fluent in general-purpose, widespread coding languages such as Java, C++, and specifically in Python—one of the most widely used, and also best loved, coding languages. They may also be familiar with more cutting-edge languages. This can affect the average pay grade of a backend developer: fluency in a cutting-edge language like Go or Rust tends to lead to a higher salary. In fact, backend developers earn more on average than, for instance, frontend developers, even with the same level of experience.
Frontend Developer: Also called “client-side developers,” frontend developers focus on creating, maintaining, and improving the user-facing interfaces that most of us interact with when using a product or technology. They are generally concerned with making user interface design more intuitive to use and with fixing cross-browser issues.
Full Stack Web Developer: A full stack developer combines the skill sets and approaches of backend and frontend developers. They therefore work on both the underlying logic of a program and the user interface. Because of this, they are able to better synchronize the backend and frontend system designs and reduce the risk of friction or contradictions between them. However, because their focus area is larger, they are sometimes more “jack of all trades” rather than hyper-specialized in either the frontend or the backend. Still, full stack developers tend to receive a higher salary per years of experience than either frontend or backend developers. In addition, some full stack developers use Clojure, which is currently the most lucrative programming language by far. Full stack developers are also the most common type of developer: in our survey, they made up over 50 percent of respondents.
Desktop Developer: Desktop developers work on software made to run on individual laptops or desktop computers. This software is designed to work within an operating system, such as Windows, Apple OSX, or Linux. Some desktop developers tend to work within one specific operating system, but others are comfortable working with multiple OSs. They have some of the same skill sets as backend developers, but are usually also familiar with using SDK and graphics libraries like XAML, Cocoa, or .NET.
Around ten to fifteen years ago, the role of desktop developer was more common than it is today, though there are still a good deal of working desktop developers in the field—in our survey, they were the fourth most common type of developer. Perhaps due to the boom in the role’s popularity a number of years ago, desktop developers tend to be more experienced, with nearly ten years under their belt on average.
Mobile Developer: While desktop developers design code that’s used on laptops and desktops, mobile developers design code that runs within the operating systems of handheld mobile devices, like iPhones or Androids. Some mobile developers are basically specialized frontend developers who use mobile technologies, platforms, and software languages instead of web-based ones, while others create standalone apps and systems like desktop developers (with the difference that they are intended for use on handheld devices.) They tend to work primarily in the languages specific to iOS devices (Objective C and Swift) and Android devices (Java/Kotlin), but they may also work in C, C++, and related technologies and in other widely used programming languages.
In our survey, we found that mobile developers are some of the lowest-paid developers, averaging $45K a year. They are also some of the least experienced developers, which is a contributing factor, but their salaries tend to be lower than other developers with similar average experience levels, like QA Developers.
Graphics Programmer: Graphics programmers work primarily in the fields of video game production and special effects. They create their own designs or implement the designs of others by working on rendering, shading, and other visual effects, which creates sophisticated images in games, movies, TV shows, and other visual mediums. Their skill set tends to be extremely specific and specialized, and they often have extensive background knowledge of mathematics and algorithms, as well as artistic skills and talents.
Database Administrator: These developers create and manage database systems, as well as the systems and applications used to retrieve data from database storage. In some positions, database engineers also manage data pipelines (meaning, they transform production data into usable analytics data), and also focus on performance optimization. Their skill sets generally include SQL-based implementations (like MySQL and PostgreSQL) and may also include more specific and cutting-edge NoSQL databases (like MongoDB and Cassandra). They are also usually fluent in programming languages, specifically Python.
Database administrators are some of the most experienced developers in the field, averaging over 9.5 years. According to our survey, their salaries tend to lag behind certain types of developers with less experience on average, such as full stack developers, data scientists, and data engineers, but are more or less approximate to developer types like desktop engineers, who make slightly more on average but are also slightly more experienced.
Data Scientist: Data scientists use coding tools to transform large sets of data into usable information in order to draw conclusions and gain insights. They generally come from non-computer-science backgrounds, but are adept at using computer/machine learning languages like R and Python and tools like Spark to conduct statistical analyses and make predictions. They usually have extensive knowledge of statistics and are able to communicate effectively to management, sales, marketing, and other non-development departments.
Data scientists are one of the highest-paid types of developers when considering their average experience level, ranking fourth-highest paid among our respondents. According to our survey, data scientists are some of the least experienced developers, at around 7.8 years on average. Meanwhile, their average salaries exceed those of more experienced developer types, like database administrators and desktop developers.
DevOps/Site Reliability Engineer: A Site Reliability Engineer (or SRE) facilitates the application production process. They focus specifically on writing code that ensures that an application makes it safely into production and stays functional and available to both developers and users. This includes many tasks and disciplines, including building processes, provisioning resources, and making sure an application’s infrastructure is resilient in the face of possible viruses, database damage, bugs, and other potential bumps in the road. They are usually very familiar with cloud providers like AWS and Azure, continuous integration tools like Spinnaker, as well as Git implementations and log management systems like Splunk. Though DevOps developers are generally fluent in Python, they tend to use more cutting edge programming languages like Ruby and Go just as frequently, if not more so.
DevOps/SRE developers are some of the highest salaried developers in the industry. In fact, our survey found that they were the number one highest paid developers, with a median average salary of $95K. They also tend to be more experienced, and their salaries rise the more experience they have. Another reason for their high salaries is their choice of programming language: Ruby and Go are two of the most valuable languages in terms of salary.
Quality Assurance Developer: Quality Assurance Developers (or QAs) make sure that an application performs as expected. QA engineers specifically focus on ensuring that code that other developers have written does not break the application in question. Traditionally, QA engineers tested code by manually using software to see if anything went wrong. While many QA engineers still do this as part of their process, they also may code automated tests that simulate usage and check for errors, both in terms of individual features (unit tests) and a more holistic view of the feature within the context of the application as a whole (integration tests).
Because they work on code written by other developers, QA engineers tend to be fluent in, or at least familiar with, a wide range of programming languages. This includes the most popular languages for test automation (Java and Python), as well as other languages like Ruby. On average, they are some of the least experienced developers, and though their salary is on the lower end of the spectrum, they average a larger salary than other developers with more experience, such as mobile or game developers. According to our survey, they are roughly on par with frontend developers in terms of years of experience and salary level.
Client Relationship Management Developer: Client Relationship Management Developers (or CRMs) straddle the line between computer engineering and sales. They focus on creating, customizing, and implementing enterprise software (software that stores client and business information). Enterprise software generally falls into one of three categories: Client Relationship Management systems (like Salesforce), Enterprise Resource Planning systems (like SAP), and Collaborative Document Storage systems (like Sharepoint). Client Relationship Management Developers can be crucial in improving sales and customer satisfaction by writing and implementing their specific sort of business and client management code.
Embedded Developer: Embedded developers differ from all of the other sorts of developers mentioned on this list in that they work on hardware rather than software. That is, instead of writing code for systems, programs, and applications to work within a machine, they work on the actual hardware system itself. Embedded developers often program microcontroller chip behavior and embedded firmware and sometimes even code on systems without an operating system between the hardware and the code (aka, “coding on bare metal.”) They generally work in C/C++, have a good deal of technical engineering knowledge, and are in increased demand as more of the things we use in daily life (such as appliances and vehicles) call for microprocessors and other microchips with embedded logic. Embedded developers tend to be very experienced, with just under ten years on average.