If you’re looking to break into the world of web programming, you may have come across the term “full stack developer”. But what is a full stack developer, really? What does he or she need to know?
That’s what we’ll cover in this article—along with a plethora of learning resources to help you delve deeper into the world of the full stack dev.
When people talk about “the stack” in web development, they’re referring to all the levels of technology that make a web application run, from the very low level nuts and bolts that a user never even sees—the “back-end” of a website— all the way up to the “top” of the stack, the elements of visual design and interactivity that comprise the bulk of the user’s experience: the “front-end”.
A “full stack” web developer is, quite simply, someone who understands all of the different levels of the stack, knows how they fit together, and is able to work with them.
She or he is not necessarily an absolute expert at every single level of the stack—professional web programming is like any other field, where most people are stronger or more specialized in one area than another.
But full stack web developers are distinguished from pure “back-end” or “front-end” programmers in that they really do know how to work at every level of the application, even if they may lean more heavily to front-end or back-end expertise.
At the low levels of the stack you’ll need to understand the languages and technologies that actually make the website work—and that are vital for speed, performance, and security. This is sometimes called the “back-end” of a website.
Here’s where you’ll find the real engine of a web application—the parts that actually make it work. This is what you’ll need to know to become a master of this part of the stack:
Servers. That web app that you create has to live somewhere, and it has to have a way for people at home to access it from their computers. That’s what servers do. Good full stack developers will have a strong grasp of how server software like Nginx or Node.js works and some knowledge of how to set up and troubleshoot a server.
Database management. Websites store user data and all sorts of other information. That data has to be kept somewhere, in a well-ordered, easily-accessible format. The way this is done is through a back-end database. A full stack developer should be proficient in at least one (preferably more) database technologies.
A good place to start is with SQL (Search Query Language), which is a standardized language used by many different types of database software. You should also familiarize yourself with at least one of the major database systems: MongoDB, MySQL, Oracle, or PostgreSQL.
Back-end languages. These are the “server side” or back-end languages that make a website run. Some of the most popular in web development today are probably Python, PHP, and Ruby, but there are certainly others that can be learned as well.
Web applications are typically written using frameworks, which are pre-compiled libraries of useful code that help professional developers save time and write clean, safe web applications.If you’re working in Ruby, you should check out theRails or Sinatra frameworks; Python programmers swear by Django and Pyramid; and the staple of PHP web development is the Laravel framework.
At the top of the software stack is where the user actually interacts with your web app. Working with these parts of a web app is sometimes called “front-end” development.
The actual content on a web page is a mixture of HTML and CSS. HTML is just the markup language that defines how various elements on a page appear—the difference between bold text or italics, a centered picture or a left-aligned one. And CSS is a powerful tool that allows you to make large-scale HTML changes—and more—without having to manually alter each place in the code where you want the change to occur.
HTML and CSS are pretty basic technologies, but their use can be quite sophisticated. As you gain more experience in web development, you might consider exploring topics like CSS pre-processors such as SASS and LESS, which extend and simply CSS and give you even more control over the style of your web page. You should also give thought to the importance of mobile-first development and responsive design.
Finally, you should take into account the intangibles of user experience. There are whole courses devoted to UX best practices, and if you’re working as a full stack developer, you’ll need to create a great experience for your users. It’s not just a matter of knowing HOW to code, it’s also about knowing WHAT to code (and what NOT to!).
Senior developer roles
As you can see, there’s an enormous about of ground to cover if you’re looking to work as a full stack developer. For this reason, some people say that there really isn’t any such thing as a “junior” full stack developer, since the scope of knowledge required to work in full stack development often comes from fairly extensive experience.
But that’s a little bit of an over-simplification. In reality, there are bootcamps and online courses meant to take a person from zero knowledge of programming to a knowledge of all of the levels of the stack (though admittedly, not a tremendously in-depth knowledge). And graduates of these programs do find work, so by definition the “junior full stack dev” exists.
But obviously, as you progress in your career, you’ll want to take on more responsibility (and make more money!). So it makes sense to think about what sorts of things a “senior” full stack developer would be doing. Here are a few ideas:
Specialize. You may know a little bit about a lot, but in addition to continuing to develop these generalist skills, a smart move would be to drill down a bit in your preferred area of the stack and gain a really in-depth knowledge of that technology.
Maybe you want to understand server software so well that you could write it yourself. Or perhaps you want to distinguish yourself as a front-end guru, and hone your design and UX skills to the point where these alone would make you a great hire at another company. A full stack developer knows a lot about a lot, but really mastering one area is a pathway to jobs and projects that might otherwise be closed to you.
Test. If you work as a senior developer in almost any capacity, whether it’s web design, app programming, or business software, there comes a point where you no longer just collaborate on projects with other people—you drive the development of those projects yourself.
That means that you’ll be responsible, more than you ever were before, for testing each and every part of the code that makes your websites work. Developing solid unit testing skills in your programming language (or languages) is key.
Manage. Once you get a bit higher up the food chain in the world of development, you will find yourself in charge not only of more code—but of more people! It’s a bit of an open question as to whether machines or human beings are easier to work with, but both will require you to develop skill and finesse in order to obtain optimum performance. Consider taking a course in one of the preferred project management methodologies, such as Agile.
Where to begin?
If the road to full stack development intrigues and intimidates you at the same time, you’re not alone. There is definitely a lot to learn—but the personal and professional rewards are, potentially, enormous. But it can be a little hard to know where to start, since there are so many things to learn.
Some people prefer to start simple, especially if they’ve never written a line of code before: learn HTML and CSS. In a couple of weeks, you’ll be be able to design and style great looking web pages, even if you have no idea how to make them interactive, store user data, or serve them to the web!
But the confidence you’ll gain from taking this first step will make the next steps a lot easier—and these front end design skills aren’t “just” first steps: solid front end competence is crucial for a good full stack dev, and will stay with you for the rest of your career.
If you’ve got a more academic mindset, you might want to delve right into a programming language and a web framework, and wrestle with the basic yet mysterious issues of how, exactly, computers do what they do. There are some great courses online that can take you from absolute beginner to having a deployed web app in just a couple of months (with enough hard work).
Ultimately, everyone has their own learning style, and you have to find what works for you. But the best thing to do is just get started on something today. The sooner you begin learning some part of the stack, the sooner you’ll get to the other parts—and, eventually, the full stack.