Have you ever stumbled across the term “full-stack developer” and wondered what exactly it is? Lately, the term has become more popular and in this article, we will examine it a little more closely; what is a full-stack developer, how can I become a full-stack developer and why is there such a high demand for full-stack developers?
Before we delve deeper what a full-stack developer actually is, let’s discuss if there really is a difference between it and a traditional software developer? Do we really need a "new" word for software developers? Software Engineering sometimes feels like it follows Moore’s Law. In 1965, Moore observed that the number of transistors in an integrated circuit doubled approximately every two years .
We are facing a tremendous amount of new technologies every year. With an ever-increasing number of technologies, patterns, idioms, principles, practices, languages, tools, models, and more, software engineering can be simply overwhelming . The rate of change of technologies has been one of the reasons why software development has become more and more specialized, and developers are often married to languages or technologies. But, this tendency is changing again.
I’m a full-stack developer, and you?
Let's shine some light on the term itself. Generally speaking, a full-stack developer is a software engineer who can handle client and server application development. In the modern world, the term full-stack developer often occurs in web-development, referring to front-end (the user visible client-side) and back-end (the hidden “magic” server-side). It is an all-rounder engineer that masters multi-skills and can bring comprehensive thought to product development. This doesn’t mean that we need to master every technology or every language that comes our way, but it does mean we need to be able to work on both sides (front-end and back-end) and understand how the application as solution works.
Here lies the biggest challenge, and the essential difference from normal developers. These worlds can have very different demands for engineers. For example, front-end is usually characterised by ease of use and simplicity. They can be designed to be usable with hearing, visual, cognitive or motor disabilities. Engineers need a basic understanding of color management, the structure of visual interfaces, user-experience understanding and creativity. Conversely, back-end developers require a high level of understanding of algorithms, security, performance and business logic.
A full-stack developer is a person destined to keep learning and enrich his skills of both worlds.
Full-stack developer toolbox
This section will give you an overview of the tools that full-stack developer is most usually familiar with. This list is by no means complete but represents a limited view to give you a flavor of this style of development.
Software products typically have the categories shown in the picture above. Full-stack developers typically select at least one technology from each category and try to master it. From my experience, that would mean:
1. User Interface (front-end): HTML5/CSS
3. Server Communication (back-end): PHP
4. Server Configuration (back-end): Apache + Apache Configuration
5. Database Communication (back-end): MySQL/MongoDB
These technologies are typically the foundation, and a good starting point to increase our understanding of the general building blocks for a full-stack (web) developer. The learning curve of all these technologies is relatively low, and the amount of knowledge and complexity is manageable.
The demand of full-stack developer
Recent data from Indeed shows that a full-stack developer is one of the 10 fastest growing jobs in the market and currently number #3 on ‘Indeed's best jobs of 2019’ . In a nutshell, this means that full-stack developers are in high demand. There are rumors that Facebook claims to hire only full-stack developers who are familiar with the entire Facebook technology stack. Undoubtedly, being a full-stack developer does have advantages when seeking product engagements. Those are the visible benefits of being a full-stack developer, but why are enterprises increasingly focused on hiring only full-stack developers?
An engineer who is familiar with the entire technology stack can definitely simplify life in any development team. Modern teamwork requires a lot of communication that is sometimes difficult as functional silos can form quickly. This can occur either within a team, or from team to team. For decision-makers, the question of what kind of specialist engineers are needed is less important. It is generally enough to search for full-stack developers within the chosen technology stack and to set up a team with “specialized generalists” who can fill several roles in a development. This is true, even if they are not always easy to find. So instead of hiring two people with exclusive skills for back-end and front-end, many prefer two people with diverse full-stack skills who speak the same language and understand each other, and who can act as firefighters and backup for others. Another advantage for enterprises is that the development of software solutions remains exciting for full-stack developers. Whenever a developer is a little bored of his current work, he or she can easily switch roles in the project to get other insights and continue working elsewhere.
Why are you waiting? Challenge yourself, become a full-stack developer!