You've probably seen the term "full stack developer" before, either on tech-related websites or in job applications you've perused.
So have you ever wondered what exactly a full stack developer is and what skills you'd need to become one? Well if you're curious like I was, this article will help clear it all up.
What does "Full Stack" mean?
When I began to learn about coding, I knew that you are either a web developer or a mobile developer – at least, that's what I thought back then.
So I decided to first learn
Android development then later transitioned to
web development. I knew that with the skills I had, I was set and ready to apply for jobs.
When I looked over my first job applications, something stood out: they either wanted a front-end developer, back-end developer, or a full-stack developer.
Um, what the heck! All I ever wanted was to be a web developer, or at least I thought that was where everybody began. Seeing those new terms made me feel confused and for a moment I thought I had chosen the wrong path. But no – all I needed was to learn some new terms and I was good to go.
In the past few years the web has become more complex and there are many opportunities for developers with different skills.
This means that as a developer, depending on your skill set, you will classify yourself as a:
- front-end development – deals with what we can see and interact with
- back-end development – deals with what the user can not see
- full-stack development – is able to do both front and back end development (which applies for both mobile and web)
To understand each of these roles, we're going to dive in a little deeper to see what skills and knowledge you need to become whatever type of developer you want to be.
What is a Front End Developer?
Front end developers build out the visible parts of a website – what the user can see and interact with.
HTML (HyperText Markup Language) – this is like the skeleton of the body, because it gives it a website structure. Every site you visit is built using HTML, which handles the structure and the content of the site.
CSS (Cascading Style Sheets) – you can think of CSS as the aesthetics and muscles of the body! CSS makes a site beautiful and interesting to look at. Just like in your body where muscles and skin make you beautiful, CSS does the same for a website. It sets the fonts and colors, adds images, and even helps make the site responsive.
For example, take a look at my portfolio that I made using these skills alone HERE.
Also, there are a number of helpful frameworks like React, Angularjs, and jQuery that help front-end developers build projects more easily.
Responsibilities of a Front-end Developer
Just like any other role out there, front end devs have certain responsibilities. Let's look at the skills and tasks required for a typical front end developer role:
- Collaborate with designers and application developers to develop customized websites.
- Develop sites with a wide array of contents and ensure optimal utilization of web tools.
- Build reusable code for future use.
- Ensure that web designs are responsive and work well on all devices.
- Work with creative teams to develop innovative solutions to cater to a wider audience.
- Monitor and ensure high quality design and code of a website.
- Utilizing a variety of markup languages to write web pages.
How to Get Started with Front End Development
To help you get started in this role, I've created this list of excellent resources. There are many platforms with both free and paid materials to help you learn. Here are the sites I recommend:
- freeCodeCamp 🆓
- Frontend Mentor 🆓
- Udacity 🆓
- Frontend Masters 🆓
- Web Development Guide
I also compiled a repo to help beginners get started with front end development – you can check it out here: HTML,CSS & JS
And here are some other repos with learning resources:
Perhaps you might wonder what you'll need to do next after studying and learning all this stuff. If you are able to get through all the above and learn it well, you'll be qualified to own that Front End Developer title (with an average salary of $86,148 per year according to Glassdoor).
During the process of learning, though, you will need to practice to perfect your new skills.
And for me, practicing is all about building projects and hosting them somewhere so that you can showcase your work to potential employers.
Below is a list of free hosting services where you can host your front end projects:
What is a Back End Developer?
Back end developers deal with the parts of a website that users don't interact with directly or see. Their work is much more behind the scenes.
Some of the most commonly used languages for back end work are PHP, Ruby, and Python. If you know these languages you can create algorithms to manipulate data delivered from the front end side of the site.
Back end developers work with front end developers to make their projects work. One thing to note in job listings is that they will often not directly mention back end development as a required skill – instead the company might be looking for a Python developer, a PHP developer, and so on.
Skills You Need for Back End Development
Learning backend development can help you become familiar with several different languages, which can help boast your career.
Below are some steps to help you get started with the back end:
- Know and understand the basics of data structure and algorithms
- Learn a programming language used on the back end
- Learn about databases
- Find a framework for the language you learn (for example if you learn Python, then tackle Django)
- Practice and start creating projects. Then you can show off those projects to your future employers.
Then when you are ready to share your work, deploy your projects to any of the hosting services listed below:
Responsibilities of a Backend Developer
- Database creation and management.
- Understand the goals of a website and create effective solutions.
- Research and introduce new and relevant technologies.
- Back-up and restore the website's files and data.
- Collaborate with teams of designers, front end developers, and system admins.
- Troubleshoot and debug applications.
How to Get Started as a Back End Developer
Check out these resources to learn more about back end development:
- Beginner's Guide to Backend Development
- Learn Backend Development
- Backend Dev - The Ultimate Guide
- The freeCodeCamp YouTube channel has tons of resources on back end development – just visit the channel and Google what you want to learn.
Now that we have covered both the front end and back end, we can finally discuss our main topic – what is a full stack developer?
What is a Full Stack Developer?
In simple words, we can say that a full-stack developer is able to work with both the front and back ends of a website or an application. This means that they are able to handle projects that involve building user interfaces and databases.
In order to become a full stack developer you will need to put in some years of hard-work and get some experience in the industry. You'll need to learn both the front end and back end languages and also learn about databases and the server side.
What Skills You Need to Become a Full Stack Developer
As you might've guessed, you'll need a mix of both front end and back end skills like:
These are the fundamental skills you need for web development. If you want to become a full stack dev, start here.
Programming languages like Java, Python, Ruby, or PHP
You might get confused or feel overwhelmed when it comes to chosing a language to learn. You can always pick one and learn it well, then move into another once you've gotten the basics down.
Before you start looking for other resources to learn from, check out the main docs of the language you're trying to learn.
For example, here are some documentation links for Ruby, Python, Java, and PHP.
- Development frameworks
Learning a framework helps make your development work easier. It's a good idea to learn at least one framework because:
- It eases debugging and mantainance of applications
- It helps reduce the length of your code
- It improves proficiency and reinforces security.
Some of the most popular frameworks include:
- AngularJS, React, Vue, and Svelte for the front end
- Rails for Ruby, Django for Python, and CakePHP for PHP for the back end
And here are some resources to help you learn these skills:
- Experience with databases (the brains that make websites dynamic)
I'm sure we have all interacted with online stores. Any time you search for a product online the database is responsible for accepting your request, fetching the info you asked for, and giving back feedback.
A user can also change the data in a database. Let's say you forgot your password and you had to change it – the database will automatically update to the newly changed password and replace the old one.
You'll need to understand how the client side and server side communicate. Databases provide an interface to let a user save data in a persistent way to memory. This lets us retreive data whenever we need it.
Depending on the type of application you are building, your database needs might vary. Check out this article for more detail about that.
- Basic design skills (UI/UX)
You'll need to be able to develop the visual design which determines the way a user will interact with your site or product.
Some of the basic tools to know are Adobe products (like Photoshop or Illustrator), Invision, and Figma.
There are many resouces to help you get started with these tools, like Youtube videos, online courses, and UX bootcamps just to mention a few:
- Version control
Version control helps you keep track of your project's progress and collaborate with other developers. It can also help you recover lost project files incase of a mess up.
- Lastly, you'll need to be really good at:
- Time management
- Good communication
- Problem solving
Now that you know what a full-stack developer is and the skills you'll need to get you there, what are the responsibilities that come with the role?
Responsibilities of a Full-stack Developer
- Back end design and development, including at least one back end programming language
- Database and server management for website functionality
- Ensure that the projects run smoothly on all platforms like Windows, MacOS, and Linux.
- Make sure the applications are responsive.
- Meet both the technical and consumer requirements.
- Design and Develop APIs which are responsible for fetching data.
Advantages and Disadvantage of Being a Full Stack Developer
Just like with any role, there are some pros and cons to being a full stack dev.
Advantages of Full Stack
- Adaptability – you are well versed in both front and back end technologies which means you can easily switch projects when required to.
- You can carry out a wide range of tasks because of your diverse skillset which lets you work on different types of projects.
- It reduces project communication because you can implement changes independently in most cases.
Disadvantages of Full Stack
- Under-productivity and time management issues may happen when your company/team depends on only one or two full stack developers.
- It's difficult to keep up with trends – as a full stack dev, you'll work across different areas of tech so it is a challenge to keep up with emerging trends.
- Issues with balancing work, as full stack devs tend to take on too much work. As a result, you might forget to divide your workload into smaller tasks and get confused about your responsibilities on a certain project.
Now that we have covered all the details, it's time to talk money. You're probably thinking that all these requirements should come with a very good salary, right?
Well, that's true – according to Indeed the average full stack developer can start at $107,750/yr.
How to Get Started with Full Stack Development
In order to learn all that we have discussed here, you'll probably want some guidance.
Fortunately, you won't have to search for the resources yourself because I did that for you. All you need is to pick one and get started learning.
- Full Stack Web Development: HTML, CSS, React & Node (Udemy)
- Full-Stack Web Development Course with React (Coursera)
- Professional Full Stack Developer – Nanodegree Certification (Udacity).
- Free Full-Stack Development Training (LinkedIn Learning – Lynda)
- Full Stack Developer Course
- Full Stack Web Developer Path
A full-stack developer can do pretty much everything. If you enjoy being creative and problem solving, and understanding how different things work together, then this is a path you might want to pursue.
Although many job descriptions list a Computer Science Degree as a requirement to get hired as a full-stack developer, I tend to disagree with this. I believe that all you need are skills and projects which you can gain by building projects.
What's your take on this? Share your thoughts with me here @larymak1.
Also, which type of developer are you?
I will go first: I have always preferred to call my self a Growing Developer as there is room to learn every day. I can't really specify exactly one label, because I believe I can pretty much do anything.
If you have read this far I really appreciate it. Help me grow my community: