One of the most popular job descriptions out there is “full-stack developer”. Everybody wants him, but what does someone in this job really do? In this post we will explain exactly that, answering the question: who is a full-stack developer?
What does Full-Stack Means?
As you can imagine from the name, a full-stack developer works on the full-stack. Thus, the first thing we need to understand is what this full-stack really is.
We are talking about the application stack. Imagine your app like a layer cake, it has several layers one over the other. While in a cake you may have chocolate, cream, jam, or whatsoever, in an application you have different components. Each component relies on the previous one for working.
The basis is the hardware, the physical computer where we want to run everything. Then, we have OS, which allows other software to interact with the hardware. Right on top, we find the runtime, the actual engine that runs our software. Here, we have our backend application, the one running on our private server. And, finally, we have the frontend application, the code running on the user’s computer. While the frontend runs on a different machine (the user’s PC, not our server), it interacts with the backend. Without the backend, the frontend would be useless, so we can think that it relies on the backend.
We won’t be building hardware today, nor creating a new operating system. Instead, we will focus on the backend and frontend applications.
The Backend Application
Backend is the first part of the stack a full-stack developer works on. The backend application is where all the processing happens. Here you may create new users, update existing ones, perform financial transactions – whatever.
The backend application runs on your server, a machine that you – the company owner – has full control over. Thus, you can run potentially sensitive stuff like interacting with a database or making payments.
However, the backend application will do almost nothing on its own. It exposes some sort of API that the frontend will call. In other words, the backend has the capability to do important things, but it doesn’t do them straight away. Instead, it stays waiting and listening for when the frontend tell it’s time go.
Literally, any modern software needs backend. From the simplest website to a complex banking system or an online game, you will always need a backend. Of course, depending on what you do, the complexity of the backend will differ.
The Frontend Application
Another important concept for the full-stack developer is the frontend. This is the other piece of the application that interacts with the backend. The frontend runs on the user’s computer, not on the server.
Of course, this means the user needs to have this frontend application on their device. In general, the backend has a place where the user can download the frontend application. Imagine a videogame, where you have to download it before playing it.
While with a videogame you are well aware you are downloading something, this is not the case with web applications. Web applications are interactive websites that you can visit with your browser (e.g. Firefox or Chrome). As soon as you connect to the application, you will download some javascript code that acts as the frontend. Don’t worry! This code runs within the browser and can generally do no harm to your device. Instead, it can perform useful things like real-time input and output or user interaction.
The goal of the frontend application is simple. It takes the user input (like the click of a button) and asks the backend to do something. Then, it gets the result from the backend and presents it to the user in a friendly way.
Who is a Full-Stack Developer?
Okay, if you are here it means you want to know who is a full-stack developer. Now that you understand what backend and frontend are, we can dive into the full-stack developer job.
A Full-Stack Developer is a developer that works on both parts of the stack: backend and frontend.
However, it is worth noting that a full-stack developer doesn’t work on any kind of application. A full-stack developer works on web applications only. Other applications still have frontend and backend, but they are too different and complex to be handled by the same person (e.g. a videogame). Of course, someone may be able to do both things even for a videogame, but we don’t call him a full-stack developer. The title of full-stack developer refers to someone working with web applications.
For a simple static website, we don’t even bother using the title of the full-stack developer. Full-stack developer means your frontend code has some logic and performs some elaborations, so most likely it uses javascript.
Furthermore, modern full-stack developers can do even more. Not only they create the entire application, but they are able to ship it to the users configuring the servers. To be honest, you don’t want a developer configuring a server from scratch. But with the advent of the cloud, he doesn’t need to. He can just deploy his application to the cloud.
So here you have it. The full-stack developer, the modern hero. A guy that, all alone, can create from scratch a web application and publish it.
A Love & Hate Relationship…
So, is it a good job to be a full-stack developer? It depends on who you ask. For someone, it might be great, for some others, this type of job should not even exist.
The main criticism against full-stack developers is that a single person cannot do everything. The more responsibility the role inglobates (e.g. configuring the server), the worst. The idea behind this is simple: the more things you know, the less you know of each. Thus, the full-stack developer is not an expert in anything he works on and creates bad applications.
Advocates of this philosophy say developing a proper application takes three separate roles at least. The backend developer, the frontend developer, and the system administrator. You can’t clash them together. If you do, it means your company is just trying to pay one person to do the job of three, which is never good. But is it true?
Nowadays, I would say no. Full-Stack Developer is a proper job, and not a replacement for many different others. A full-stack developer can develop a great application all alone. This is because many frameworks can now facilitate the development of both the backend and frontend parts. Plus, the cloud virtually eliminates any need for particular system administration skills. You can even run your backend in javascript with Node.js, using a single language for both backend and frontend.
Of course, larger applications and larger companies may benefit from working with professionals dedicated to individual parts of the application. Or, you can have a company where full-stack developers normally do the job, but you still keep some key experts so the full-stack developers can ask for help on specific areas if they need to.
Wrapping It Up
So, a full-stack developer is someone who works on the full stack of a web application: backend and frontend. It may even set it up and publish it to the users. And, as we saw, it is a worthy job.
If you want to read more and go more technical, Portable Web Applications are something you want to know about. A PWA is a website that, when visited from a smartphone, looks and feels exactly like an Android or iOS app. You can check out how to build your PWA here. (You’ll need to know some coding).