When you think about full-stack development, many different things might come to mind. You might think about the core coding skills a developer needs to create an application. You might think of the people who start at the front end or the back end and expand their skills to the other to become a full-stack developer. You might think of alternative phrasings, like T-shaped developers.
If you had to sum up what skills you would need to succeed in this role, what would you answer?
The answer isn’t specific or tangible. You can say something like “familiarity with Javascript” and be correct, technically, but that isn’t the most important or most valued skill a developer can have. In order to truly succeed as a full-stack developer, you need one skill set, with several facets. That skill set? Flexibility.
Flexibility is a soft skill. Full-stack development covers all the bases, from front-end user experience design to data security to back-end database management and design. You need to be a person who wears many hats, able to blend in like a spy in any situation. That flexibility is what separates real full-stack developers from boot camp graduates who can’t cut it in a corporate environment.
You Need the Ability to Learn New Skills and Frameworks
The first part of flexibility is the ability to learn. Full-stack development changes every year. The technologies you use change, sometimes faster, sometimes slower, but always with consistency. Sure, you might be using Javascript as a basic framework for a lot of what you do, but the actual framework you use may change. One day you may be using AngularJS, another day you’re working with jQuery, or React, or Node, or any of the other frameworks that make up the overall JS landscape. Moreover, you’re never going to languish around using the same framework for ages. Best practices change, recommended tools change, languages change.
The value of a developer typically relies on two things: the specialty of their knowledge, and their ability to learn new systems as necessary. The best developers focus on one or the other. FORTRAN and COBOL developers are in great demand, and those languages haven’t changed in ages, nor have their applications. They are not, however, full-stack developers.
True full-stack developers need to be able to pick up a broad base of knowledge on every facet of development. They need a keen interest in the concepts and execution of development, not so much the tools they use.
If you’ve ever taken a programming course (and you probably have), one thing you may have heard is that the best developers don’t learn a language, they learn how to speak. Once you learn how object-oriented programming works, for example, your knowledge of how to piece together a piece of software in any object-oriented language will increase. When you know the logic behind how these languages work, picking up a new language in the same family is comparatively easy.
Thus, perhaps the most important skill you need as a full-stack developer is a drive and willingness to learn, experiment, and grow your skills. This is not a career you go into if you want a stable, steady 9-5 job. It’s a career you enter when you want a fast-paced environment, variability and flexibility to use new tools, and the opportunity to learn and grow.
You Need the Ability to Cover All the Bases
A full-stack developer covers all three layers of modern web application development. You need to be able to learn and operate within:
- The presentation layer. This is the layer for front-end development. This layer encompasses user experience, interface design, functionality, and other aspects of how the application is presented to users and used, in theory, and in practice.
- The logic layer. This is the application at its core. This is how the application takes information from the database and gives it to the user, and how the application takes information from the user and processes it or adds it to the database. This is the core of most development in a traditional sense and can be thought of as the middle of the stack.
- The database layer. This is the back end, the server architecture and processing that handles data gives it over in response to queries, and performs operations to transform it as necessary. Data handling and data security are crucial for a modern developer.
Any developer can specialize in one of these layers. There are roles out there for database architects, programmers, user experience designers, and so on. The role of a full-stack developer is to be able to wear all of those hats.
No matter how you divide up development, from layers to front/back end to skill diagram models, a full-stack developer is tasked with being available to operate in all of them. As the jack of all trades, the full-stack developer can spot issues between layers that individuals working solely within one or the other would miss.
It’s like the examples of building railroads from history. One team starts out from point A heading to point B, and the other starts at point B heading to point A. They both know where they’re going and how to get there, but when they meet in the middle, they find they’ve been building to different specifications, and their tracks don’t meet.
A full-stack developer covers the entire railroad, front to back, A to B. They can spot these issues before they become issues, and make sure the specifications both teams are using are the same, as well as making sure the trains look nice, operate smoothly, and don’t leak.
Full-stack developers often find themselves managing teams to handle specific aspects of an application, because of the sheer scope of modern apps and how much knowledge is necessary to keep operating within the development.
You Need the Ability to Operate at the Top Levels of Project Overview
It is this overview, this ability to view an entire project from front to back, top to bottom, and inside and out, that makes a full-stack developer the valuable asset they are. Full-stack developers are management material, not because of their ability to oversee people, but because of their ability to get a top-level, bird’s eye view of what the application is doing.
Think about it. When an application functions, what do you know about it? When you put information into the front end, what does the application do with it, where does it go, how is it secured? What can you learn about something as simple as a password input field, or the restrictions on what a password can be? What processes need to be in place to prevent database injection? What security needs to exist to ensure user data is safe from leaks or compromise?
Conversely, what data is stored in the back end, and how is it accessed? How is it manipulated?
One of the problems many developers have is the tool problem. When the only tool you have is a hammer, most problems start to look like nails. You’re familiar with one tool, and you try to apply that tool to every circumstance, whether the circumstance calls for that tool or not.
A regular developer can get stuck in this mindset. A full-stack developer looks at the total ecosystem and strives to identify opportunities to pick up and use new tools, to complete tasks in more efficient or effective ways.
This is why applications developed by full-stack developers tend to be more efficient and faster at performing their tasks; there are no walls or inconsistencies introduced by different tools and different workflows from different teams. It’s seamless, from end to end.
You Need the Ability to Operate at the Lowest Levels of Hands-On Coding
At the same time, a full-stack developer is not a manager. Full-stack developers get their hands dirty. You’re not sitting on the top branch of a metaphorical tree, watching as an app is built below you. Rather, you’re able to zoom in and out as the needs call for it. One day, maybe you’re operating in the front end, helping streamline and sanity check the user interface. The next week, you zoom out and get an idea of how the interface affects the queries made to the database, and zoom back into work on optimizing the database itself.
A full-stack developer is the quintessential jack of all trades. You may not develop the deepest and most robust levels of familiarity with any given tool, but you have an awareness of how different tools work and how to work with them. You know how to code in HTML, even if you don’t know every edge case of interactions in HTML5. You know how to apply CSS, even if you don’t know every best practice for modern CSS3 animations. You know how to stack up a PHP site, even if you don’t know the ins and outs of PHPBB.
You Need the Ability to Specialize
One of the synonyms for a full-stack developer is the “T-shaped” developer. The T describes your skillset. At the top, with the –, you have a broad but relatively shallow skill base. You know Javascript and you know about all of those different frameworks. You know enough PHP, SQL, HTML, CSS, and so on to be functional in all of them, and to know how they interface with one another.
From there, you pick one or two skills that you like the most, and you dig deep into them. Maybe it’s the hands-on coding with HTML and CSS for front-end development. Maybe it’s the intricate web of SQL and PHP interactions that keep a database alive. Maybe it’s the project management aspects, working with teams of people and keeping them all going. Different elements of different skills come into play, but you become the best interface between them all because you understand how they all work. You can talk to specialists on different teams because you know the basics of what they’re doing.
Tangible Skills
One difficulty with all of the above is that the ability and desire to learn is itself difficult to learn. It’s very hard to learn motivation and drive as a skill. Therefore, you have to consider the tangible skills you can learn and measure, as part of the overall full-stack experience. So, what should you have on your plate? The people doing the hiring are looking for specific skills, such as:
- HTML and CSS. These two are the core of all good front-end development with modern web apps. They change from time to time, with updates to introduce new features or best practices, while deprecating unused features or features with poor accessibility.
- Javascript. JS is the quintessential full-stack developer skillset, because it’s one of the easiest programming languages to learn, while also being one of the most robust. It has a broad array of use cases and is found nearly everywhere in the wild.
- Git. The use of version control and a centralized hub for storing code in a repository is essential for both working at a low level and managing at a high level.
- PHP and SQL. These two go hand in hand, as the back-end equivalent of HTML and CSS. Without them, most databases fail. They’re the go-to for most modern database handling, though some alternatives do exist.
You also need some creative skills. For example, user experience and user interface design need an awareness of how users actually use apps, what pain points they’ll have, and even features like color balance for accessibility.
Remember that the average coding boot camp can only teach you the most superficial levels of all of these skills, and they’ll miss some, like the creative and soft skills necessary to design and manage an app as it’s being built. They’re fine as a way to dip your toes into the world of development, but for you to thrive, you need a deeper education.
What are your thoughts? Do you think you have the skill set needed to become a full-stack developer?