How many types of developers do you know? And, if you are a developer, to which type do you refer yourself? In the real world, the boundaries between different types of developers are blurred. The more professional you become, the more types you will fit. So let’s see, how many types of developers are available in software development industry.
Before we start, we’d like to say thanks to Lorenzo Pasqualis whose article inspired us to create this material.
To be honest, most of us recognize only three types of software developers: frontend, backend and fullstack. That is obvious, but this is just a half of the truth. Nowadays different developers with the same tech stacks unlikely can apply their skills and knowledge to the different area. It’s like asking your mobile developer to work on creating a game. He could know the tools, but he is not a game developer. And that makes a huge differentiation in developer’s types.
We’ll start with the main types:
Yesterday we wrote the biggest article with cheatsheet for frontenders. So who are they? This is a type of developers who specialize in visual user interfaces, aesthetics, and layouts. Their code runs on a web browser, on the computer of the site user. They work on creating web apps and websites. Hardware is not what frontend specialists usually think about.
Their work requires an understanding of human-machine interaction and design principles more than computer science theory.
Frontend development skills:
- design of user interface (UI)
- design of user experience (UX)
- UI frameworks.
The second most popular type of developers. The backend developer specializes in the design, implementation, functional core logic, performance, and scalability of a piece of software or system running on machines that are remote from the end-user. They integrate a vast array of services such as databases, caching, logging, email systems etc.
What makes the front end of a website possible? Where is all that data stored? These are the questions for the backend development. The backend of a website consists of a server, an application, and a database. A backend developer builds and maintains the technology that powers those components which, together, enable the user-facing side of the website to even exist in the first place.
Backend development skills:
- C, C++
- Go, etc.
They also use tools like MySQL, Oracle, and SQL Server to find, save, or change data and serve it back to the user in front-end code. Job openings for backend developers often also call for experience with PHP frameworks like Zend, Symfony, and CakePHP; experience with version control software like SVN, CVS, or Git; and experience with Linux as a development and deployment system.
Call this developer a wizard, but he (or she) does both frontend and backend work. The fullstack developer has the skills required to create a fully functional web application. It is considered that working on both the server side and client side professionally opens more opportunities. They’re jacks-of-all-trades.
The complexity of full stack development can be illustrated with this picture (of course, there more technologies):
Image via TechCrunch
The fullstack developer should be able:
- to set up and configuring Linux servers
- to write server-side APIs
- to turn a “design eye” to the CSS
This is a developer who writes code for applications that run natively on consumer mobile devices such as smartphones and tablets. This type appeared after the boom of mobile devices in the early 2000s and the explosion of the smartphone market. Before then mobile development was considered a subset of embedded development (we will write about embedded developers in this article too).
A mobile developer understands the intricacies of mobile operating systems such as iOS and Android, and the development environment and frameworks used to write software on those operating systems.
Mobile developer skills:
- C, C++ and Java
- Application Programming Interfaces (API) like Apple iOS, Android, Windows Mobile, and Symbian
- Web development languages like HTML 5 and CSS
- Cross-platform mobile suites like Antenna and AMP ( Accounting-Management-Promotion)
Every game-addicted child wants to become a game developer in future. But this occupation as much romantic and fun as complicated and demanding.
Game developer specializes in writing games and can fall into one of the other categories of developers, but they often have specific knowledge and skills in designing and implementing engaging and interactive gaming experiences.
Skills for game developers:
- DirectX, OpenGL, Unity 3D, WebGL frameworks
- languages such as C, C++, and Java
- Swift and Java for mobile devices.
This type of developer writes software programs to analyze data sets. They are often in charge of statistical analysis, machine learning, data visualization, and predictive modeling. Quite romantic, right? But the list of skills a data scientist should have covers a lot of science-related things:
- Statistical programming languages, like R or Python, and a database querying languages like SQL
- Understanding the statistics and different techniques that are (or aren’t) a valid approach
- Familiarity with machine learning methods
- Knowing Multivariable Calculus and Linear Algebra principles
- Knowing how to deal with imperfections in data (including missing values, inconsistent string formatting etc.)
- Visualizing and communicating data is incredibly important
- Having a strong software engineering background
- Ability to solve high-level problems
This is a type of developer familiar with technologies to build, deploy and integrate the system and administer back-end software and distributed systems.
To explain the way:
- A developer (programmer) creates applications
- Ops deploys, manages, monitors applications
- DevOps creates applications AND deploys/manages/monitors them.
DevOps was made possible because of the cloud and the tools/platforms to make deployment and management easy. Skills needed by devops:
- Apache Mesos
- the HashiCorp stack (Terraform, Vagrant, Packer, Vault, Consul, Nomad)
- Jenkins, etc.
Software Development Engineer in Test
This type of developer is responsible for writing software to validate the quality of software systems. They create automated tests, tools and systems to make sure that products and processes run as expected. Skills needed for engineers in test:
The embedded developer works with hardware that isn’t commonly classified as computers. For example, microcontrollers, real-time systems, electronic interfaces, set-top boxes, consumer devices, IoT devices, hardware drivers, and serial data transmission fall into this category.
Embedded developers often work with languages such as:
- C, C++
- Java or proprietary technologies, frameworks, and toolkits
With the embedded developer definition, we would like to finish the list of developer’ types. We named for you the main developer types which are fundamentally different. But you could also hear about:
– web developer (the purpose of web development is obvious)
– application developer (who is proficient in creating different types of apps)
– security developer (who creates systems, methods, and procedures to test the security of a software system)
– CRM developer (they hang out with SAP, Salesforce, Sharepoint, and Enterprise Resource Planning)
– Big data developer (rarely met, this type of developers use systems for distributed storage and processing of vast amounts of data such as MapReduce, Hadoop, and Spark)
– Graphics developers (they specialize in writing software for rendering, lighting, shadowing, shading, culling, and management of scenes)