DEV Community

Hanzla Baig
Hanzla Baig

Posted on โ€ข Originally published at dev.to on

123 7 8 9 10

Full Stack Developer's Roadmap ๐Ÿ—บ

Note: Leave a comments, reactions and share with fellow developers
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!

Image of Timescale

Timescale โ€“ the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (31)

Collapse
 
adriant_ct profile image
Adrian Tregoning โ€ข

I think when a new comer looks at a list like this it's extremely intimidating and they'd be right. However I find this sort of list does more harm than good. You don't need to know half of these things. To simplify this you could take a path of learning Java, then MySQL. Then start joining the two together with JDBC. You'll start to encounter problems in complexity but then enter Hibernate. The next step would be creating a basic front end with HTML and CSS and then join that to your Java and MySQL with servlets, after that use JSP's and add on some JS too eventually.

Although this may be old fashioned, you'd be surprised by how many large companies still just use Java 8 for example. There's the world the internet makes things out to be, and then reality. I say this because I am self taught (coming from a mechanical engineering background 20 years ago) and have now changed careers.

There is nothing to truly gain by learning 4 different types of databases, do 1, learn it well. Again, no point learning Go, Rust, Ruby etc. Not all of them. Focus on one language. See what your area offers in terms of jobs. You'll save yourself not only the time, but ultimately many folks give up because it's too overwhelming - because the internet is saying learning all of this, when in reality you don't need to.

Collapse
 
dansasser profile image
Daniel T Sasser II โ€ข

Wow! I love the layout and the traction you got on this post. What a great way to boost SEO for other articles you link to. Although I wouldn't call this an article but a curated link list.

Collapse
 
devtostd profile image
Dev Studio โ€ข

Ook! Thank you

Collapse
 
sanvi_d445b493c0f35615e8c profile image
Sanvi โ€ข โ€ข Edited

I just wanted some guidance from you, as a complete beginner in coding should I start by learning web dev or start by learning python and then move to data science?

Collapse
 
devtostd profile image
Dev Studio โ€ข

Answer:

When deciding where to start in your coding journey, itโ€™s essential to consider your interests, long-term goals, and how much time you're willing to invest. Here's a comprehensive guide to help you decide between starting with web development or Python for data science:

1. Understanding Your Goals

  • Web Development: If you are interested in building websites, interactive user interfaces, or working on the front-end/back-end of web applications, web development is a great starting point.
  • Data Science: If you're fascinated by analyzing data, building machine learning models, or working with large datasets to derive insights, starting with Python and moving towards data science would be ideal.

2. Web Development Path

Technologies to Learn:

  • HTML/CSS: These are the building blocks of the web, essential for structuring and styling web pages.
  • JavaScript: Adds interactivity to web pages. Learn frameworks/libraries like React, Angular, or Vue.js for advanced front-end development.
  • Back-End Development: Learn server-side technologies like Node.js, Express.js, and databases (SQL, MongoDB).
  • Version Control: Git and GitHub for version control and collaboration.
  • Deployment: Understand how to deploy websites using platforms like Netlify, Vercel, or Heroku.

Learning Path:

  1. Start with HTML, CSS, and basic JavaScript.
  2. Build small projects (e.g., a personal portfolio site).
  3. Learn a front-end framework (React.js is highly popular).
  4. Explore back-end development and databases.
  5. Build full-stack projects to consolidate your learning.

3. Python and Data Science Path

Technologies to Learn:

  • Python Basics: Learn syntax, data structures, and basic programming concepts.
  • Data Analysis: Libraries like Pandas and NumPy are crucial for handling and analyzing data.
  • Data Visualization: Learn Matplotlib and Seaborn to visualize data.
  • Machine Learning: Explore Scikit-learn for building models.
  • Data Science Tools: Jupyter Notebooks, Anaconda for a comprehensive data science environment.
  • Big Data: If interested, dive into Hadoop, Spark, and cloud services like AWS or Google Cloud.

Learning Path:

  1. Start with Python basics through online tutorials or courses.
  2. Practice with small projects like data scraping or simple data analysis.
  3. Learn about statistics and probability to understand data science concepts better.
  4. Dive into data visualization and machine learning.
  5. Work on real-world projects and datasets available on platforms like Kaggle.

4. Key Factors to Consider

  • Interest: Choose the path that excites you more. If you enjoy creating visual and interactive elements, go for web development. If you like numbers and insights, data science could be your calling.
  • Job Market: Both fields have a high demand, but the skill sets required are different. Research job opportunities in your region or industry of interest.
  • Learning Curve: Web development provides quick visual feedback, which can be rewarding for beginners. Data science requires a good grasp of mathematics and statistics, which might take longer to master.

5. Long-Term Plan

  • Combination: Eventually, you can combine both skills. For example, knowing web development can help you build dashboards to showcase your data science projects.
  • Flexibility: Starting with one doesnโ€™t mean you canโ€™t switch later. The foundational skills in problem-solving, algorithms, and logic are transferable.

Conclusion

Start with what aligns more closely with your current interests. Web development can offer faster, more tangible results, which might be more encouraging for a beginner. However, if you're drawn to data analysis and problem-solving, starting with Python is a solid choice. Both paths are rewarding, and with dedication, you can transition between them or integrate both into a versatile skill set.

Feel free to reach out for more resources or guidance on whichever path you choose!

Collapse
 
ravi_vidyavanth profile image
Ravi Vidyavanth Shetty โ€ข

great effort
u bring almost everything under one roof.
thank u

Collapse
 
devtostd profile image
Dev Studio โ€ข

Thank you ๐Ÿ‘

Collapse
 
riccardobasile profile image
Riccardo Basile โ€ข

We really need another useless list of concepts?
Anyone can find more lists like this one on the internet with one simple google search.

We really need another useless article??
In the last year this platform become the place for new writers: a lot of copy/paste articles just to fill the space, as it was a writing bootcamp.

We really need to degradate this platform like this?
This place is becoming a pile of s**t - it's not that beautifull and informative place that was before.
At the moment the chance to find a usefull article is about 5%, the rest is wasted server space.

Collapse
 
devtostd profile image
Dev Studio โ€ข

Dev Community isnโ€™t your fatherโ€™s estate where you can bring your frustrations. Yes, I used references for the article, but it was for people who want to learn and grow, not for negative thinkers like you. When the Dev Community appreciated my article, it proved that your opinion is irrelevant. If you have such a big problem with this platform, find somewhere else to vent your frustrations. And remember one thing: This article isnโ€™t for stupid people, and your comments donโ€™t affect me at all.

Collapse
 
dansasser profile image
Daniel T Sasser II โ€ข

I would be curious if you thought the same about my articles? I spend time researching and then I spend a lot of time on outlines and drafts. So mine are definitely not copy and paste but they are though piece on current technology. I do get your point. I sometimes wonder how some of these articles make it in my Google news feed.

Collapse
 
papercoding22 profile image
Paper Coding โ€ข

Even now, we can ask ChatGPT for that. What we really need is something more unique, like different perspectives and a practical path of experienced man.

Personally, I think studying by project-based is a good approach because at the end of the day, we need to use the knowledge to solve real-world problems. Even if starting by a TODO app, we can scale it in many way.

Collapse
 
evan9523 profile image
devevan โ€ข

Awesome. Really grateful for this list

Collapse
 
devtostd profile image
Dev Studio โ€ข

Thank you ๐Ÿ‘

Collapse
 
cvazcosta profile image
Carlos Vaz da Costa โ€ข

Nice! I'll save for later since I'm starting my full stack journey this year! :D

Collapse
 
parasm1 profile image
Paras โ€ข

Great Article and Great Efforts

Collapse
 
devtostd profile image
Dev Studio โ€ข

Thanks ๐Ÿ‘

Collapse
 
lurodriguez profile image
L Rodrรญguez โ€ข

This is pure gold!

Collapse
 
brendon_mangisi_1882f56fa profile image
Brendon Mangisi โ€ข

Thank you

Collapse
 
sakrad_cmmi_111f1a88c5c47 profile image
Sakrad CMMI โ€ข

Thanks for sharing!

Collapse
 
devtostd profile image
Dev Studio โ€ข

Thanks to read! If you need more help on any topic you can ask.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

๐Ÿ‘‹ Kindness is contagious

Engage with a sea of insights in this enlightening article, highly esteemed within the encouraging DEV Community. Programmers of every skill level are invited to participate and enrich our shared knowledge.

A simple "thank you" can uplift someone's spirits. Express your appreciation in the comments section!

On DEV, sharing knowledge smooths our journey and strengthens our community bonds. Found this useful? A brief thank you to the author can mean a lot.

Okay