What is a Full Stack Developer? How Does It Compare to Back-End or Front-End Developers?
In the world of software engineering, what exactly does a full-stack developer do, and how does it differ from other programming roles? For better or worse, “full stack developer” is a common title for many programming jobs. However, not everyone agrees on what the term means. In this post, we’ll cover what the term means and why it’s so polarizing.
What is a stack?
Before we can define “full stack,” it helps to have a working definition of the word “stack.” A tech stack is the complete set of technologies a company uses to build an application. Typically, a stack includes one or more programming languages, libraries, servers, databases, frameworks, and developer tools.
Most tech companies readily discuss the components of their tech stack and some will even use their stack to attract prospective employees. For example, according to the website StackShare, Pinterest’s tech stack consists of:
Uber’s tech stack includes:
The parts of the stack
I omitted a few technologies from the above lists, but you can still see that modern tech stacks get quite complicated. In the early 2000s, applications grew in complexity, and developers began to specialize in one of two portions of the stack: the front end and the back end. Before we dive into the difference between the two, let’s quickly recap how the internet works (at a very, very high level).
When you visit a webpage, like udemy.com, your computer sends a request to a server asking for a particular page. Hello, udemy.com I would like your home page. Deep in Udemy’s headquarters, servers are waiting for requests just like yours to come in (in actuality, these servers are probably located in an Amazon AWS facility somewhere). Once a server receives your request, its job is to collect any information and code needed to construct that particular requested webpage and then send it back to your browser to be displayed. This cycle of a request and a resulting response happens behind the scenes anytime you visit a website, whether it’s facebook.com or whattimeisit.com.
It’s important to understand that when you request a webpage like udemy.com, the server does not respond with a perfectly formed webpage ready for you to consume. Instead, it responds with code that makes no sense to the average human. It is the job of your browser to take that code and turn it into a human-readable webpage.
The whole process is a bit like one of those meal-kit services that mail you a box of ingredients that you have to cook yourself. First, you request a meal kit, let’s say, the Apricot Chicken with Balsamic Green Beans. The meal-kit company receives your request and does all the necessary work to build your box: shopping for ingredients, packaging them, and creating instructions for you. Eventually, the company responds with the meal-kit, and then a couple of days later you receive a box full of raw chicken breasts, apricot preserves, balsamic dressing, green beans, and a set of instructions for cooking the meal. You still don’t have the meal itself; at this point, it’s just a set of ingredients. You have to do the work of actually preparing the meal yourself in your own kitchen.
This metaphor is a clunky way of explaining that webpages are the result of code running on a server somewhere AND code running in your browser. Just like my parents’ marriage counselor always said — there is work to be done on both sides!
The back-end developer
The back-end also referred to as the server-side, is the “behind-the-scenes” logic that runs on a server. In our meal-kit analogy, the back end is the stuff that happens before the meal-kit makes it to your front door. The ingredients are purchased, instructions are written, and everything is packaged up and sent to you. Similarly, when you request a webpage like udemy.com, the server has to do a bunch of work to create the webpage “meal kit” for you.
This includes processing questions like:
Is this user logged in? Or are they a brand new user? Are they asking for a webpage they have permission to view? What courses do they already own, if any? How much progress have they made in each course? What are today’s trending topics and the highest-rated courses in each topic? What order should I list these courses in? What courses can I suggest to this user that they might enjoy? Are any courses on sale? Does this user have any notifications or messages I should tell them about?
Back-end developers write the code to make all this work. The role of a back-end developer is to implement all the necessary “business logic” in a given web application. Typically this requires working with the server, the actual application logic, and a database. As you saw in the earlier example of a stack, many companies use multiple programming languages and databases together.
The most popular back-end scripting languages include Java, Python, and PHP, though other languages like Ruby, Node.js, Go, Scala, and C++ are also commonly used. Back-end developers frequently work with server-side frameworks like Django, a Python framework, and Laravel, a PHP framework. Other popular frameworks include Flask, Express, Spring, Phoenix, and Ruby on Rails. These tools help developers create web applications and respond to incoming requests; some of them also do a lot more!
Back-end developers also frequently work with complex data and interact with databases like MySQL, PostgreSQL, MongoDB, and many others.
The front-end developer
The “front-end” refers to the portion of a web application that runs in your browser. In our meal-kit analogy from earlier, the front-end is your kitchen at home where you need to assemble the meal using the ingredients that you received in the mail. When you request a webpage like udemy.com, the server constructs a webpage that it sends back to your browser, but remember the webpage is really just a bunch of code for your browser to run. Front-end developers write that code.
- HTML – HTML is often described as the backbone of a webpage as it describes the underlying structure and content on a page. Make me a link to the contact page. Display my “cute_cat.jpg” image. Add in a paragraph of text.
- CSS – Websites built with only HTML look…horrible. Thankfully, we can use CSS to style our HTML content and make beautiful web pages. With CSS we can change colors, move content around to build nice-looking layouts, manipulate fonts and sizes, and even add animations. Make the first paragraph of text purple and bold. Make each image 500px wide. Make the first heading larger and give it an orange border on the bottom.
The full stack developer
Now we arrive at the central question of this article: what exactly is a full stack developer? In theory, a full stack developer is a coding jack-of-all-trades who has mastered every part of the development stack.
In recent years, there has been significant pushback against this definition of full stack. Developer advocate Brian Rinaldi writes, “I’m not a fan of the term ‘full stack developer.’ I think it gives companies an easy way to unrealistically ask for everything and sets an unachievable standard, especially for junior devs.”
In today’s world of hyper-complex applications and ever-changing technologies, it’s hard enough to stay on top of the latest trends and tools for a single language, let alone every part of the stack. There are definitely god-level developers who have deep, encyclopedic knowledge across every single part of the development stack, but they are the exception. Most of us are mere mortals trying to get through the day without breaking our applications and collapsing into a puddle of tears.
A more realistic definition of full stack
These days many developers prefer a more attainable, broader definition of a full stack developer. This person is an expert in some portion of the stack but is comfortable working across the entire stack. A full stack developer can write an entire application from scratch, both front-end and back-end code, though it may not all be at a senior level.
IDEO CEO Tim Brown uses the term “t-shaped person” to describe people who have a broad knowledge base (the horizontal part of the “T”) combined with deep expertise in one or more areas (the vertical part of the “T”). A full stack developer should be a “t-shaped developer.” In other words, a full stack developer needs to have broad experience and understanding of the entire stack AND expertise in a specialty. Consider them a “jack of all trades and a master of at least one.”
Why this distinction matters
There is nothing wrong with being a specialized developer. In many situations, specialized front-end or back-end experts are more hirable and may command higher salaries. At the same time, many companies need versatile developers who have a broader set of skills. This is especially common at startups and small companies where developers may need to work across the stack to get the product out the door.
It’s not for everyone, but being a full stack developer does come with its set of advantages. Familiarity with all parts of the stack makes you a more “empathetic” developer. Having a full understanding of how an application works helps you identify where things might go wrong. It gives you the ability to collaborate and communicate with more specialized developers on your team. And lastly, full stack developers can use their skills to build out their own prototypes and side projects.
If you’re a beginner, don’t get caught up on the terminology or labels of these positions. Don’t stress yourself out trying to learn every language and framework under the sun. Focus on one or two tools and stick with them, no matter how tempting it is to hop around between technologies.
Top courses in Web Development
Web Development students also learn
Empower your team. Lead the industry.
Get a subscription to a library of online courses and digital learning tools for your organization with Udemy for Business.