blobming / distributed-systems-journey

πŸ“š Roadmap to becoming a distributed systems specialist πŸŽ“

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Distributed Systems Journey

πŸ“š Roadmap to becoming a distributed systems specialist πŸŽ“

What is this roadmap?

This resource is my personal roadmap in order to become a Distributed Systems specialist.

This project aims to have a pragmatic and realistic approach. We will create a solid foundation, starting with practical knowledge, and build upon it until we achieve a Ph.D. level of expertise in Distributed Systems.

Motivation

It is difficult to find a linear, simple, and curated list of resources to learn a new subject, and it is even worse when what you want to learn is a more niche and specialized topic.

For that reason, and after a good experience creating the OSSU organization and OSSU-CS curriculum, I'm starting this new challenging project!

Project Goals

Main goals

  1. Create roadmaps to provide a linear path for those that want to be a developer, engineer, master, and/or phd in distributed systems.
  2. Create original content so students will be able to learn everything in one place.
  3. Give a valid certificate for those that finished the curriculums.

Other goals

  1. Help to educate professionals to become really knowledgeable about distributed systems.
  2. Help professionals to acquire a solid understanding of the process of developing high-quality systems.
  3. Help publicize Erlang and Elixir for distributed and also for general-purpose systems.

Learning methodology

I highly encourage you to spend some time planning how you will be able to solidify the content you study.

We have a bunch of resources about this topic, so take some time to research and think about it.

Recently, I develop a personal methodology that I'll share with you so you can use it as an inspiration to create your own.

C3T2B1

The C3T2B1 learning methodology consists of:

  • Copy/read/watch the content 3 times.
  • Transform the content 2 times.
  • Build some project 1 time.

By copy, I mean you should read/watch a section of the resource, and type everything that is presented on it. At this moment, you should not fight with the content, just copy it exactly in the same way it is presented to you.

By transform, I mean you should make a slight variation of the final project that was developed in the resource.

By build, I mean you should create a new project based on the knowledge you acquired.

It would also be interesting to create at least a simple article for each section of the resource you are consuming, to better summarize what you have learned. I recommend DEV to be your blog platform.

I will also do one challenge from HackerRank in all programming languages I know after finish a section of a resource I'm studying. You can see more about this here.

Execution methodology

Planning is very important, but the execution is even more! To achieve a big goal, we need a very clear and doable strategy.

With this in mind, I created a personal challenge "1000 days of Distributed Systems Journey". You can see more about it here.

Obs: 1000 days will not be enough to finish the entire journey but is the first milestone and it will be interesting to look back and see what has changed.

Distributed Systems Developer Roadmap

Distributed Systems Engineer Roadmap

  • Main goal: being able to develop and architect complex high-scalable, distributed and fault-tolerant systems.
  • Duration: 4~5 years.
  • Link to engineer roadmap ➭

Distributed Systems Master Roadmap

  • Main goal: gain a deep understanding of distributed systems theory and become a master in one specific topic of distributed systems.
  • Duration: 2~3 years.
  • Link to master roadmap ➭

Distributed Systems PhD Roadmap

  • Main goal: gain a even more deep understanding of distributed systems theory and become a Doctor of Philosophy (Ph.D.) in one specific topic of distributed systems.
  • Duration: 3~5 years.
  • Link to phd roadmap ➭

Total duration: 10~15 years.

About the author

Maybe you will find it interesting/relevant to know more about the person behind the project.

My main background is not in Elixir/Erlang nor backend development.

Currently, I am a JavaScript Developer, building React SPAs (and creating some tools to improve the developer experience while using it).

I'm also finishing my specialization in Software Engineering.

Some years ago I created OSSU and OSSU-CS (as I said before) to offer free education for everyone.

Recently, I became a member of the Erlang Ecosystem Foundation - Education, Training, & Adoption Working Group, and my biggest motivation to join this working group was the Distributed Systems Journey project. Since I knew I wanted to start this, I thought it would be great to receive and give some help in such endeavor of spreading the information about the Erlang and what its ecosystem has to offer to us.

About

πŸ“š Roadmap to becoming a distributed systems specialist πŸŽ“