Roadmap Overview
Preface
This roadmap is a personal project that I am currentlyI'm working on that custom made to my interest and needs. I am sharing this roadmap of mine, in the hope that others may find some value in it, and this project of mine also serves as a way to document my journey inlearning about the world of technology.systems and programming. While I have done some self-studying and know a few things about systems, I'm nothing more than a jack of all trades with shallow knowledge. But all of the knowledge and experience I've gained over the past 3 years has led me to creating this roadmap that I plan to follow.
When I first started to self-study programming I knew nothing about what was out there, I knew that I was interested in software engineering and robotics but I hadn't the slightest idea of how to get there. Now I know exactly what I need to do but first I wanted to pursue my interests in Systems, Networking and General Programming. That's when I realized that this was the perfect time to master the fundamentals starting all the way from System Administration with Linux to covering Computer Networking then Cloud Technologies and finally diving right back into the world of Computer Science.
I am sharing this roadmap of mine as a way to showcase my learning journey starting from Systems & Networking to Computer Engineering and I hope that others who read this may find something that they can take away for themselves.
The Main Topics
The roadmaproadmap, as of now, consists of 5 main topics, with each major category containing their own sub-topic.
- Systems & Networking Fundamentals
- Intro to Programming
- Containers & Orchestration
- Intro to Computer Science
- System Programming
The intended flow of the roadmap is to go through each major category and work on every subjectsub-topic then do the associated projects for each section. All of this culminates in a final capstone project that will put your understanding of the subjectcategory to the absolute test.
roadmap.sh explanation
The philosophy of this roadmap is taking the long-game approach to studying. A big mistake we often make in learning is that we will cover a topicsubject just enough to scrape by. While you don't have to know everything about a subject to be able to do interesting things, when it comes to our foundations true understanding is essential.
So to remedy this, we will cover each major topic in just enough depth to get a strong grasp of the basics. The blue button behind every sub-topic will link to the full article on the Lab-Book. Meanwhile the actual sub-topic will cover a brief summary of the course, video or book we will be working through. It will also include relevant resources. While not pictured here, the Alternatives section will provide other courses/videos that work as a roughly equal substitute, but they may also both be taken.
The best way to truly cement one's knowledge on a topic is by doing, and so the turquoise colored checkmark ✅ next to the sub-topic will be where we begin our section project work. Lastly, at the very end, we arrive at the Capstone Project ☑️, this is a section dedicated to putting all of the knowledge we have learned to the test. ItThe Capstone Project will either be a single large project or a series of projects that puts everything we have learned together, there will be several projects included, however working on just one or two projects will be more than enough.
The Roadmap
Lastly inIn The Roadmap section below. All of the time estimates are based on studying the material for 2-3 hours per day.
Legend
- 🔄️: Alternatives | - ⏭️Optional
The Roadmap
System & Networking Fundamentals
A system can be defined as a set of parts working together, and a network as a group or system of interconnected things.
The aim of this path is to familiarize ourselves with the world of Linux & Computer networking. We will be able to both configure and administer our very own Linux Servers, write powerful scripts, and have a sys-admin’s eye and toolset. We’ll also gain a solid foundation in the world of computer networking, uncovering the Blackbox that the internet often seems to be, learning about various protocols, topologies, and architectures.
At the end of this path, we’ll be able to call ourselves a jr sysadmin and jr network-engineer.
Linux Fundamentals
- ( Online Course ) Linux Upskill Challenge
- The Linux Upskill Challenge in my eyes is the perfect introduction to Linux.
- It is a month-long course that will get you up-to speed with Linux and give you enough skills to start managing your own servers as well as give you the tools you need to set up services like WordPress or your own wiki's like this bookstack instance. It also has references to more in-depth material if the base challenge is too easy.
- Estimated Time : 21 days - 1 month
- ( O'Reilly ) Learning the UNIX OS
- A short and sweet book on the Unix OS by O'Reilly. The book may be over 20 years old but there's still a lot of value to be gained.
- This book will give you a good overview of the Unix OS and by extension Linux, as well as provide some interesting history lessons. After covering this book I became a lot more comfortable working with Linux and
it'sit has led to some great quality of life improvements. - Estimated Time : 7-10 days
- ( Online Course )Linux Journey
- We will be wrapping up our Introduction to Linux with Linux Journey. While we should be pretty comfortable with Linux by now, there are quite a few things left to cover.
- Things like Networking, Processes Monitoring, The Kernel and other important things to know. Once we finish going through
the Linux Journey,this, we will be ready to start taking our first steps towards Linux System Administration. - Estimated Time : 7-14 days
- ( O'Reilly ) Learning the bash Shell
- Now that we are familiar with Linux and have started managing our own servers and home-lab we're ready to begin taking full advantage of shell scripting. In essence shell scripting is about automating repetitive tasks: These can range from backing up files to monitoring logs & system resources, updating devices and managing accounts.
The reason we're starting shell scripting now, is that we're about to begin learning about Linux System Administration, and will scripting under our toolbelt we'll be able to write scripts for some of the administration tasks we're about to learn.- If done right, scripting can save you many hours in the long-run and you may start to create a collection of scripts that you'll end up using for years.
- Estimated Time : 15 days
- ( Book 🔄️ )UNIX and Linux System Administration Handbook
- Now that we are comfortable with the Linux environment and have shell scripting under our toolbelt we are finally ready to take on the world of Linux System Administration.
- This book will serve as a guide to understanding how Linux System Administration works. The main things we will be covering are Administration, Networking, Storage & Ops.
- Estimated Time : n/a
- ( Online Book 🔄️ ) The Debian Administrator's Handbook
- I'm a big fan of using Ubuntu & Ubuntu Server for my projects and homelab. The Debian Admins handbook works as a free alternative to the to the handbook mentioned above.
- Estimated Time : n/a
- I'm a big fan of using Ubuntu & Ubuntu Server for my projects and homelab. The Debian Admins handbook works as a free alternative to the to the handbook mentioned above.
- Linux Fundamentals Capstone Project
- WIP
- Estimated Time : n/a
Networking Fundamentals
- ( Online Video Course )Intro to Computer Networks
- Intro to Computer Networks is less hands-on than the other previous subjects. The main focus of this introduction is to get a good grasp regarding the basics of computer networking.
- We will be going through FreeCodeCamp's Computer Networking course as well as some articles that cover the subject matter.
- Estimated Time :
7 daysn/a
- ( Books & Online Courses ) Cisco CCNA
- We now begin the CCNA. For a lot of people this will be one of the more difficult things to get through at least in regards to IT.
- The current CCNA is a true overview of the networking landscape, but it's still the same at it's core. This is where we will learn about routing and switching, wireless networking, security. Which will be followed up by a small tour of what's possible with automation and programming.
- In summary, the CCNA is a true introduction to Computer Networking. The topic before us can be thought of as just a foreword.
- Estimated Time :
1-3 monthsn/a
- ( O'Reilly ) Network Warrior
- Now that we've gone through the CCNA, we're ready to round out our foundational networking knowledge with O'Reilly's Network Warrior.
- Network Warrior focuses on covering the other half that the CCNA overlooks. And that's the focus on the fundamentals with practical applications. Instead of going through hypothetical scenarios, we'll be taking a look at real networks you would find out in the field.
- Estimated Time :
1-2 monthsn/a
- ( No Starch Press ) Practical Packet Analysis
- At this point we should have a strong understanding of how networking works.
NowWe'vewe'venow started to unravel the veil that is computer networking. - But there's one major thing we're missing, we know how troubleshoot, configure & design networks. But do we really understand what sort of data is flowing through our network?
- When we connect to a site what sort of traffic is generated, who's generating it? What requests are being made & who's receiving them? It's finally time to learn what's really going on in our networks.
- Estimated Time :
21 days - 1 monthn/a
- At this point we should have a strong understanding of how networking works.
- ( Helsinki MOOC ) Core 5G and Beyond
- Initially I was going to consider this portion optional but when you find out that over 55% of internet traffic comes through mobile devices it's not something that can just be ignored.
- The course covers gives a general overview on how mobile networks work everything from LTE to 5G and beyond and will be mostly theoretical in nature but there will be some hands on labs.
- Estimated Time :
10-21 daysn/a
- Networking Fundamentals Capstone
- WIP
- Estimated Time : n/a
Intro to Programming & Automation
- Definition of Programming - "Programming is the process of writing instructions for a computer to execute"
- The Python Philosophy - "Simple is better than complex"
This is by no means an introduction to computer science, that will be something to cover later. Instead this path is all about easing us into the deep and complex world of computer programming. We'll be learning about the absolute basics of programming and some automation as well. Then we'll cover Databases learning the basics of CRUD and Data-In/Data-Out all and finally rounding things out with version control.
By the end of this path we'll have taken our first steps in programming. Though, there'There's still a long way to go before we can call ourselves engineersengineers, but bit-by-bit we'rewe are getting there.
Intro To Programming
- ( Helsinki MOOC ) Python Programming
- "Simple is better than complex" - Python is an all-purpose programming language that focuses on being both simple and readable. It's a powerful tool used everywhere from Web Development to Automation and Administration, to Data-Science & Scientific Computing the list goes on.
- This simplicity and power is the reason why we're taking our first steps into programming with Python.
- The Helsinki MOOC will get us acquainted will the necessary basics of Python, serving as a foundation for the future.
- Estimated Time : n/a
- ( No Starch Press ⏭️) Automate the Boring Stuff With Python
- Going through this book is entirely optional, but if you often find yourself doing repetitive tasks: whether it be at your job, doing personal projects or anything else really I would say it's a book that's
definitelyworth your time. - Estimated Time: n/a
- Going through this book is entirely optional, but if you often find yourself doing repetitive tasks: whether it be at your job, doing personal projects or anything else really I would say it's a book that's
- Intro to MySQL
- Learning how to effectively work with databases is important, much of software engineering involves CRUD and data-in/data-out operations. That's not even considering the importance of effectively collecting and reading data.
- In this book and course we'll learn how to structure data within a database and come away with enough knowledge to understand and work with data-oriented tools.
- Estimated Time: n/a
- Git
- Git is a version control system. Version control tracks any changes made to a code base, so a version control system tracks changes to a file or set of files over time.
- Since Version Control Systems keep track of every change made to a code base, if any mistake is made in a new version,
the developers arewe're able to rollback to a previous working version.AllowingThis allows us to experiment with new changes and configuration without fear of disrupting a system entirely. All this makesMaking git a powerful tool for managing codebases, scripts, configuration files and more.- Estimated Time: n/a
- Intro to Programming Capstone Project
- WIP
- WIP
Containers & Orchestration
Docker
- Hypervisors
- Containers
- DevOps with Docker
- Docker Capstone Project
Kubernetes
- Intro to Orchestration
- Kubernetes
- CKA ( Cert )
- Kubernetes Capstone Project
Intro to Computer Science
Programming
- Harvard's CS50
- Programming Capstone Project