DEV Community

Cover image for Full Stack Developer's Roadmap ๐Ÿ—บ
ender minyard
ender minyard

Posted on • Edited on

Full Stack Developer's Roadmap ๐Ÿ—บ

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)

Collapse
 
anraiki profile image
Anri

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.

Collapse
 
iamrohitsawai profile image
Rohit Kiran Sawai • Edited

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?

Collapse
 
sumit profile image
Sumit Singh

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.

Thread Thread
 
bhadresharya profile image
Bhadresh Arya

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.

Thread Thread
 
trangchongcheng profile image
cucheng

I agree

Collapse
 
aashiqincode profile image
Aashiq Ahmed M

But not the core na

Collapse
 
zachgoll profile image
Zach Gollwitzer

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).

Collapse
 
ankitmpatel profile image
Ankit Patel

Agreed!! That's why the roadmap requires achieving a long journey. I guess the author tries to convey!!

Collapse
 
ajax27 profile image
Shaun Collins

Totally agree!

Collapse
 
hyperx837 profile image
Hyper

just following these things and "diving deep" into this topics will complete that long journey

Collapse
 
dualyticalchemy profile image
โšซ๏ธ nothingness negates itself • Edited

the web fundamentally is a distributed hypermedia application

Collapse
 
dualyticalchemy profile image
โšซ๏ธ nothingness negates itself • Edited

oh you mention docker; use lazydocker. also: percol, ranger, ack, ... all available through homebrew. pryjs is helpful too

Collapse
 
ender_minyard profile image
ender minyard

this is so good

Collapse
 
siy profile image
Sergiy Yevtushenko

Suggestion to use microservices is not very good one. This is an expensive step and in most cases organizations are not prepared for them.

Collapse
 
dualyticalchemy profile image
โšซ๏ธ nothingness negates itself • Edited

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

Collapse
 
alamba78 profile image
Amit Lamba

Python 3 would be a fundamental language to learn before even JS, Rust, and Go.

Collapse
 
cjcon90 profile image
Ciaran Concannon

I've only just started learning python for the purposes of backend skills in the near future, glad to see this comment here! ๐Ÿ˜‹

Collapse
 
jep profile image
Jim

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 :


Collapse
 
ender_minyard profile image
ender minyard

done!

Collapse
 
pawelowczarekfalcon profile image
Paweล‚ Owczarek

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 ;-).

Collapse
 
lbeul profile image
Louis • Edited

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.

Collapse
 
allestri profile image
Allestri

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.

Collapse
 
dabjazz profile image
Yash_Jaiswal

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)

Collapse
 
melvinkim profile image
Melvin Kimathi

Hey, could you share the Java roadmap

Collapse
 
alamba78 profile image
Amit Lamba • Edited

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.

 
savagepixie profile image
SavagePixie • Edited

JS first, in my opinion, will lead people new to programming down a whole lot of hurt.

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.

Collapse
 
sandorturanszky profile image
Sandor | tutorialhell.dev

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.

Collapse
 
shaijut profile image
Shaiju T • Edited

Nice , ๐Ÿ˜„, Add Java and C# in languages , it is used by big companies and enterprise, both languages have more Job opportunities. Also add Design Patterns in Development Concepts.

 
alamba78 profile image
Amit Lamba

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