Skip to content

manonja/Backend-Engineering-Fundamentals

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fundamentals of Backend Engineering: Hands-On Curriculum

Welcome to Backend Climb! This is a free, open-source curriculum for engineers interested in levelling up their fundamental understanding of how computers work. The curriculum is also an opportunity to work on hand-on projects using Rust and Elixir. The goal is to encourage engineers not to just know how something works, but why it works that way. By dissecting fundamental concepts, the aim is to ensure that the learnings aren’t just surface-level but become a part of our foundational thinking.

The material is designed to be approachable for individuals with diverse programming experiences. However, if you're completely new to programming, starting with an introductory book tailored for beginners would be more beneficial.

Read the Manifesto here

Table of Contents

  1. Approach
  2. Why this course where AI is everywhere? Isn't it obsolete?
  3. Course Roadmap
  4. Why Take This Course?
  5. Who Is This For?
  6. How to Use This Repository
  7. Showcase Your Work
  8. Module 1: Core Systems & Infrastructure Fundamentals
  9. Module 2: Advanced Programming Mastery
  10. Module 3: Architecture & Full-Stack Integration
  11. Resources
  12. How to Contribute
  13. Join Us on Discord

Approach

This course has been designed with the believe that the best engineers are those who know how to think clearly and thoroughfully about complex systems. They’re not satisfied with just knowing how to use a tool, they want to know how the tool works. By working on projects that engage you to think critically about the basics, you develop a kind of intuition that can’t be taught in a classroom or generated by AI. And that is the kind of mindset that will not only help build better software but will also set engineers apart in an ever-changing field.

Inspired by the DiSSS learning Methodhology, the goal is simple: take concepts that are usually hidden in dense textbooks or learned after years of trial and error, and break them down into practical, projects based modules. We’ve drawn inspiration from legends like Andrew Tannenbaum, Donald Knuth, and Linus Torvalds—people who’ve shaped how software works.

Every module includes hand-on projects and reflection prompts to help you step back, see the bigger picture, and understand how to adapt what you’ve learned to new problems. This course won't turn you into a Rust or Elixir specialist (although it will surely help you build a solid grasp of it!) - It’s more about making sure you can work with different language, any system, and build something great!

Why this course where AI is everywhere? Isn't obsololete?

It’s tempting to think, “Why bother learning all this? I could just use AI.” And honestly, if your goal is to write boilerplate code, patch frameworks together, or lean on shortcuts, AI might be the better fit, indeed! But if you want to own, enjoy your craft, and evolve make progress in your work, then you are at the right place.

AI is incredible for speeding up repetitive tasks, generating templates, or solving problems that are already well-defined. But what happens when you’re asked to debug a flaky system at scale, optimize an architecture under high load, or build something entirely new? AI won’t tell you how a thread scheduler works under the hood, why a distributed system fails in a specific way, or how to design a system that’s resilient to failure. That’s where engineers with strong fundamentals and the ability to think critically come in.

AI is raising the bar for what it means to be a competent engineer. Mid-level developers (never mind Juniors developers) who coast on surface-level knowledge will find themselves outpaced. But those who invest the time to master the core principles of backend development—who know how to deconstruct systems and make them better—will thrive in an AI-augmented world. If that’s the kind of engineer you want to be, this course is for you!

Course Roadmap

Modules Topics Covered Key Projects
1 Core Systems & Infrastructure Mini Network Scanner, OS Scheduler Emulator
2 Advanced Programming (Rust & Elixir) HTTP Microservice in Rust, Real-Time Chat App
3 Architecture & Full-Stack Integration Microservices Ecosystem, CI/CD Deployment

Click on the module to get started:


Why Join The Curriculum?

  • Build industry-relevant backend systems.
  • Get hands-on with Rust, Elixir, Docker, and Kubernetes.
  • Learn core computer science concepts that form the foundation of scalable backend systems.
  • Challenge yourself and have fun!

Who Is This For?

  • Aspiring Backend Engineers: ready to level up.

  • Engineers Curious About Rust and Elixir: and work on hands-on experience in both.

  • Mid-career programmers looking to accelerate their careers and think like senior engineers.

  • Developers Wanting to Future-Proof Their Skills: and meaningfully differentiate themselves.

  • Engineering Managers Returning to Code: looking to sharpen your technical skills, deepen your understanding of backend fundamentals, and prepare you to lead technical teams with confidence.

  • Big Tech workers excited to build things from scratch again.


How to Use This Repository

  1. Start with Module 1: Begin with foundational concepts in systems and infrastructure.
  2. Complete Hands-On Projects: Each module includes practical projects to solidify your understanding.
  3. Reflect: Use the provided reflection prompts to deepen your learning.
  4. Engage with the Community: Join discussions, share progress, and ask questions.

Showcase Your Work

Submit your completed projects via Pull Requests to be featured in the Showcase Section. Build your portfolio while inspiring others!


Module 1: Core Systems & Infrastructure Fundamentals

Overview

In the first month, you’ll build a solid foundation in operating systems and networking concepts, as well as key data structures and concurrency principles. These skills will prepare you for advanced backend challenges.

Modules

  • Module 1.1: Operating Systems & Networking Basics
    File Location: ./Month-1/Module-1.1/README.md
    Key Concepts:

    • Process management, memory management, and virtual memory.
    • TCP/IP, HTTP/HTTPS protocols, DNS, and sockets. Hands-On Projects:
    • Mini Network Scanner
    • Mini OS Scheduler Emulator
  • Module 1.2: Data Structures, Algorithms & Concurrency Basics
    File Location: ./Month-1/Module-1.2/README.md
    Key Concepts:

    • Hash tables, trees, graphs, sorting algorithms.
    • Threads vs. processes, mutexes, semaphores, and avoiding race conditions.
      Hands-On Projects:
    • Concurrent Data Processor

Module 2: Advanced Programming Mastery

Overview

The second month focuses on advanced programming techniques using Rust and Elixir. Master concurrency, fault tolerance, and memory safety.

Modules

  • Module 2.1: Deep Dive into Rust for Backend
    File Location: ./Month-2/Module-2.1/README.md
    Key Concepts:

    • Ownership, borrowing, and lifetimes.
    • Network programming with Tokio and error handling.
      Hands-On Projects:
    • HTTP Microservice in Rust
  • Module 2.2: Mastering Elixir for Concurrency and Fault Tolerance
    File Location: ./Month-2/Module-2.2/README.md
    Key Concepts:

    • Functional programming paradigms and lightweight processes.
    • Building scalable systems with supervision trees and Phoenix.
      Hands-On Projects:
    • Real-Time Chat Application

Module 3: Architecture & Full-Stack Integration

Overview

In the final month, you’ll learn architectural design patterns, microservices, and full-stack integration, bringing all the previous lessons together.

Modules

  • Module 3.1: Architectural Patterns & Design Principles
    File Location: ./Month-3/Module-3.1/README.md
    Key Concepts:

    • Microservices design, REST/gRPC, and Domain-Driven Design (DDD).
    • Scalability patterns, load balancing, and caching.
      Hands-On Projects:
    • Microservices Ecosystem
  • Module 3.2: End-to-End System Integration and Deployment
    File Location: ./Month-3/Module-3.2/README.md
    Key Concepts:

    • CI/CD pipelines, Docker, Kubernetes, and DevOps fundamentals.
    • Monitoring, logging, and distributed tracing.
      Hands-On Projects:
    • Deployment with Kubernetes

How to Contribute

Right now, I’m testing and refining the curriculum as I go, learning from the process myself. I’m a big open source fan, so contributions and feedbacks are welcomed. People can also join the Discord Channel!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published