If you peruse sites like LinkedIn, Github, and Quora – or even job listing sites – you may have noticed something common in many developers' profiles: they call themselves "Full-Stack developers".
If you're a beginner in tech and you don't know much about the field, this might be a confusing term that brings up lots of questions like: What is a full-stack developer? What exactly do they do? What skills are needed to become one? And so on.
Now, to help you answer this burning question, in this article we will cover all this and more including resources and tips to help you become a Full-Stack dev.
Let's get started.
What Does "Full Stack" Mean?
Just like any other beginner starting out, when I began to learn about coding, I knew that you were either a web developer or a mobile developer – at least, that's what I thought back then.
So with this in mind it was easier for me to choose a track. I decided to first learn
Android development then later transitioned to
web development. I knew that with these skills, I was set and ready to apply for jobs.
After a year of dedicated learning, there I was already applying for jobs. During this time of trying to find a role that aligned with my skills, something stood out in all the descriptions: they either wanted a front-end developer, back-end developer, or a full-stack developer.
For a moment I was confused – 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 this was because I wasn't well informed when I was starting out. I just needed to learn more about different terms/roles and I was good to go.
It's also worth pointing out that, over the past few years, the web has grown and opened many opportunities for developers with different skills. So it does not matter what skills you have, the web is diverse it can always accommodate all of us 😊.
So first, let's highlight the most common terms you are likely to encounter, and depending on your skills you will always classify yourself between these roles. They include:
- Front-end Developer - They deal with what we can see and interact with in a website.
- Back-end Developer - They deal with what the user can not see, they create pathways to deliver information to users.
- Full-Stack Developer - They are able to do both front and back end development (which applies for both mobile and web).
Let's step it up a notch and understand these roles. We'll also see what skills and knowledge you need to become a front end, back end, or full stack developer.
What is a Front End Developer?
The main role of front-end developers is to develop the visible parts of a website, mainly what the users can see and interact with. It is also known as client-side or customer facing side.
In a real world example, let's take an example of a widely known meme: you can think of front-end as the complete setup in a wedding reception or party:
Skills Needed for Front-End Development
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) – 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.
By having this skills alone you are able to develop static websites as part of your project and use them in your resume. To lead by example take a look at my portfolio that I made using this skills alone. MY PORTFOLIO.
Some of the important improvements include introduction of frameworks like React, Angular, Node, Vue etc... that has made it easier for front-end developers to build projects.
Just like any other role out there, front end devs also has some duties that are mandated to them. Let's look at the responsibilities for a typical front-end dev in a day to day activity:
Responsibilities of a Front-End Developer
They are expected to:
- Ensure that web designs are responsive and work well on all devices.
- Collaborate with designers and application developers to develop customized websites.
- work with creative teams to design new features, and maintain old features.
- Collaborate with back-end developers and improve code usability.
- Write a detailed functional requirement documentantion and guides, To help you write a good documentation as a front-end developer, this guide on The Do's and Don'ts of front-end documentation will come in handy.
- Stay up-to-date with the latest trends in their field of work.
How to Get Started with Front End Development
By this point you have a rough idea of what is associated with the front-end developer role, Perhaps you are wondering how do I get the necessary resources to start learning? Well, worry not because I've created this list of excellent resources.
Out there we have a bunch of platform that might be a little confusing for beginners, We have both paid and free resources but this is not the issue the main point is for you to get what you learn and use it for your benefit.
My top recommendations include:
- FreeCodeCamp 🆓
- Udacity 🆓 (free & paid)
- Codecademy (paid)
- Skillshare (paid)
- Frontend Masters 🆓
GitHub Repos with learning materials
- I have compiled a repo to help beginners get started with front-end development – you can check it out here: HTML,CSS & JS
- Frontend Roadmap
- Frontend Developer Roadmap
What next 🤷 after studying all this much, Well if you are able to get through the above and learn it, you are qualified to own the title Front-End Developer, meaning you are now ready to apply for jobs associated with this role.
To give you motivation to apply for jobs, according to Glassdoor, the average salary associated with role is $86,148 per year, good money there.
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. They mainly create pathways to deliver information to users. It's mainly about servers and database.
Referencing to our earlier example, now we will be talking about the minds behind all the good staff guests enjoy, the people who prepared the delicacies.
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 Needed for Back-End Development
By choosing this path, it assures you of familiarizing yourself with several if not one programming language which will help you along you career path.
Some of the thing to keep in mind if you choose this path include:
- Know and understand the basics of data structure and algorithms on the language you choose to learn.
- Learn a programming language that you are comfortable with, some of the most common include Python, Java, PHP, Go, Ruby & Rails, etc...
- You need to have the knowledge of databases, some of the most popular include MYSQL, MONGODB, POSTGRESQL, REDIS, OCACLES, etc...
- Find a framework associated withe the language you are learning and learn it, an example: If you are learning Python then choose between Flask or Django.
- Practice and start creating projects. Then you can show off those projects to your future employers.
Responsibilities of a Back-End 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 With Back-End Development
It will be fair to note that, the resources under this section are most likely to be resources to studying a particular language or it's associated framework.
My recommendation include:
- Beginning PHP
- Mastering Backend
- The FreeCodeCamp YouTube channel has tons of resources on back-end development – just visit the channel and search what you want to learn.
Just like we host projects in front-end development the same applies to back-end. Some of the platforms that you can use to host your projects include:
Now, that we have covered both the front-end and back-end paths that are essential for one to become a full-stack developer, 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 address both sides of the equation, meaning they can work with both the front and back ends of a website or an application. 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 technologies.
Skills Needed to Be a Full-Stack Developer
It is obvious that in order to get the title of a full-stack developer you will need a wide variety of skills. Just a recap of all of it:
Basic UI/UX design skills
This skills will help you be able to develop a visual prototype that will enable you get to know and feel how users will interact with you end product.
We have many resoursec and softwares that can help with the mockup design, the common ones include: AdobeXD, Invision and Figma.
Having the softwares without knowing how to use them won't be of any help, right? To help learn how to go about these tools we have Youtube videos, online courses, and UX bootcamps just to mention a few:
These are the fundamental skills you need for web development, They will help you create beautiful interfaces for your sites. If you want to become a full-stack developer be sure that you clearly understand the basics before moving to the next step. Also find a front-end framework of choice and study it.
Programming languages like Java, Python, Ruby, or PHP.
This step might get confusing or make you feel overwhelmed when it comes to choosing a language to learn. You can always pick one and learn it well, then move into another once you've gotten the basics down. After picking a language find a corresponding framework and master it too:
Most common: Django/Flask for Python, Laravel for PHP, Spring for Java etc...
At this point it will also be important to note that:
Before you start looking for other resources to learn from, check out the main documentations of the language you're trying to learn.
Learn about development frameworks.
Learning a framework helps make your development work easier. It's a good idea to learn at least one framework for both the front-end and back-end because:
- It eases debugging and maintenance of applications and sites.
- It is a good use of code re-usability.
- It helps reduce the length of your code.
- It improves proficiency and reinforces security.
Now, to help you get started with studying frameworks the right way, here are quick links to official documentation of the most common ones:
Learn about Databases
This are the brains that make websites/applications dynamic. 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 retrieve data whenever we need it.
Depending on the type of project you are working on, your database needs might vary.
Learn Version control
It is considered to be a very important tool by most developers, this is because of the advantageous role it plays in the development field. Some of it's importance include:
- It helps keep track of project progress
- It makes working with team and collaboration easier.
- It helps recover lost project files incase of a deletion.
The most common and widely used version control is Git. To help you get started to learn it, check out the official Git Documentation.
Other Important Skills:
- Time management
- Good communication
- Problem solving
There you have it all. By this point you have the concept of what a full-stack developer is all about and the skills needed. What are the responsibilities that come with the role?
Responsibilities of a Full-stack Developer
- Have the front-end knowledge and any related frameworks.
- Have the back-end design and development knowledge, including at least one framework associated with language of choice.
- Have the database and server management knowledge for the website functionality.
- Ensure that the projects run smoothly on all platforms like Windows, MacOS, and Linux.
- Meet both the technical and consumer requirements.
- Design and Develop APIs which are responsible for fetching data.
By choosing to be a full-stack developer, it means that you have a big mandate coming your way. This means we will have some pros and cons associated with the role. Some of them include:
Advantages of being a Full-Stack Developer
- 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 skill set which lets you work on different types of projects.
- It reduces project communication because you can implement changes independently in most cases.
- 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 – since you are working across different areas of tech, it's a challenge to keep up with emerging trends.
- Issues with balancing work, as a full-stack developer it tends to take on too much time. As a result, you might forget to divide your workload into smaller tasks and get confused about your responsibilities on a certain project.
One of the main reason why people study and later work is to be able to pay bills, so 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 salary of a full-stack developer ranges 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)
A full-stack developer can do pretty much everything. If you enjoy being a creative and a problem solver, and trying to understand how different things work together, then this is a path you might want to pursue.
Although many job descriptions lists 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.
In the recent past, we have had many polls whether a CS degree is necessary to be hired as a developer but many who have gotten the job tend to disagree. The tweet below proves it all.
My final question for you, Which type of developer are you or Which type of developer are you aiming to be?
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 level, because I believe I can pretty much do anything.
If you have read this far I really appreciate it.
Connect with me on: Twitter | LinkedIn | GitHub | YouTube.
Enjoy Coding ❤.