The skills list required to be a full stack developer is long and it can be hard to know exactly what skills you need and to what level before you starting looking for a job. The often shared online resource for this kind of thing is roadmap.sh but, while it is extensive, I actually think the amount covered here is too much to be helpful to new developers. So, I have my own list, it’s a bare minimum required skills list and it looks like this:
- A basic understanding of how the internet works and HTTP requests (GET, POST, PUT, PATCH and DELETE) and the basic response codes (200, 404, 500)
- HTML - W3Schools HTML
- CSS - W3Schools CSS
- A CSS frameworks like Tailwind or Bootstrap
- JavaScript - W3Schools JS - yes just one language, it’s the only viable option for frontend so just use it on the backend as well.
- Package manager like npm - @allthecode npm overview
- NodeJS - W3Schools NodeJS and ExpressJS
- React
- React Component library like MaterialUI
- Git version control - W3Schools Git
- Know enough about security to know that you don’t know enough about security (CORS, HTTPS, Content Security Policy) - Web Dev Security Basics
-
A database technology (pick a or b)
- a) MySQL is a great started RDBMS - W3Schools SQL
- b) MongoDB is the primary NoSQL database technology University Mongodb
- How to make a REST API in NodeJS and Express
- Docker and containerization - this is a more advanced topic however having an awareness of Docker and the basics of a Docker file would be a big ✅
- Awareness of testing with Jest for Javascript.
- Understanding of Linux commands and some basic OS principles.
Absolutely required items are in bold.
Being full stack is not about being an expert in all of these, it is about knowing enough to get a system up and running, being able to search for the right things on Google and have a sensible conversation with someone who is an expert in their respective areas. You need to be a good, well rounded developer but you don’t need to be expert in every field!
Want more like this? Sign up to my mailing list at Career Switch To Coding and get a free chapter from my book.
Oldest comments (62)
Thank you for this is an excellent list. What are your thoughts Python backends like Flask, how valuable it is in learning them?
You're welcome @ariajanke - Python is very valuable as a backend and general purpose language. I've left it off this list simply because as a full stack dev you would need to know Javascript for the browser so you may as well use it for the backend initially until your career develops 😀
Falsk is great for simple, lightweight API's. For something better organized I've would recommend Django
Thank Simon barker, I live this post, gonna work on it
😀 excellent
Hi, I am a learner. I know little HTML CSS and some JS and I also have knowledge about Django. Are these enough to get an internship.
Possibly, the best way to find out is to speak to someone who makes intern hiring decisions, just phone them up and ask or send them an email and say "I know x,y,z and have made a,b,c. Do you think I am ready for an internship?"
Thanks for the suggestion 😊
"Full stack" title has certainly degraded over the years.
In what way?
In order to be a full stack, you have to cover a lot of ground. As time passes by, sheer amount of topics you need to learn have become mind boggling, not just for the full stack, but for the front end or back end alone. It is so vast that no one with a sane mind has the time to keep up any more - once you think that you have mastered one area, you have fallen behind in all others.
Before, you became full stack when you have mastered your occupation and then decided to horizontally branch out and learn more. For example front-end dev who has decided to learn back-end dynamic language, database and server setup; or back-end who has decided to learn devops, CSS, JS and UI/UX.
Just by looking who calls themselves full stack today and by looking at your list, I can conclude that people learn 5% of what they actually need in order to be called this way. Once "full stack" was a matter of an intellectual prestige, but today every junior who doesn't know fundamentals, but knows to use frameworks and basics can call themselves like that.
So, the title has degraded a lot. Once you needed a knowledge equivalent of an PHD and today you need knowledge on a level of an elementary school.
I have 20 years of experience in the industry and can easily be called full stack, but I know how much I don't know and that I don't deserve to call myself like that. Anyone who claims the opposite still haven't seen how big this ocean is, especially those who rely on frameworks to achieve this title.
Nowadays if you know backend, you considered a full-stack. I mean chances are slim anyone knows backend without any knowledge of frontend. You can pretty much fabricate the front app mixing a bunch of premade components and adding a bit of logic and state management.
That's what I'm telling you - those are superficial skills, this is why bar has been lowered for this title and why those "full stack" devs are just a shadow of what full stack devs used to be. Those developers have no idea how to properly build front end or even use CSS without frameworks. Centering a div is a science fiction to them ;)
Now I think about it I might say the opposite is true. 10 years ago full stack mainly meant: JS/HTML/CSS, PHP, SQL and Apache. Now it covers DevOps, infrastructure as code, Node, React/Angular/Vue and NoQSL and SQL. The list and requirements on full stack is rapidly approaching "IT Department"
:D I don't think so, who defined the definition for "full stack"? At the beginning, I think that title is for people who can handle both backend and front-end stuffs. You can write HTML, CSS, you can do things with database, write API,... Yeah, at that time you can call yourself a full stack developer. All the technique you mentioned above I think it's more relevant to "senior full stack developer" who can cover a lot of things from front-end to back-end, and know a little bit about DevOps
At the end of the day, it's just a title, why people care so much and make a lot of arguments about that?
Meh, I think people learning to code and looking to get their first job care quite a bit about getting a good idea of where the rough demarkations lie to help them on their way. Something we all fall into as experienced devs is forgetting the confusion of what everything was when we started. Back in 2006 when I first started it took me two days to realised that a blog was just a website with some software to manage the content and that was like an epiphany for me at the time.
Today's full-stack yesterday was called just a front-end, because JS was that. There is no list for it. The rule is - you can do it or you aren't.
Isn't it a bit JS-centered ? I mean, you can be a fullstack developper using any other language than Javascript in your backend (go, rust, python, C#, java, kotlin, scala ....).
Moreover you don't even need a front-en framework (or it doesn't have to be react).
Appart from that, I think your article cover any subject a fullstack developer need to know. I clearly love the fact that you mentioned security as it's a really important one which is oftenly forgotten :/
Agreed, the main reason for only saying JS is that it's the only one that runs on the front end so if you are coming to the subject new then stick to JS first and expand later. This is aimed at early devs and career switchers.
I can agree with that, JS is a very good choice when you start learning as it runs almost everywhere (mobile, front, back, etc ...) but sometime you don't choose what will be your first language ... and basically I don't think there is ONE language that is best to start with.
For exemple, some says that C/C++ is the best because after that other language will be easy. Js seems a good one as it runs in front or back. Now Golang seems good too as it is easy to learn. The problem here is it depends on the people using it.
I love when things are opinionated. I don't want to have to choose between x-lib or y-lib ... or how do i have to indent my file etc ... so basically ... python, or react are not really for me. I prefer angular which is totally opinionated ! or golang in backend because the compiler is strict. People should choose based on that (In my opinion)
Darn, I have very similar preference, to be opinionated.. and its difficult to find someone who agree to the imp of being opinionated. Too much of flexibility does not suit me either. That's why my full stack course is Angular + .NetCore or Nest
I agree, I prefer Angular over React for that reason as well - again this was a list focussed on employability and bare bones for a new career switcher - they can specialise and develop their preferences over time once they have a handle on things 😀
More like a full stack JS developer checklist.
Yes, it's a starting point to get into full stack dev, only having to learn one language makes that entry quicker for newbie and then they can learn another language in the first couple of years 😀
I think, full-stack that you have to have more skills to improve yourself. The price paid for a full-stack is also much higher than that of a specialist. It requires a much more skill set to work. like many many many to many many deps :D
I think the danger with current full stack is getting stretched too thin, you still need to support of specialists on big projects 😀
you'll see different things when you go to job postings from here.
As someone who switch careers and became a full stack Java developer I'd like to say that this is the minimum knowledge needed to just barely be teachable. (Either that or I have a really hard job)
This is totally aimed at being the bare essentials to get started, there is much more to learn beyond this but this should be enough to get you started in a junior role 😀
Thank for your relevant list, I have a question as to whether I need to know another language on the backend. Is JS fullstack enough?
JS is enough to work on a full JS stack but ideally you would pick up another language in the first two or three years of your career 😀
I agree with most of your points but here's my 2 cents
Would also recommend looking into how to use basic cloud services like how to connect to storage like AWS S3, Digital Ocean Spaces etc. No need to be an expert or be certified, but it helps to know of them.
These are good additions. I actually almost put Angular as while it's not as popular there is great demand for Angular developers as they harder to find. I went with React from an ease of learning and that many job listings ask for it.
About libraries:
If you're from US, React is more popular.
If you're from EU, Vue is super popular.
I'd highly recommend PostgreSQL over MySQL, for a myriad of reasons, but namely because Oracle owns MySQL (and they historically haven't been the best netizen).
I think either is fine for getting started, the point it to learn SQL really 😀
As an alternative to mysql you can still use mariadb ... same engine .... open-sourced (or at least not possessed by Oracle)
Thank you for the info. how about using php for backend since i already am learning it myself for backend development?
If you are already learning it that great, the only reason I kept to JS front and backend is that for someone knew they are going to need to learn JS for the frontend so just use it on the backend as well. Eventually every full stack dev will need two languages
Thanks a lot.
I would say it's missing knowledge about cloud providers such as AWS or Google Cloud. This is something many employers will let slide though as it is fairly easy to comprehend if you know the basic concepts behind cloud computing.
Agreed, this addition would make it more comprehensive 😀