Airlines, insurance companies, healthcare providers, small companies, global software vendors, and even online churches publish job postings looking for “passionate, talented full stack software developers” to join their teams.
What’s so special about full stack engineers, how do businesses benefit from having these specialists on board, and under what circumstances should you consider hiring such a problem-solver? We’ll now answer these questions.
What is full stack development?
Talking about full stack development is easier if we start with a basic understanding of software architecture.
Each web application or mobile app consists of two components: a front end and a back end. The front end (client-side) is a touchpoint between a user and a solution, its visible part.
The back end is everything that’s going on under the hood: how the system functions and information flows through a series of tasks (business logic), where and how data is stored (database management system), and, finally, where a solution itself runs (server). Sometimes, business logic that defines how each piece of data is accessed can be located in the front end. That’s the case for single page applications, which we’ll talk about later.
A combination of tools (an operating system, a server, a database, frameworks, libraries, etc.) and programming languages that allow a specialist to fully build a product is called a tech stack. And vice versa, when bundled and running together, these components/layers make a software stack.
A client-side and server sides of a software and a tech stack. Source: Silicon Valley Software Group
A dedicated tech stack is used to develop each of the layers. A specialist who can use both server-side and client-side stacks is usually called a full stack developer.
Who exactly is a full stack developer?
A full stack developer is a person familiar with all layers of software development. They understand how all the parts of software work and can manipulate each layer: interface, business logic, and storage management. They have a wide skillset of technologies, which they can use to a different degree of proficiency. What degrees exactly, you may ask. Well, there are different views on the expertise of full stack developers.
One school of thought has a description that you may see most often: A full stack developer is like the Renaissance man of software engineering that “can do all things if he will.” Such a person is experienced with design, can code user interface and create algorithms and business logic to define how the solution would use collected data. The specialist also writes code that would connect a database to a browser, manage user connections, and make the whole application work.
As you can see, this is a bit idealistic. We agree with a slightly different definition: a full stack developer has fundamental knowledge in one part of the stack and less comprehensive knowledge in the other one. They also:
- learn new skills up or down the stack to be able to complete some work in which they don’t specialize
- understand the scope of work needed for building a whole solution, adding a new feature, or fixing a bug
- define what changes to make on client and server side, prioritize tasks, and complete them, simultaneously or sequentially.
You could say that hiring a full stack developer instead of two different people for front and back sides is a staffing problem. How big is your team or project? How occupied is your IT crew? It’s not that full stack engineers do their job better - they are mostly valued for being able to see the full picture and do important work in strict budget circumstances. (Scroll to the last article section to read what those circumstances may be.)
But, full stack engineers are also paid more - versatility and breadth of expertise make them a valuable asset. We will talk a bit more about skills that make them so valuable and suggest a few cases where full stack people succeed the most.
Full stack developer skills
But where do full stack developers come from? Following the description of a T-shaped person we found there are two typical scenarios for becoming a full stack developer:
Scenario 1. A full stack developer started out as a front end developer but learned to deal with the back end.
Scenario 2. A full stack developer has strong back-end knowledge and works on the front end from time to time.
This means that several CVs of full stack developers may look completely different. Or do they? There are a few skills you can expect from developers from different backgrounds. We’ve divided them into categories from the skills they started with to the knowledge level when working with different technologies.
The difference in knowledge depth among full stack developers with front end and back end backgrounds
As a rule, front end-first full stack developers are proficient at front end technologies, meaning JavaScript, HTML, and CSS. They can use an abundance of front-end frameworks and libraries, and usually master the Node.js framework as their first back-end tool. Their back end knowledge including API manipulations, storage and server management vary from basic to average. Given time and opportunity, they can quickly advance in any back-end technologies.
Back end-first full stack developers usually have excellent application logic development skills, being confident in one or several languages like Perl, C#, Java, and PHP. Their client-side knowledge usually stops at one popular framework and a basic front-end toolset. They are prepared to work with APIs, databases, and software deployment on the cloud. They are often engaged in overseeing the architecture building process or in technologically complex startup projects.
Most popular technology stacks full stack developers master
Core competencies and skills that the full stack developer must possess depend on the project and the company hiring. But the software development community has found a way to summarize combinations of technologies that a specialist may know and use to do a given body of work.
There are several popular stacks – technology bundles – that include tooling and languages for developing a solution’s back and front end.
MEAN stack
At the heart of this stack is JavaScript programming language, which used to be the front end development tool, but is now a popular choice for back end as well. The MEAN stack includes MongoDB non-relational database, Express – Node.js web application framework, Angular front end software engineering platform, and Node.js runtime environment for server-side programming. All these tools are open source. If you wonder why it’s called MEAN, pay attention to the first letters of each component.
As the MEAN stack is rapidly evolving, developers can choose from many alternative tools. For instance, a popular tool combination is React (the front-end library) with Node.js.
LAMP stack
The LAMP stack is one of the first open source stacks for building web applications. Its components – Linux, Apache, MySQL, and PHP – also make the acronym. Let’s briefly learn about them. Linux is a free, open source operating system, Apache is an open source web server, and MySQL is a relational embedded database. PHP, a server scripting (programming) language, is another stack component.
LAMP stack has been slowly transforming into LEMP as more and more developers replace Apache with NGINX web server.
Ruby on Rails stack
Ruby on Rails is a web application framework for creating database-backed web applications (according to the Model-View-Controller (MVC) pattern). The framework, released under the MIT open source license, uses Ruby programming language. Besides the language itself, Ruby on Rails includes the default SQLite database that can run on Apache, Passenger, WEBrick, or NGINX web servers.
Django stack
Django stack developers apply Django, Python, and PHP programming languages, and may use PostgreSQL or MySQL relational databases.
Django is a high-level Python web application framework. Python was named the language of 2018 by TIOBE software quality company and also became the third most common in August 2019, according to the company’s Programming Community index. Django follows the "batteries-included" philosophy, which means its functionality comes with the framework instead of separate libraries.
Full stack developer and educator William Vincent notes that most Django developers lean towards the back end camp of the full-stack spectrum: “They control the database and logic of a site and often, in companies, rely on a separate front-end developer to customize the presentation in a Django template.”
When it comes to creating user interfaces, Django developers may use Angular or its newer versions.
When to hire a full stack developer?
Having discussed the full stack developer skillset, let’s see when it’s reasonable to hire this professional.
Simple product. One person can be responsible for several things at once and remain productive. But even the most focused professional may fail at multitasking if they have to solve plenty of complex problems in a limited time period. On the contrary, if the amount and type of work is well balanced, this one person would work out. So, if you need a simple application, such as a notes or weather app, you can rely on a full stack developer. In this case, the specialist would be able to create and build a design, choose an appropriate hosting option and a database, write a code to implement business and infrastructure logic, then deploy and maintain the product. You can consider candidates with front or back end qualifications for such a project.
Minimum viable product. Want to check if people even need an application you want to introduce? Assign a full stack developer to build a minimum viable product (MVP) – the earliest and simplest product version with enough features to deliver its core value and get feedback from real users. A single developer, front end- or back end-first, can fully build your MVP in a short time, because the product doesn’t need to be rich in functionality. Later on, more team members can upgrade the app if it passes the MVP test.
Single page applications. SPA development is another popular task for a full stack developer – it’s relatively simple and doesn’t take much time because only client-side scripting is needed. SPAs don’t use the standard request-response data exchange between the client and the server. Instead, the SPA renders pages in the browser: Content is dynamically updated and generated, so a user doesn’t need to reload a page to access new information. The server just maintains data. Some organizations, for instance, even narrow down their employee search with a vacancy for a full stack SPA developer.
Architecture decisions and project coordination. An experienced full stack developer may be invited to help team members decide on the architecture of future applications, review designs, and advise on how to improve an existing app’s architecture. Also, this specialist may coordinate team activities: define a software stack, assign tasks to junior developers and monitor their work, ensuring a project team is working in line with schedule and budget. A developer with strong back-end skills would be a good fit for this role.
Startup. A business idea to examine, inspired founders, a limited budget, and no chance to fail. That’s how it goes with a startup. Startup participants must agree on a product vision, work in unison knowing exactly who does what, how, and when. As one of our full stack devs said, “The benefit of such a development approach is that integration of a front end with a back end is integration with yourself.”
Hackernoon advises that one of the ways to lead a successful startup is to be flexible, and full stack developers are flexible to an incredible extent: “As a startup founder, you can have your full stack developer(s) commit to the front-end, back-end, or the architecture when the need arises.” So, it’s wise to include a full stack dev into a small startup team from project management and technical points of view. It’s up to you to decide what expertise to look for in a full stack developer for a startup team.
Final word
Full stack developers come from either the front or the back-end camp. That’s why these specialists are generally proficient with the part of the stack they were working on before stepping into the path of universality. Nevertheless, these devs are in demand among various businesses, from startup teams of several people to financial groups with over 10,000 employees. Unsurprisingly, full stack developers represent a significant group in the software engineering community. In 2018, StackOverflow surveyed over 100,000 developers, and 48.2 percent of them said they focus on full stack development. Perhaps, this means that mastering more than one technology becomes a norm rather than a separate job requirement.