It's easy to focus on the front end of web development, but what about the back end? Learning about the back end improves your front end skills.
Here are some resources for full stack development that you can save for later.
Table Of Contents
๐ป How The Internet Works
๐ Advanced Front End
๐ฅ Operating Systems
๐ Languages
๐ฒ Version Control
๐ Database Concepts
๐ Relational Databases
๐ NoSQL Databases
๐จ APIs
โป๏ธ Caching
๐ Security
๐งช CI/CD
๐ Development Concepts
๐ฏ Software Architecture
๐ง Containers
๐ฌ Servers
โ๏ธ Scalablity
How The Internet Works ๐ป
โจ What happens when you go to google.com?
๐ Introduction to Networks
๐ซ Browser Networking
๐ IP Addressing
โญ๏ธ HTTP/2
Advanced Front End ๐
โจ HTML & CSS
๐ซ JavaScript
Operating Systems ๐ฅ
โจ Using the command line
๐ What is an operating system?
๐ซ Memory
๐ Unix Programming
โญ๏ธ Bash-Scripting Guide
Languages ๐
โจ Know PHP
๐ Learn Ruby
๐ซ Learn Rust
๐ Learn Go
โญ๏ธ Know Server-Side JavaScript
Version Control ๐ฒ
โจ A Visual Git Reference
๐ Visualizing Git Concepts with D3
๐ซ Github Cheat Sheet
๐ SVN
Database Concepts ๐
๐ Object-Relational Mapping
๐ ACID
๐ซ N+1 Problem
โ๏ธ Sharding
โจ CAP Theorem
๐ฅ Normalization
๐ Indexes
Relational Databases ๐
โจ Theory of Relational Databases
๐ Learn MySQL
๐ซ Learn PostgreSQL
๐ Learn MariaDB
๐ Learn MS SQL
NoSQL Databases ๐
โจ Learning MongoDB
๐ Learn CouchDB
๐ซ NoSQL Databases
๐ Graph Databases
APIs ๐จ
โญ๏ธ Working with APIs
๐ฅ REST
๐ก GraphQL
โ๏ธ JSON-RPC
๐ HATEOAS
Caching โป๏ธ
โจ HTTP caching
โ๏ธ Redis
โญ๏ธ Memcached
๐ Service workers
Security ๐
โจ HTTPS + TLS
๐ CORS
๐ซ MD5
๐ SHA-2
๐ก SCrypt
๐ฅ BCrypt
โ๏ธ OWASP
CI/CD ๐งช
โจ Testing your code
๐ Jenkins
๐ซ TravisCI
Development Concepts ๐
โ๏ธ SOLID
โญ๏ธ KISS
๐ฅ YAGNI
โจ DRY
๐ Domain-Driven Design
๐ Test Driven Development
Software Architecture ๐ฏ
๐ซ Microservices and Service Oriented Architecture
๐ CQRS
โญ๏ธ Serverless
Containers ๐ง
โจ Docker Fundamentals
๐ Docker Cookbook
๐ซ Kubernetes Cookbook
Servers ๐ฌ
โ๏ธ Nginx Handbook
๐ก Apache
๐ฅ Caddy
Scalability โ๏ธ
๐ซ Distributed Systems
โ๏ธ System Design Primer
โจ Real-World Maintainable Software
๐ The 12 Factor App
๐ Architecting Frontend Projects To Scale
This was inspired by a different post. In the other post, I wanted the author to provide resources for the topics they mentioned, so I made my own post. โจ
If you think I missed any resources in this post, comment them below!
Top comments (97)
If you are new, and you are coming in here to see this.
I hope this isn't overwhelming to you.
Don't be discourage.
A Full-Stack Developer is more of a very long journey rather than this experience listed out here.
I can't say I'm newbie. I have fundamental knowledge of programming. When I saw above list I came to know I know very less. Till I complete this list, complete framework will change then in what way should I be full stack developer?
I think it's more about learning the fundamentals of each phase. I think that's what you have also done when started programming. Learning basic fundamentals in any language and applying it in other languages.
That's right. Frameworks will come and go. but the concept stays the same. If the core concept and fundamentals are learnt well then no language or no framework will be hard to understand.
I agree
But not the core na
Totally agree. The additional point that I would add is that this list appears as separate concepts, but if you're building a production-ready application, you'll learn 80% of this list within the scope of a single project. I don't think they are meant to be learned in isolation (although sometimes this is necessary).
Agreed!! That's why the roadmap requires achieving a long journey. I guess the author tries to convey!!
Totally agree!
just following these things and "diving deep" into this topics will complete that long journey
the web fundamentally is a distributed hypermedia application
oh you mention docker; use lazydocker. also: percol, ranger, ack, ... all available through homebrew. pryjs is helpful too
this is so good
Suggestion to use microservices is not very good one. This is an expensive step and in most cases organizations are not prepared for them.
i didn't suggest to use microservices. i saw that someone else mentioned it, and i supplied links to tools and ideas that makes microservices easier to achieve. i listed tools relevant to microservices; i did not suggest that one choose microservices over some other SOA or style irrespective to their problem or economic situation
if anything, a more intuitive reading of my post would be: "IF you use microservices, use scale cube and microservice design canvas", not "HEY USE MICROSERVICE NOW"
notice, all I did was mention the word "microservice" and two things. just because someone puts it on the road map doesn't mean it's a suggested path, but that it is a suggestion of an opportunity to take a path.
this discussion is about what we can learn as developers in order to be competitive and knowledgeable given the problem set, regardless of the budget to achieve it. we're not here to figure out one organization's problem as individual developers. microservices is one of many things we're expected to understand and learn. we're not asking "what is the road map if you have budget X for organization Y", we're just asking what the road map is. you're bringing it a lot of other background or contextual information to a discussion that doesn't depend on it
Python 3 would be a fundamental language to learn before even JS, Rust, and Go.
I've only just started learning python for the purposes of backend skills in the near future, glad to see this comment here! ๐
Excellent list. For the benefit of other folks who may be working in a company that uses different technologies for different groups, I recommend adding some information about Subversion (SVN) under Version Control. I was so used to git, but hadn't ever used SVN and it took some time to get out of the Git mindset.
There are two posts on DEV that may be of use :
Starting Out In Development - Subversion
John Van Wagenen ใป Oct 30 '17 ใป 8 min read
Quick SVN guide for Git users; SVN: The Git Way
Dilip Raj Baral ใป Aug 19 '18 ใป 3 min read
done!
Nice article, thanks :) ... but there is nothing about Frameworks. They are very important. Full-Stack Dev should know Spring Boot (JAVA) and Symfony (PHP) for creating REST APIs and Angular or React for Front End development. There is many topics covered which are less important than frameworks, that needed in work ;-).
I totally get your point, Paweล. From the Employability Aspect, it makes a lot of sense to focus on the latest frameworks and libraries. However - as a learning roadmap - the goal of this article may be to focus on teaching you the underlying concepts and principles modern web apps rely on. I think if you got this essential knowledge and understand what goes on "under the hood", it'll be easy for you to pick up new languages & frameworks.
Not only Symfony but Slim is also great for creating simple API, as it names suggests, Slim is lightweight.
Design patterns such as MVC or ADR which the creator of Slim embraces ( I personally don't like it tho ) could be a plus.
I've got the java developer roadmap
Core java(basic concepts, oops, collection framework, stream api)->advance java (servlets,JSP,JDBC)->build tool(maven/gradle)->framework (Spring/hibernate/play/grails etc)
Hey, could you share the Java roadmap
The article is about fullstack roadmap. A person new to programming would only get tripped up with JS's quirks, if they truly want to learn JS and not a framework or library. Python will be better to learn OO, and with that foundation someone can tackle the idiosyncrasies (prototypal inheritance) of JS. I would never wish for my enemy to come into programming with JS as their first language. Better to get an early win with Python or even Java. It's not a race.
On the other hand, people who start with JavaScript won't try to write JavaScript as if it were another programming language and get frustrated because it doesn't work like their favourite language does. Neither will they learn only one programming paradigm like OOP because it's the only one their language supports and then try to impose it to every other language they learn.
Also, JavaScript is a very nice language to start with because you can very quickly see fancy things happening (like a webpage reacting to user clicks and all that), as opposed to just printing stuff on the console.
You need to now what's availble, but focus on Front-end or Backend. Unless you use JavaScript, of course. In this case you can be more or less proficient in the client and server tech.
The best is to learn concepts and patterns. The rest are tools that come and go. If you know a programming language, you will figure our any framework or lib written with it. If you know what databases are, what are the core principles, how they work and what they are for (SQL, NoSQL, Graph), you will figure out MySQL, PostgresQL, Mongo, etc.
With this knowledge you will be always uptodate.
Nice , ๐, Add
Java
andC#
in languages , it is used by big companies and enterprise, both languages have more Job opportunities. Also addDesign Patterns
in Development Concepts.You seem to be looking for an argument. I never said don't learn JS. It's the order of learning I'm talking about. JS first, in my opinion, will lead people new to programming down a whole lot of hurt. I think you should re-read what I said without your bias. JS is fantastic and crucial, in time, for a new programmer.
Some comments may only be visible to logged-in visitors. Sign in to view all comments. Some comments have been hidden by the post's author - find out more