12 min. read

August 26, 2021

full stack

What is a Full Stack Engineer?

What does a full stack developer do?

Patrick Zawadzki

Patrick Zawadzki, Senior Software Engineer

A full stack web developer is a developer who can work on all parts of an application, whether that’s the front-end code, the backend code, or the infrastructure it lives on. A full-stack developer is like a jack of all technologies.

In software development, a stack refers to the technology used to create and power an application end to end. We explain it this way because each app is composed of multiple layers of technology (the stack). Let’s take an example, a server is hosted in the cloud, which powers a web application to respond to web requests and send files back and forth. Essentially a database with an application that can read and utilise the data for the user. Then you might add UI and UX design for a more user-friendly interface. 

All of these technologies are “layered” on top of each other, each needing the layers beneath for support. Alternatively, you can think of a stack as a pile of technologies that come together to do a sure thing. There are many different possibilities for a stack in software, and the languages in the stack can vary as well. A full stack engineer will work across an entire stack, which has a common language throughout. 

What encompasses a “stack”?

There is a myriad of options for each layer of a stack, but ultimately most applications will have three main stacks, Frontend, Backend, and Database. I personally work primarily in JavaScript so I’m more familiar with JavaScript stacks, however, the common full-stack languages (besides JS) are Python and Ruby. 

As a full stack engineer, you will need to understand each part of the stack and the mental models that apply. Full stack engineers most commonly work in a specific language (i.e. Python), and a stack will use the language for every layer. 

mongo db Express js React Node js Mern stack
Source: MongoDB.com

Let’s take a MERN stack, for example, this stands for MongoDB, Express, React, and NodeJs. These four technologies together can create a fully-fledged web application from end to end. In this example, MongoDB is a type of database that would connect to NodeJS. The next layer is Express which runs on NodeJS and creates an API/Server layer for a user to make requests. Express will take the requests from a user and respond to them as it was designed to function. Finally, the UI layer of this stack is React, which would be served to a user via Express and ultimately create the interface for them to interact with your application.

Earlier I spoke about the flexibility a stack can offer and how it simply refers to the layers of an application and how they work together. MEAN is another Javascript stack that is MongoDB, Express, Angular, and NodeJS. In theory, you can replace an entire MERN application’s frontend with an Angular frontend if you wanted to. When properly architected, the layers of a stack can easily be added to, removed, or swapped if need be — but that’s something for another time. 

T Shaped developers, and how they fit into full stack development

Since full stack developers can generally implement and monitor changes through the entire stack, rather than just with a specific layer it would make a lot of sense to hire a team of full stack developers. Well not really. That’s where T-shaped developers come in. They are full stack engineers with the flexibility to work across the stack, but they have specialised expertise in one technology or layer. 

The t-shape term comes from the general knowledge in all parts of a stack but extensive expertise in a single layer. In the image above, this style of t-shaped developer would have expertise in MongoDB, ExpressJS, NodeJS, and React. However, the developer would have the most depth of knowledge in ExpressJS. A team of T-shaped developers would ideally all have different depths of knowledge in the different parts of an application, therefore they cover each member’s weakness.

Why is the t-shaped term important in full stack development? 

It takes years to become an expert in a specific technology. You can’t be a master of all technologies across a stack, it’s unrealistic. So as a full stack engineer it’s important to know where your expertise lies so that you can find your fit in a team. This is a common question in interviews, they’ll ask your specialisation to better understand how the team will operate. 

Full stack developer jobs in Germany

Find me a job!

What does a Full stack engineer do? 

We already know that a full-stack engineer is an all-around engineer responsible for working on many different parts of an application at any given time. And since a full-stack engineer has many different skill sets, they will be expected to be capable of solving a problem in any part of a software system.

Software architecture can be very layered and complex, but a full-stack engineer should have enough knowledge on each layer to be capable of finding answers to a problem. This type of engineer should be capable of understanding and solving problems in some of the following areas.

Frontend

CSS/Javascript/HTML Issues  Any Frontend frameworks used in the application Any API calls and data management in the frontend Authenticated routes and access

Backend

Authentication Gracefully handling API Requests Caching Database queries Diagnosing slow response times Application Monitoring Tools Viewing average response times Diagnosing application outages Identifying system bottlenecks

Architecture

Application deployment Basic networking Bonus points for automated deployment

In general full stack engineers are sought after because of their overall flexibility and their capability of diving into parts of a system to solve the problem at hand.

What project execution skills does a full-stack engineer need?

Agile methodologies and sprints are two things any software engineer should understand. Many modern companies, even non-software companies, have adopted daily standups, bi-weekly retrospectives, and other agile “ceremonies.” Agile is a methodology used in software development to help teams rapidly adapt and respond to change in a quickly changing environment. 

How do you handle unforeseen issues in a project environment?

As a full-stack engineer, you should be proactive about communicating issues to your team as soon as they occur. Bonus points if you do some investigation into the issue when it appears, and come up with a few different possible solutions.

These little tasks leading you can seem meaningless but are all required in the big picture. Being able to tackle any type of problem, across the tech stack, is a key part of being a full-stack engineer.

How to get started as a Full-stack engineer?

You don’t typically fall into a full-stack role with comfort in all areas. Generally, someone will start as an expert in one area of the stack, frontend, or backend for example, and eventually pick up skills in the corresponding parts.

I started enjoying more backend work, writing APIs with Express and NodeJS that integrated with a MongoDB backend. Then I began to pick up small pieces of work on the front end and eventually parts that connected both together. 

While there are many different languages and ways to create an application, the underlying standards to do so are very common. REST, for example, is a defined standard for handling API requests and there are many implementations, across many different languages to help you write a REST API server. Picking a language is important to narrow down your available technologies, but understanding the basics of different standards is a core part of being a full-stack engineer.

What stack should you pick?

Picking a stack should be related to the part you’re already comfortable working with. If you have a corresponding language you are interested in, find popular technologies in that language to learn. The best way to learn a stack is to build an app using the technologies.

I suggest you start with what you know and slowly expand into the tech you’re not so familiar with. A really simple application to start with is one that can solve a simple problem you’re having. The first web application I wrote was one to help me keep track of my finances. Solving a simple problem you have is a great place to start because you will understand your pain points and problem areas in an application better than anyone else.

Full stack developer salary 

The average salary for a full stack engineer in Germany is €62,000, according to Honeypot data. Full stack developers have reported salaries as high as €98,000 for senior positions and on the low end at €39,000. Salaries will also vary from city to city so keep that in mind as well.  

Honeypot found that most employers were searching for full stack engineers skilled in JavaScript stacks, with React.js being the most desired framework. 

Summary

A full-stack engineer is a crucial type of engineer to have on a team. These types of engineers are able to work effectively in all parts of an application and remove unexpected blockers that may occur in other parts of their application’s architecture.

Combine this wide variety of knowledge with strong communication skills and a detailed work mentality and a full-stack engineer will be successful in a large variety of applications. Make yourself a jack of all trades because, in a fast-paced and quickly changing environment, they are often better than a master of one. 

Europe's developer-focused job platform

Find me a job!