A full-stack developer is a jack of all trades and a highly sought-after job candidate. The title implies a breadth of knowledge that can be invaluable to short-staffed startups and big companies managing complex apps alike.
However, the term “full-stack developer” is controversial among developers. Some disparage the idea that anyone could be equally competent across an entire software stack, while others believe that the term has been so overused by employees and employers that it has become somewhat meaningless.
Defined: What is a full-stack developer?
A full-stack developer is someone who is competent to deal with the technologies behind the entire application stack—that is, the different layers of technologies that make up a modern application. The term is meant to contrast with developers who focus exclusively on an application’s front end (the UI, usually a website or mobile app) or exclusively on the back end (the business logic that drives the application and the database where the information the application needs is stored).
Of course, this calls for mastery of a lot of technologies, a skill so rare that people use the phrase “unicorn” to describe practitioners. In a long and influential diatribe, developer Andy Shora made the claim that these true full-stack developers are a myth—that everyone has more mastery of some aspects of the stack than others, but that the existence of term “full-stack developer” encourages people to overstate some of their skills.
“The basics of the languages/frameworks we learn today can often be picked up in a matter of hours,” he says. “The problem is, I feel the difference between knowing something in web development and truly mastering it is now becoming an increasingly blurred line.” (Shora identifies himself specifically as a front-end developer.)
Even if you can’t achieve total mastery across the stack, there is value in being comfortable with all the parts of an application. Codeup, which bills itself as a full stack coding bootcamp, offers what it calls a ”realistic” definition:
“A full-stack developer is simply someone who is familiar with all layers in computer software development. These developers aren’t experts at everything; they simply have a functional knowledge and ability to take a concept and turn it into a finished product. Such gurus make building software much easier as they understand how everything works from top to bottom and can anticipate problems accordingly.”
In other words, even if you spend most of your time working on an application’s back-end, you know enough about front-end development to be able to work well with those teams and see the big picture for the whole project. Web Designer Depot offers a take that similarly emphasizes a holistic vision rather than total mastery: “A full-stack developer ... understands and has at least the basic skills to develop a product from start to finish.” Shora points out that short-staffed startups in particular are keen to get these kinds of generalists on staff.
The term “full-stack development” first arose in the early Web 2.0 era, as static web pages gave way to AJAX-powered dynamic ones. As Shora points out, the idea of full-stack development was much simpler back when the typical software stacks were less complex, as in the 2000s when the four-layer LAMP (Linux, Apache, MySQL, Perl/PHP) was king.
Today, full-stack development involves more complex coding throughout the stack, with multiple choices for technologies and frameworks at each layer. Some shops will try to use a single technology throughout the stack as much as possible to make full-stack development easier.
How to become a full-stack developer
The simplest answer, then, of how to become a full-stack developer is to gain familiarity with a wide range of technologies. There are a variety of sources that will give you advice on the subject, from Web Designer Depot to, well, InfoWorld, but this guide from Coderbyte is fairly exhaustive, and covers:
- Back-end languages/frameworks (such as Node.js, Python, Ruby, and Java)
- Databases and web storage (such as MySQL/MariaDB, and MongoDB)
- Web application architecture
Beyond these specific technologies, you should familiarize yourself with Git, the omnipresent version-control system, and basic algorithms and data structures of the sort taught in computer science classes. And if you want some info on some specific cutting edge tech that should be on your radar today, check out this list of libraries from software developer Andrei Neagoie.
Full-stack developer courses
This is, of course, a lot to chew on! And there are plenty of online courses that purport to give you at least the basics, including:
Full-stack developer interview questions
You can find several templates of typical interview questions for full-stack developers online, from job boards like Betterteam and training firms like Digital Vidya. Most are tailored to help HR make hiring decisions, rather than to help candidates study up, but some interesting patterns emerge, and some of the questions give you a sense of what your day-to-day life as a full-stack developer would be like.
You need to have good answers about how you learn, for instance, because you can’t possibly know everything you’ll need to know for the job now, and employers want to know if you’re a quick study. You also want to talk about your teamwork and soft skills, because part of a full-stack developer’s tasks involves coordinating across teams, just as the developer contributes to different parts of the application.
It’s not all touchy-feely stuff, though. You also have to jump through the usual computer-science hoops that technical interviews entail.
Full-stack developer jobs
This is a lot of hue and cry over a single job title, but there’s a reason for that: According to an analysis by compensation specialist PayScale, full-stack developer was literally the fastest growing job category in the United States in 2018. There is a hunger out there for job candidates, so plan accordingly.
One thing that you may wonder about in your job hunt is the difference between a full-stack developer vs. a software engineer. There’s a particularly evocative comment on a Reddit career advice thread that considers a “developer” to be more like a general contractor—practical, more involved in the nitty gritty—while an “engineer” is like a civil engineer—more involved in theory and high-level concerns. But the truth is that “software engineer” is often used to mean “a developer who seems smart who we’ve promoted,” and there are plenty of jobs that have the “full-stack software engineer” title that aren’t qualitatively different from full-stack developer jobs.
Full-stack developer salary
Estimating salaries isn’t an exact science, but the consensus is that full-stack developers pull down a decent wage. Engine Yard pegs the starting salary for full-stack developers at $97,000, and that can go up in expensive markets like the San Francisco Bay Area. Tech Republic estimates the average base salary of a full-stack developer at $111,640, and notes that the number of job ads looking for full-stack developers has tripled since 2014.
So if the description in this article has intrigued you about this job, there’s good news: You can make a pretty good living at it.