Colt Steele

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:

The Web Developer Bootcamp 2020

Last Updated November 2020

  • 613 lectures
  • All Levels
4.7 (187,443)

JUST COMPLETELY REDONE – The only course you need to learn web development – HTML, CSS, JS, Node, and More! | By Colt Steele

Explore Course

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.

Web browsers understand three main tools: HTML, CSS, and JavaScript. These technologies allow us to create beautiful (or ugly) interactive web applications. They’re the bread and butter for any front-end developer. Each tool has a specific role: 

For example, when you post a new comment on a Facebook post, JavaScript code listens for you to click ‘submit’ or hit the enter key. It then reads your new comment from the form and sends the data off to the server to be saved to a database (thanks to some back-end logic). Finally, it updates the current webpage to show your new comment alongside the existing comments. JavaScript can also be used to build browser-based games.

Front-end developers spend most of their time working with these three front-end technologies. In addition, most modern web applications are built with JavaScript libraries and frameworks like React, Angular, and Vue, which help developers manage the creation of complex front ends. Front-end developers often work closely with web designers and UX designers to build user interfaces for applications. Many beginners assume that front-end development is all “decorating” and “making things look nice,” but that’s not the case! Many front-end developers spend their time solving difficult technical challenges imposed by the limitations of browsers and writing complex JavaScript logic.

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 keeping with our meal-kit analogy, a full stack developer builds the meal kit and cooks it too. Full stack developers should be able to create a full web application, front-end and back-end, all on their own. They should be comfortable writing JavaScript and CSS one day and Python (or some other language) and SQL the next, all at a senior level. That’s the ideal, but is it actually possible?

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.”

For example, a hypothetical full stack developer might have expert-level experience with JavaScript, React, and other front end tools, but they should also feel comfortable writing essential backend logic, working with databases, implementing authentication, deploying, etc. They will likely be “weaker” with back-end code than a dedicated back-end developer, but overall they have a more well-rounded skill set.

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. 

I recommend all beginners learn HTML, CSS, and JavaScript even if you plan on becoming a back-end developer. The boundaries between front-end and back-end are poorly defined, and you’ll likely learn a bit of both on your journey. It’s relatively easy to become a “jack of all trades and a master of none,” but remember the goal here is to be a “jack of all trades and a master of at least one,” which takes significantly more work.

Page Last Updated: June 2020

Top courses in Web Development

The Complete 2020 Web Development Bootcamp
Dr. Angela Yu
4.7 (97,444)
Bestseller
Become a Certified Web Developer
Framework Television Inc., Mark Lassoff
4.5 (2,102)
The Web Developers Course For Beginners
Machhindra Kalan, Michele Robert (bucky!!)
5 (37)
Highest Rated
The Web Developer Bootcamp 2020
Colt Steele
4.7 (187,443)
The Complete Web Developer Course 2.0
Rob Percival, Codestars by Rob Percival
4.5 (63,954)
The Advanced Web Developer Bootcamp
Colt Steele, Elie Schoppik, Tim Garcia, Matt Lane
4.2 (8,338)

More Web Development Courses

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.

Request a demo

Courses by Colt Steele