📚 Roadmap to becoming a distributed systems Ph.D 🎓
This resource is my personal roadmap in order to become a Distributed Systems Ph.D.
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.
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!
- Create roadmaps to provide a linear path for those that want to be a developer, engineer, master, and/or phd in distributed systems.
- Create original content so students will be able to learn everything in one place.
- Give a valid certificate for those that finished the curriculums.
- Help to educate professionals to become really knowledgeable about distributed systems.
- Help professionals to acquire a solid understanding of the process of developing high-quality systems.
- Help publicize Erlang and Elixir for distributed and also for general-purpose systems.
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.
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.
- Main goal: being able to develop distributed CRUD applications.
- Duration: 2~3 years.
- Link to developer 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 ➭
- 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 ➭
- 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.
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 an undergraduate student of Computer Engineering, and 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.