Types of Software Engineers

5/29/2023 - Kyle McVeigh

Go back to all articles

Software Engineer can be an umbrella term in referring to all different types of engineers. It became clear to me recently that the differences of these engineers isn't common knowledge, so here is a very high up explanation of the different types of engineers I've worked with.

Frontend Engineer

Frontend Engineers are responsible for the 'front' of the stack. This is related to how the website looks, feels, and how users interact with the page. The technology used is Javascript (and all of its flavors like Typescript or CoffeeScript), HTML, and CSS. Frontend Engineers typically have knowledge of different frameworks, like React and Vue, and are ultimately responsible for what lands on the page.

UI / UX Engineer

User Interaction or User Experience Engineers overlap significantly with Frontend Engineers. UI Engineers differ in their work because they do more design work and may be more familiar with working with images, SVGs, and design tools like Figma. UX Engineers should have a deep knowledge of CSS and HTML but may lack other frontend skills like specific framework knowledge.

Backend Engineer

Backend Engineers are responsible for the 'back' of the stack. They are responsible for the business logic and the storage of the data. There are many, many backend languages, but some contemporary popular ones are Python, Java, and C#. Backend engineers will also have knowledge in SQL and database work.

DevOps Engineer

DevOps Engineers are responsible for the Development Operations. This means they do work to maintain the Continuous Integration and Continuous Delivery (CD/CI) of the code. They will have deep knowledge in version control tools, like git, and working with cloud providers, like AWS.

Infrastructure Engineer

Infrastructure Engineers and DevOps engineers have significant overlap. Infrastructure Engineers are responsible for the code actually running on servers. This means can work with physical servers or with a cloud provider. There are a ton of tools for this, such as Terraform and Kubernetes, and these engineers should have good knowledge the networking layer.

Security Engineer

Security Engineers specialize in making sure the data on the site is secure of malicious actors and accidental leaks. Security engineers have to stay up-to-date on the latest security concerns in the industry and making sure the best security practices are used by all the engineers. They specialize in things like encryption, and key management.

Fullstack Engineer

Fullstack Engineers have knowledge of the entire stack. Ironically, most fullstack engineers are actual junior engineers that pick a specialty later on. There are very senior fullstack engineers, but they are few-and-far between. A fullstack engineer should be able to construct and host a website in its entirety.

Product Engineer

Product Engineers bridge the gap between product and the engineering team. They can expect to both write code and write tickets using feedback from customers. I consider myself a Product Engineer as well as a Frontend Engineer.

Mobile Engineer

Mobile Engineers develop apps on iOS or Android devices. Creating a mobile app has its own challenges and requires an engineer with knowledge in this space. I don't have knowledge in this space, please don't ask me to make an app.

Hardware Engineer

Hardware Engineers can develop hardware level programming. I'm not going to pretend to have any knowledge in this space, but I know developing on hardware require a specialized skill set.

Closing notes

This a not complete list of types of engineers. It is expected that most engineers go beyond their job title and can do work outside of their immediate area of expertise. This means that sometimes backend coders will set up infrastructure or that sometimes frontend engineers will write backend code. Having a healthy engineering culture means there are all types of engineers at all different levels of seniority.