Suppose, you decided to pursue a career in web development. And while entering the industry as a junior doesn’t pose any major hurdles since the positions available are plenty and the pay is justifiably good, you fairly quickly notice that many of those positions claim they need a full stack developer as opposed to just a developer. This article attempts to answer such questions as ‘are full stack developers even real,’ ‘what are they, these full stack developers,’ and ‘are there any tips on how to become one of those ninjas’?
What is a full stack developer? // What does a full stack developer mean?
Depending on the industry, a set of programming skills, or even an individual client’s perceptions of the role, a full stack developer is usually a web development specialist, who can take a client’s idea from paper to a fully functional application. As opposed to just front-end or back-end developer, you’ll be expected to know the intricacies of both front-end and back-end. That essentially means that a full stack developer understands the full life cycle of an application, front-end languages and frameworks, as well as understands how to store data in a database on the back-end with the available back-end languages and frameworks.
We’ve covered some of the basics of these above-mentioned terminologies in our previous blog post on How to Hire a Freelance Developer
It’s practically impossible to know everything, and a full stack developer is not expected to be a superman or ninja, rather — they must possess enough knowledge to build a fully functional website or minimum viable product (MVP) quickly.
While being a full stack developer has a certain set of advantages, it does have shortcomings as well. Usually, because of the vast amount of knowledge a full stack dev possesses, they have a pretty broad and active mindset, and instead of being a professional in one sphere or area, they tend to help others and manage teams, reduce the time and technical costs of communication; or, conversely, work on smaller projects, where the team of developers would be inappropriately costly or counterproductive. It’s practically impossible for a full stack dev to be an expert in one skill, they tend to know “a little here and there,” but enough to make an app or product work.
Now, you’ll probably argue that what I’ve just described above is not about development per se, but about engineering. There are, indeed, subtle differences, between a software engineer and a developer, which we’ve extensively described in one of our articles on Software Engineering, so if you’re interested to know the difference, then head on and read the piece. Overall, full stack engineers do have additional knowledge of project management and things like systems administration, which involves configuring, managing, and, finally, maintaining computer systems and networks. Moreover, generally, you can’t just become a full stack engineer after finishing school, you’ll need some experience in the field, usually up to five years, in order to be a professional in both engineering and development.
Tip 1: Learn How to Version-Control (git)
Although it’s tempting to dive head-first into web design or databases, we advise you to build solid foundational knowledge that will be useful in all programming fields, not just web development. One of such essential skills is using version control software. At its core, version control systems (with git being the best example) help you to organize different versions of your code the right way.
There’s a myriad of version control systems, but the gold standard of today is git, which powers platforms like GitHub and GitLab — these projects host open-source code from millions of developers worldwide.
Why is git so revolutionary? Instead of a drawn-out explanation, let’s use a (somewhat) humorous example instead. Without git, the way project files are organized would look like this:
- Future updates
- Deprecated assets
- To be removed
- Might use later
- Changed assets
- Updates CSS
- Updated styles
- Updated layout.css
- Updated .nav
- Updated .container
- Updated layout.css
- Updated styles
- Updates CSS
Now take the project structure and multiply it by the number of developers in the team. With git, however, storing and managing the project files (and their various versions) becomes a breeze.
A few learning resources: The book serves as the ultimate learning resource, so you’re sure to keep referring to it for a long time. However, you don’t really have to become a git expert straight away; you only need to get a grasp of git’s basic functionality. For these purposes, we can use an excellent post written by Nico Riedmann titled Learn Git Concepts, not Commands — it introduces the reader to how git works without overwhelming them with too many commands.
Tip 2: Learn Markup and Styling (HTML & CSS)
Although not “true” programming languages per se, both HTML and CSS are absolutely essential in web development. HTML allows to structure the web, while CSS manages the styling of pages. The main hurdle you may experience while learning these technologies is memorization: neither HTML nor CSS involve complicated abstractions or confusing syntax, but they do include a plethora of tags (in case of HTML) and selectors (in case of CSS) that you need to memorize.
Naturally, you aren’t expected to memorize every construct there is; rather, you need to remember whether a particular functionality can actually be implemented — and then look it up online.
HTML and CSS are incredibly easy to pick up because you can interact with their results straight away — just create an index.html
page and play around with its tags and stylings. Upon changing even the slightest detail, you can clearly see how the entire web page immediately responds to your command.
An important disclaimer: Many online resources offer so-called boilerplate code (default code that you need to paste to make the web page functional):
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>title</title> </head> <body> </body> </html>
While it does seem convenient, you’re better off writing it yourself while you’re learning. It may feel tedious, but you need to understand what the most important tags do and how to use them.
A few learning resources: HTML Crash Course For Absolute Beginners by Brad Travis is a great quick introduction to building simple web pages. In regards to CSS, Brad offers a CSS Crash Course For Absolute Beginners. Once you’re feeling more confident, you can utilize the to its full potential (MDN is pretty much the Wikipedia of web development).
Tip 3: Learn Interactivity (JavaScript)
JavaScript is the last programming language in the holy trio of web development technologies — but it’s arguably the most important. JavaScript enables web pages to be interactive and this quality has allowed simple websites to transform into web apps — full-blown platforms where users can interact with each other and collaborate.
JavaScript is in its own category due to its complexity: unlike HTML and CSS, JavaScript is a programming language that involves a lot of abstractions that directly tie in with how web works. Some of these abstractions include:
- DOM Manipulation,
- Fetch API,
- Hoisting,
- Event bubbling,
- Scope prototype,
- Shadow DOM,
Due to this language’s extensive functionality, you’ll probably spend learning/mastering JavaScript far longer than HTML/CSS or any other technology — its accessibility and high tolerance for errors mean that writing JavaScript code isn’t hard — but writing good JavaScript code is. Although JavaScript is generally perceived as a “front-end-only”, it is also capable of powering back-end technologies — a great example is Node.js, which we’ll explore in the latest sections.
A few learning resources: javascript.info hosts the The Modern JavaScript Tutorial — a community-curated collection of docs which detail all of JavaScript’s functionality (plus a bunch of exercises for each chapter).
Tip 4: Dig Deeper (Understand How the Web Works)
While some technologies manage the web pages themselves, there are other technologies that comprise the web infrastructure itself — that is, allowing the user to visit a webpage and get the information they need. The internet’s ubiquity has made us indifferent
Naturally, a full stack developer isn’t expected to know all intricacies of how the web operates under the hood — this extent of knowledge is more fitting for a network engineer. Still, it’s absolutely crucial to understand at least the basic aspects because this is where front-end and back-end technologies fuse — and the web project comes to life.
In the beginning, you can focus on these questions to get a better understanding of the web as a system of technologies:
- How do browsers work?
- What is DNS? Why is it such a crucial web component?
- What are HTTP and HTTPS?
Tip 5: Learn a Back-End Language
While front-end technologies enhance the web project’s visuals, structure, design, and overall user experience, the back-end languages manage other vital parts — those pertaining to the project’s business logic. When you’re just starting off your full stack journey, a scripting language will be optimal because it allows you to get your project up and running in no time (PHP is particularly capable at this). You can choose one of the following languages:
- Node.js
- PHP
- Python
- Ruby
As they all feature dedicated web frameworks that you can use to build web apps. The question at hand might be this: “Which back-end language should I learn?” Although each of them has a number of pros and cons, the main benefit you’ll get is experience — you’ll appreciate how front-end development (designing and writing JavaScript, for instance) is different from back-end development (“behind the scenes” stuff, that is).
Tip 6: Learn How to Work with Data (Databases)
Programming in general is heavily reliant on data — as your expertise grows, you learn to store data, manage it, secure it, interpret it, and so on. While “data” can be a broad term, web developers typically deal with users’ personal information like login details, passwords, emails, and payment credentials. Storing these types of data is one thing, but storing them securely is a craft in and of itself.
SQL, or Structured Query Language, is the optimal technology to learn if you want to dive into databases — its popularity and ubiquity make it a great skill to have in your toolbelt. These are the major aspects that make SQL essential in all fields of programming:
- SQL can be used everywhere. Working with data isn’t a prerogative of fancy data scientists — data is all around us, encouraging us to learn from it and make our web projects better.
- SQL transcends time and space. Ever since its inception in 1992, SQL has been dominating the market. Most importantly, it hasn’t really changed as a technology — web development of 1992 and 2019 are different, but managing a SQL-based database has always been the same.
- SQL can make or break the web project’s performance. You’ll often hear that “Technology X is so slow, it shouldn’t be used in web development!” — a popular example is Python and its alleged “slowness”. The reality, however, is different: in most cases, the bottleneck isn’t the code, but the way the database is organized. By learning SQL, you’ll also learn to optimize your projects.
Bonus Tip: Master the Details of a Good Website
Although disregarding these features won’t necessarily break your website, they are the crucial factors that draw the difference between “meh, just another website” and “woah, this is a great website”.
Accessibility. This term refers to the practice of designing and structuring information in a way that the maximum amount of users possible have no trouble browsing your website. A few easy steps (which actually make a lot of difference) you can take are:
- Providing alternative texts (
img src="dog.jpg" alt="A happy dog with its family on a beach"
) allows the user to understand the image’s content in case the image doesn’t load properly or the user has vision problems. - Using colorblind-safe color palettes in areas where crucial information is conveyed via colors (e.g. infographics, graphs, charts, etc.)
- Making the website responsive, allowing for equal browsing experience both desktop and mobile users
For more pragmatic developers, these accessibility guidelines may appear pointless; on the surface, it does appear that, say, providing image descriptions won’t attract any clients. In reality, however, accessibility best practices are encouraged by Google — and the company makes accessible pages rank higher. Speaking of ranking higher…
SEO, or Search Engine Optimization, is a set of methodologies that help the given website rank higher in search results. SEO is only tangentially related to web development — it’s usually managed by separate teams of SEO specialists, marketers, copywriters, and so on. At the end of the day, however, they are all heavily dependent on the developer to manage the web project’s technical details like:
- Ensure responsive (or even mobile-first) design,
- Ensure baseline performance across all device types,
- Set up page redirects,
- Safeguard users’ personal data,
- And many more.
Performance. This aspect deserves an entire article by itself, so let’s simplify it a bit:
- Optimized images,
- No memory leaks,
- The right technology for the job (e.g. a simple personal blog needs a static website generator, not a full-blown Angular web app).
A few learning resources: The World Wide Web Consortium shares a lot of valuable insights in their Introduction to Web Accessibility</cite. In terms of SEO, we have a neat little article that highlights how a web developer can contribute to their web project’s search rankings. Google goes in detail about web apps’ performance in their Why Performance Matters guide.
Bonus Tip: Familiarize Yourself with DevOps
As established in our recent introduction to DevOps, DevOps is a system of software development practices that incorporates both software development and IT operations. It is designed to decrease the systems development life cycle, all the while paying close attention to business objectives to deliver product features and updates.
Learning DevOps to become a full-stack developer might seem counter-intuitive: it is, after all, is a whole other subfield that isn’t an essential part of web development. Our experience, however, tells us that you should at least familiarize yourself with this skillset. While you can do without it in smaller teams, DevOps becomes an increasingly important competency in larger projects, when scaling efficiently and correctly becomes a major criterion of success.
All in all, DevOps doesn’t explicitly help you in web development — but it does help you to understand how the business/operations sides of the project work.
A few learning resources: The creative geniuses at Google’s Site Reliability Engineering team explain how they achieve the impressive reliability of Google’s websites and services in two books titled Site Reliability Engineering and .
Bonus Tip: Learn Stuff the Right Way (i.e. Practice and Play Around)
Throughout the article, we’ve provided you with a plethora of awesome learning resources.
Full-stack web development is even less formal than traditional software engineering, meaning that there aren’t many “official certifications” to stand testament to your credibility as a full-stack developer. Instead, you’ll have to rely on your real-world and hands-on experience with front-end and back-end technologies. The quality of this experience, however, will not only be determined by what you learn but also how you learn it.
Although this tip doesn’t stand at the top of our list, it’s arguably the most important lesson that beginner programmers can get. Let’s expand it into a simple formula:
- Time A is the time you spend reading docs/articles/books/tutorials related to the technology you’re learning.
- ’Time B is the time you spend applying this knowledge in real-world projects.
Time B should always be more than Time A because applying the new skills that you learned is the only way to solidify the knowledge. Every learning resource is limited in its teaching framework — an HTML tutorial, for instance, will include the following steps:
- Some background information about HTML,
- Some basic steps to showcase a small part of HTML’s functionality,
- A few common errors you might encounter.
Steps 2 and 3, however, are incapable of teaching you the entire HTML functionality and warning against each and every possible error — there’s just too much information. Therefore, you have to play with the code yourself, encountering unique mistakes and implementing unique functionality — the functionality you’d like to see in your own project. In this explorative environment, you retain the information much better and feel more motivated to learn.
Non-technical tips to be a better full stack developer
Becoming a full stack dev can’t certainly be accomplished overnight, it takes time, and most probably money (if you’re not a self-learner; honestly, mentoring is an option and can help you save time, which is the most invaluable resource of all). Start preparing for your full stack career now by exercising global and critical thinking, reading a lot of literature (not just blog posts on medium or dev.to), wielding the power of creativity, being perpetually curious about the world around you, attending tech conferences, and mastering the art of public speaking, learning from your fellow developers, actively participating in forum discussions, and journaling your successes and failures.
Summary: top full stack developer tips
Learn front-end: HTML, CSS, JavaScript
- Learn at w3schools, freecodecamp, and here’s an additional cheat sheet resource at wpkube
- Learn CSS at freecodecamp, learn Flexbox at css-tricks and box model at Mozilla Developer Network, learn JQuery at JQuery learning center
- Learn JS on CodeAcademy and with the book series You Don’t Know JS
Learn web design, UX, UI
- Plenty of articles on UX/UI can be found on a Medium publication UX Collective
- The most comprehensive resource on UX/UI that I’ve found on the web is Nielson Norman Group, plenty of free articles, videos available, you can even purchase a course if you have a dime to spare.
Learn back-end programming languages like Java, Python, JS, PHP, Ruby, Perl, C#, C++ and databases
- Learn WAMPP or LAMPP stack which runs on both Windows and Linux is based on the PHP language with Apache, MySQL, and PERL.
- Learn MEAN Stack (MongoDB (DataBase), Express (Framework), AngularJS (Framework) and Node JS (A JavaScript run-time engine).
- Learn NET ASP.NET
- Learn Django
Learn HTTP requests, Get & Post, AJAX
Learn Git
- Get started with Git
- Learn basic Git commands
Learn GitHub
If you’re feeling overwhelmed, that’s because you should be. Some great courses to check out are listed here Best Udemy Online Courses to Learn JavaScript, React, Angular, and Node [Only Those Updated in 2019] or you can also try other courses like Full Stack Web Dev Crash Course or Full Stack Web Dev or Full Stack Web Dev Bootcamp.
Get ready for a full stack developer interview {learning resources}
These are a few resources to help you prepare for the interview to land that dream job of yours:
Best Resources to Prepare for a Technical Interview
NodeJS Interview Questions
Angular Interview Questions
Take Charge of Any Interview in Three Easy Steps
Python Interview Questions
Interview Questions for JAVA Developers
Sample JavaScript Interview Questions
——————