The number of universal specialists in the developers’ sphere increases every year, as we can see in the Overflow research. For example, according to the 2019 survey, among 90,000 software specialists, there were 51,9% full stack developers. Universal knowledge and experience become a common practice among developers. So, let’s take a deeper look at who is the full stack developer and for what cases companies need them.
What about a bit of terminology?
Full stack development seems more simple if you have a general vision of software architecture.
There are two parts of a website, web or mobile application: the client-side and server-side. The client-side is what the client sees, the visual part of the application, named as frontend.
The server-side, also called backend, is about the realization of business logic, data storing, and the work of the server.
The set of tools of frontend and backend make up the tech stack. It consists of a programming language, frameworks, server, database, and operating system. When these parts of the solution architecture are working together, they present a software stack.
Both backend and frontend have their own technology stack, and a specialist who can work with two types of the technology stack is the full stack developer.
What are the responsibilities of a full stack developer?
The full stack developer is no universal expert or Renaissance man. Despite that, he or she works with all parts of the development project: the interface, the data storage system, and the business logic. Generally, a full stack developer has more experience in one sphere and sufficient information about another part.
There can be two types of full stack developers:
- Full stack developer who worked as a frontend developer
- Full stack developer with backend experience
So, such a specialist can code to enable the connection between a database and a browser, enhance the design, write the user’s interface, create business logic algorithms, collect and process data, control users’ connections and web application’s work.
In addition to these duties, a full stack developer should understand what extra knowledge and skills might be needed for the project; should calculate the amount of work required for product launch, updating or bug fixing; and finally, should prioritize tasks and meet them in the required order.
The main advantage of full stack developers is that they have a common vision of the project. Such quality and their universal skills are highly related and well paid.
What are the full stack developers’ skills?
We figured out that there are two types of full stack developers, so they have different sets of skills, knowledge, and used tools. Let’s see in detail:
What are the strengths and weaknesses of these two types of developers?
The strengths of the frontend-first full stack developer:
- Foundation: interface development
- Frontend tools: Angular, React, Ember.js,Vue.js, Knockout.js, jQuery, Backbone.js, Node.js
- Backend tools: Node.js
The weaknesses of the frontend-first full stack developer:
It can be a lack of experience in writing APIs, database settings and service management of complicated products.
The strengths of the backend-first full stack developer:
- Foundation: business logic, server, and database management
- Backend tools: Express.js, Flask, Ruby on Rails, Django, Laravel, Node.js;
- API building and integration
- Management of relational (MySQL, Oracle, PostgreSQL), and non-relational (MongoDB) databases
- Server management, establishing of cloud (AWS, Heroku) or on-premise deployment
The weaknesses of the backend-first full stack developer:
Both types of full stack developers can eliminate gaps in their knowledge according to the given tasks.
What are the most well-known full stack technologies?
Full stack technologies are used to organize developers’ skills and knowledge. Also, they simplify the preparation of requirements for searching developers. The full technology stack consists of the programming language and the tools for frontend and backend development. Let’s see the most popular technology stacks below.
MEAN consists of:
M: MongoDB, non-relational open-source database, which supports different forms of data.
E: Express.js, web application framework, also open-source, created for developing websites and applications.
A: Angular.js, the software engineering framework for building user interface at the dynamic web applications.
N: Node.js, open-source development platform with event-based and asynchronous applications. Node.js is used to run on a dedicated HTTP server and to employ a single thread with one process at a time.
Developers can replace components of the MEAN stack with other alternative frameworks, for example, React library can replace Express.js in work with Node.js (you can check our previous post where we compared most popular frameworks Angular, React and Vue.js).
Components of the LAMP stack are also open-source, and their names create the acronym. The MEAN and LAMP are the most popular technology stacks in development.
L: Linux is the cross-platform operating system, the basis for the other parts of the stack.
A: Apache is free web-server software that establishes the connection between the server and client’s browser. Instead of Apache, developers can use in this stack the web HTTP server NGINX, which is also the reverse proxy server. If developers use NGINX, the technology stack is named LEMP.
M: MySQL is the relational database used for storing, adding, and managing data for a website.
P: PHP is the web scripting language that can be embedded in the HTML code of the page. You can find information about the best PHP frameworks in our previous review.
Ruby on Rails stack
Rails is an open-source framework for creating web applications, also called just Rails or RoR. Ruby on Rails follows the MVC template (Model-View-Controller) and meets both frontend and backend. So, a Ruby developer is automatically a full stack developer. It is obvious, Ruby on Rails stack allows Ruby language. Also, it includes the default SQLite relational database, which can work with Apache, NGINX, and other web servers.
Django is an open-source Python web framework; it can also work with PHP, use PostgreSQL and MySQL databases and Angular framework for creating the user interface. Django is known as the batteries-included framework that provides all needed functionality, and developers don’t require any extra libraries. Despite Django is related to full stack development, companies can require both front-end and back-end Django developers.
When does a company need a full stack developer?
It is time to search for a full stack developer if the company requires one item from the list below:
#1. Web application with simple functionality
The company needs a simple product with limited features, something like Notes, Weather forecast, or Remainder, and there are clear tasks, requirements, and timing. In this case, a full stack developer can create, launch, and support the product alone. The to-do list of the developer will look like this:
- Create the design of the application,
- Choose the server and database,
- Write code for business logic realization,
- Launch the product:
- Maintain the product.
It is important to know that the developer couldn’t stay productive in the situation of complicated multitasking and time limitation.
#2. Minimum viable product (MVP)
This case is similar to the previous one, but there is no requirement of long maintenance. With the help of an MVP, a company can see whether its product will be in demand or not. As an MVP doesn’t have a lot of functions, only the essentials, a full stack developer can create, launch it, and process users’ feedback. If the MVP is successful, the team of developers will build the next version of the product.
#3. Single Page Applications (SPA)
The SPA development boils down to providing only the client-side type of work, and this is no time-consuming project for the developers’ team. A SPA doesn’t need to exchange data between the user and the server, so the server just stores data. SPA uses dynamic rewriting and allows for current page visualization in the browser, contrary to loading new pages from a server. If you are looking for more information about the SPA, you can check our previous post.
#4. Architecture decisions and project coordination
Full stack developers have an extensive field of expertise about frontend and backend solutions. So, they can act as application architects or project managers: make decisions about the web application architecture and technologies stack, coordinate the teamwork to meet the budget and deadlines, and share tasks with developers.
A startup involves a small number of employees with a common vision of the project and a clear understanding of goals, tasks, and timing. Startup members should be flexible and ready for multitasking. A full stack developer with universal knowledge is a suitable candidate for the startup team and can combine both frontend and backend developers’ duties according to the situation.
As a universal specialist, a full stack developer can suit the requirements of small companies, startups, and large enterprises. Generally, a full stack developer is more confident in one of the spheres of knowledge. So, once you decide on the desired tech stack for your project, look for full stack developers with an appropriate background.