Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save elduderino238/9b9c6f81735ea3b7277dbfb262a0cc44 to your computer and use it in GitHub Desktop.
Save elduderino238/9b9c6f81735ea3b7277dbfb262a0cc44 to your computer and use it in GitHub Desktop.
Modern Software Engineering Resources

Modern Software Engineering

  • Notes below (down).
  • A. Development Environment (go).
  • B. Physics, Mathematics, Computer Architecture, Data Structures & Algorithms, Design Patterns, and Competitive Programming (go).
  • C. Networking, Back-end Development, Security, Operations, and Automation (go).
  • D. Front-end, Mobile, Game, AI, and Web Development (go).
  • E. Avoid Atrophy, Constant Job Seeking, Resume, and Interview (go).
  • Non-free Resources (Books & Udemy courses, wait for sales) (go).

A. Development Environment.

  1. Ubuntu LTS; Git, GitHub CLI, LazyGit; ZSH, Oh-my-ZSH; LinuxBrew.
  2. GCC, Java, Go, Rust, NodeJS, Python, DotNet, OCaml.
  3. Docker, Docker Compose, Kubectl, Minikube, Terraform.
  4. Neovim, Lazy, Mason, Codeium, WakaTime; (VSCode, IntelliJ).
  5. Kreya, DbGate; (Flutter, Android Studio, Android Toolchain SDK).
  6. Chrome, Ublock Origin, Bard/Harpa AI; LibreOffice, OBS, Signal/Telegram;
  7. (A non-14-eyes trusted VPN, or free WARP for bypassing region lock, Tor network, proper OPSEC, and reconnaissance).
  8. Developer Tools secrets that shouldn’t be secrets (up).
  9. GNU Parallel videos (up).
  10. Curate and Optimize your own Dotifles, example, so that you can bring your environment everywhere with you (up).

B. Physics, Mathematics, Computer Architecture, Data Structures & Algorithms, Design Patterns, and Competitive Programming.

  1. English Practice (up).
  2. The birth, life and death of the universe – Public lecture by Dr. Don Lincoln (up).
  3. The Mosaic Problem - How and Why to do Math for Fun (up).
  4. The Mathematician’s Weapon | An Introduction to Category Theory, Abstraction and Algebra (up).
  5. Bayes theorem, the geometry of changing beliefs (up).
  6. Towers of Hanoi: A Complete Recursive Visualization (up).
  7. 5 Simple Steps for Solving Dynamic Programming Problems (up).
  8. Using Fractals to Deliver Babies (up).
  9. The Fast Fourier Transform (FFT) (up).
  10. Watching Neural Networks Learn (up).
  11. What You Need To Learn 2023 (as a software engineer) (up).
  12. Software Engineering is Overwhelming (up).
  13. On solving hard problems (up).
  14. Simple Made Easy (up).
  15. Design in Practice (up).
  16. How to -10x Engineer Correctly (up).
  17. Pre-Algebra/Introductory Algebra (up).
  18. Algebra I/Intermediate Algebra (up).
  19. Algebra II/College Algebra (up).
  20. Essence of linear algebra (up).
  21. Linear Algebra (Entire Course) (up).
  22. Abstract Algebra - Entire Course (up).
  23. Trig Review for Calculus in 10 Minutes or Less (up).
  24. Calculus I (Entire Course) (up).
  25. Calculus II (Entire Course) (up).
  26. Discrete Math I (Entire Course) (up).
  27. Discrete Math II/Combinatorics (entire course) (up).
  28. Applied Statistics (Entire Course) (up).
  29. Using Excel in Statistics (up).
  30. Hardware Basics (up).
  31. Exploring How Computers Work (up).
  32. Operating System Basics (up).
  33. CPU Scheduling Basics (up).
  34. Concurrency vs Parallelism (up).
  35. Every Programming Language in 15 Minutes (up).
  36. A Simple Programming Language (up).
  37. Programming Languages (up).
  38. Code Practices (up).
  39. C Programming (up).
  40. Arenas, strings and Scuffed Templates in C (up).
  41. Functional game logic with pauseless garbage collection (up).
  42. (Building A Maze Solver Robot) (up).
  43. Git for Professionals Tutorial - Tools & Concepts for Mastering Version Control with Git (up).
  44. 15 Lazygit Features In Under 15 Minutes (up).
  45. How to be a git expert (up).
  46. A zen manifesto for effective code reviews (up).
  47. Object-Oriented Programming (up).
  48. (The UNIX-HATERS Handbook) (up).
  49. Learn Java (up).
  50. Java 17 with Object Oriented Programming, Collections, and Concurrency (up).
  51. Functional programming - A general introduction (up).
  52. Java Functional Programming | Full Course (up).
  53. Programming with OCaml (up).
  54. Relational Databases (up).
  55. SQL (up).
  56. MySQL for Developers (up).
  57. Software Design Patterns and Principles (quick overview) (up).
  58. SOLID Principles (up).
  59. The C4 model for visualising software architecture (up).
  60. Design Patterns Video Tutorial (up).
  61. Design Patterns (up).
  62. RESTful web API design (up).
  63. Object-Oriented Programming is Bad (up).
  64. Object-Oriented Programming is Embarrassing: 4 Short Examples (up).
  65. Object-Oriented Programming is Garbage: 3800 SLOC example (up).
  66. Object-Oriented Programming is Good* (up).
  67. Abstraction Can Make Your Code Worse (up).
  68. Dependency Injection, The Best Pattern (up).
  69. The Flaws of Inheritance (up).
  70. “Clean” Code, Horrible Performance (up).
  71. A tour of the C# language (up).
  72. C# - Notes for Professionals (up).
  73. Advanced C# Programming Course (up).
  74. Learn X=Lua in Y minutes (up).
  75. JavaScript (up).
  76. TypeScript for JavaScript Programmers (up).
  77. Test-Driven Development // Fun TDD Introduction with JavaScript (up).
  78. How to build an event emitter in JavaScript (up).
  79. Inner workings of Map, Reduce & Filter in JavaScript (up).
  80. PubSub Design Pattern in JS (up).
  81. Learn Go with Tests (up).
  82. Go Class (up).
  83. (Go Struct Data Faker) (up).
  84. The Last Algorithms Course You’ll Need (up).
  85. Point-In-Polygon Algorithm (up).
  86. Bo Qian’s C++ Tutorials (up).
  87. Serialising/Deserialising Structured Memory To Disk, AKA Savin’ Stuff (up).
  88. Learn Rust Programming - Complete Course (up).
  89. Experiment: Improving the Rust Book (up).
  90. Rust By Practice (up).
  91. Crust of Rust (up).
  92. Johnson Trotter Algorithm - Generate Permutations (up).
  93. Graph Theory Playlist (up).
  94. Dynamic Programming (up).
  95. Stanford Algorithms 1 (up).
  96. Stanford Algorithms 2 (up).
  97. Principles of Algorithmic Problem Solving (up).
  98. Competitive Programmer’s Handbook (up).
  99. Algorithms for Competitive Programming (up). 100.(C++ Cheat Sheet for ACM ICPC) (up). 100.Advent of Code (up). 101.CSES Problem Set (up). 102.Blind 75 Must Do Leetcode (up). 103.CodeForces Sorted ProblemSet (up).

C. Networking, Back-end Development, Security, Operations, and Automation.

  1. How to Become a Good Backend Engineer (Fundamentals) (up).
  2. Each layer of the OSI model and TCP/IP explained (up).
  3. Computer Networking Introduction: Ethernet and IP (Heavily Illustrated) (up).
  4. The QUIC Protocol, HTTP3, and How HTTP Has Evolved (up).
  5. Cryptography (up).
  6. A complete overview of SSL/TLS and its cryptographic system (up).
  7. Create & sign SSL/TLS certificates with openssl (up).
  8. Quadratic Sieve - Factoring REALLY fast (up).
  9. Understanding AES Encryption Mechanics: BMPS (up).
  10. How Shor’s Algorithm running on a Quantum Computer Factors 314191 (up).
  11. HTTP caching (up).
  12. Zero-knowledge proof (up).
  13. The PLONK zero-knowledge proof system (up).
  14. Best practices for writing Dockerfiles (up).
  15. Docker Networking Crash Course (up).
  16. The smallest Docker image to serve static websites (up).
  17. CommonMistakes (up).
  18. Airbnb JavaScript Style Guide (up).
  19. Uber Go Style Guide (up).
  20. Go by Example (up).
  21. Spring Boot Complete Tutorial - Master Class (up).
  22. Simple Java Spring Boot RESTful API with Validator and Unit Testing (up).
  23. Rest API with JWT Access & Refresh Tokens | Spring Boot, MongoDB (up).
  24. Go REST API with NO DEPENDENCIES!?! - Go / Golang REST API Tutorial (up).
  25. Google I/O 2012 - Go Concurrency Patterns (up).
  26. Google I/O 2013 - Advanced Go Concurrency Patterns (up).
  27. 3 SIMPLE patterns to organize your goroutines! - Go / Golang Concurrency Patterns (up).
  28. Master Go Programming With These Concurrency Patterns (up).
  29. Controlling Concurrency: Advanced Go Programming (up).
  30. Go Semaphore Pattern Tutorial (up).
  31. Be Careful with Table Driven Tests and t.Parallel() (up).
  32. Go Concurrency: Fan-out, Fan-in (up).
  33. Go Message Queue using Concurrency, zero dependency (up).
  34. Go Concurrency Example - Let’s Build a Concurrent Download Manager - zero dependency (up).
  35. NodeJS Async Parallel with Worker Threads Example (up).
  36. Unity DOTS (Data-Oriented Technology Stack) overview (up).
  37. Concurrent write problem - Optimistic vs Pessimistic Locking (up).
  38. Learning Docker - The Easy Way (up).
  39. Learning Kubernetes - The Easy Way (up).
  40. How To Implement Domain-Driven Design (DDD) in Go (up).
  41. How To Structure Domain Driven Design (DDD) In Go (up).
  42. Free Secure Self-Hosting Using Cloudflare Tunnels (up).
  43. Adding A SSO Login To Cloudflare Application (up).
  44. Learn RabbitMQ for Event-Driven Architecture (EDA) (up).
  45. Structured Logging In Go Using Standard Library- Slogslog (up).
  46. The WebSocket Protocol (up).
  47. Implementing WebSocket Protocol in Go (up).
  48. Mastering WebSockets With Go - An in-depth tutorial (up).
  49. Backend master class [Golang + Postgres + Kubernetes + gRPC] (up).
  50. Load balancing gRPC service with NGINX (up).
  51. Distributed Systems - A free online class (up).
  52. Microservice | CQRS Design Pattern with SpringBoot & Apache Kafka (up).
  53. .NET Microservices: Architecture for Containerized .NET Applications (up).
  54. System Design for Beginners Course (up).
  55. High Available Microservices With Apache Kafka In Golang (up).
  56. System Design Interview – Step By Step Guide (up).
  57. Distributed Message Queue (up).
  58. Notification Service (up).
  59. Rate Limiting (local and distributed) (up).
  60. Distributed Cache (up).
  61. Top K Problem (Heavy Hitters) (up).
  62. System Design (up).
  63. PostgreSQL High-Availability (up).
  64. PostgreSQL: Nearest Neighbor Query Performance on Billions of Geolocation Records (up).
  65. What is a Log-Structured Merge Tree (LSM) Tree? (up).
  66. Modern Redis in 40 Minutes | Crash Course 2023 (up).
  67. Redis Glossary Terms (up).
  68. A Comprehensive Guide to Data Modeling (up).
  69. Building with Patterns: A Summary (up).
  70. Practical MongoDB Aggregations Book (up).
  71. (Go-Zero - Cloud-Native Go microservices framework with CLI tool) (up).
  72. Building Event-Driven Distributed Systems in Go with gRPC, NATS JetStream and CockroachDB (up).
  73. (Serverless Go Orchestration on AWS) (up).
  74. Create a modular blockchain from scratch (up).
  75. (RealWorld Demo Apps) (up).
  76. (Leptos - Rust Web Framework) (up).
  77. (Turso - Edge Database) (up).
  78. (Milvus - Vector Database) (up).
  79. (Locus - Load Testing Tool) (up).
  80. Solving distributed systems challenges in Rust (up).
  81. How we handle 80TB and 5M page views a month for under $400 (up).
  82. Kafka: The Definitive Guide (up).
  83. 100 Days Of Kubernetes (up).
  84. Go, EdgeX, Docker Compose, MQTT, Telegraf, InfluxDB, Grafana (up).
  85. (Dapr : The Ultimate Developer API for Authoring Microservices) (up).
  86. Go, Scala, Kafka, Kubernetes, Strimzi, Prometheus, and Grafana (up).
  87. Learn Jenkins! Complete Jenkins Course - Zero to Hero (up).
  88. Ansible (up).
  89. How to Create Helm Charts - The Ultimate Guide (up).
  90. Complete Terraform Course - From BEGINNER to PRO! (Learn Infrastructure as Code) (up).
  91. The ultimate CI/CD resource guide (up).

D. Front-end, Mobile, Game, AI, and Web Development.

  1. Web3 is Going Just Great (up).
  2. The Public APIs List (up).
  3. Firebase Tutorial for Beginners – Build a Mobile App with HTML, CSS, JavaScript (up).
  4. Deleting all Firebase users (up).
  5. Add subscription payments to your web app with Firebase Extensions & Stripe (up).
  6. Understanding the Complexity of Modern Web Dev Stack (Webpack, Babel, TypeScript, React) (up).
  7. World’s shortest UI/UX design course (up).
  8. CSS Grid: Holy Grail Layout (up).
  9. Has Web Dev Gotten Worse? (up).
  10. JetBrains meets Codeium Chat (up).
  11. How I make science animations (up).
  12. (Figma Course - Web Design Tutorial for Beginners) (up).
  13. (Entity Component System (ECS) - Definition and Simple Implementation) (up).
  14. (JavaScript Game Development Course for Beginners) (up).
  15. (Gaming in Go) (up).
  16. (MODEL OF SYSTEM DESIGN) (up).
  17. (MODEL OF NARRATIVE DESIGN) (up).
  18. (MODEL OF QUEST DESIGN) (up).
  19. (MODEL OF LEVEL DESIGN) (up).
  20. (Bevy Engine) (up).
  21. Web Development In 2023 - A Practical Guide (up).
  22. Frontend Web Developer Guide 2023 - The Ultimate Edition (up).
  23. Learn React With This One Project (up).
  24. Những lỗi cơ bản khi sử dụng state trong React (up).
  25. Angular Tour of Heroes application and tutorial (up).
  26. Learn Svelte (up).
  27. The Odin Project - Fullstack Ruby on Rails, NodeJS, and React (up).
  28. How React 18 Improves Application Performance (up).
  29. Prisma Course: Zero To Hero (up).
  30. Drizzle ORM Comprehensive Course (up).
  31. Redux Toolkit Tutorial (up).
  32. Effect for Beginners (up).
  33. MERN Crash Course | JWT Authentication, Redux Toolkit, Deployment & More (up).
  34. Next.js Crash Course (up).
  35. Testing JavaScript with Cypress – Full Course (up).
  36. Next Auth (up).
  37. Save The User With Password Less Authentication In Next.JS (up).
  38. React Testing Crash Course with Next.js (up).
  39. GraphQL Crash Course With Full Stack MERN Project (up).
  40. N + 1 Query Problem, GraphQL, and Performance Woes (up).
  41. (Redwood - Opinionated, full-stack, JavaScript/TypeScript web application framework) (up).
  42. T3: TRPC, Prisma and NextAuth Done Right (up).
  43. The Complete Guide To Building A REST API With Node, Express, TypeScript & MongoDB + Authentication (up).
  44. Full Stack Food Delivery App with React Next.js (up).
  45. Tailwind CSS Full Course 2023 | Build and Deploy a Nike Website (up).
  46. Hướng dẫn xây Spotify clone với TypeScript, Next.js, React, Tailwind CSS và NextAuth (up).
  47. Next.js 13 Crash Course, Projects, and Tutorials (up).
  48. Learn Next & React and get Hired! (up).
  49. HTMX: The Game-Changing Alternative to React (up).
  50. Django Ecommerce Website - Htmx/Tailwind (up).
  51. (Flutter & Firebase App Build) (up).
  52. Large Language Models from scratch (up).
  53. How ChatGPT is Trained (up).
  54. (LangChain Explained in 13 Minutes) (up).
  55. (Let’s build GPT: from scratch, in code, spelled out) (up).
  56. (Scrape any website with OpenAI Functions & LangChain) (up).
  57. (Development with Large Language Models Tutorial – OpenAI, Langchain, Agents, Chroma) (up).

E. Avoid Atrophy, Constant Job Seeking, Resume, and Interview.

  1. If you’re following along this list, you need to have a proof of work, example, i.e. a document list all of your GitHub repos ordered by themes, this acts as a degree for when you go to interviews.
  2. It’s essential to be able to read official documentations, search on Google, and prompt the AI. But be aware that AIs can hallucinate stuffs, last time I ask Bard it said its hallucination rate is 57%.
  3. Keep resume simple, condense, one single page if possible, don’t leak your picture or address, and don’t lie or add unnecessary things.
  4. Avoid scammy recruiters, offshore sweatshops, and dodgy domains like gambling, drugs, dating apps, weapon sellers, blockchain, property development, PR, quant.
  5. One applicant per day is a good rate, too much will lead to overwhelm and drop in quality of job and preparation.
  6. Practice makes perfect, just keep studying, building pet projects, implementing your practical ideas, and interviewing a lot & take notes.
  7. It’s just a number game, don’t take it personally if you constantly fail, keep up the grind.
  8. Even if you’re employed, don’t stop job seeking, or else you will get complacent, delusion, and atrophy. And you have zero leverage in case of laid off.
  9. Building your own knowledge base with tools like Obsidian, Joplin, or Notion.
  10. How I Would Get My First Job If I Started Over (up).
  11. 7 Tips for the Coding Resume (for Software Engineers) (up).
  12. Ex-Googler Resume Tips for software engineers (up).
  13. How To Succeed In Coding & Technical Interviews (up).
  14. How Much Google ACTUALLY Pays Their Software Engineers | My Real Six Figure Tech Salary (up).
  15. Equity 101 for Software Engineers at Big Tech and Startups (up).
  16. TAX BASICS: a Beginner’s Guide to Everything (up).
  17. How I Landed a Job at Google | Software Engineer Q&A (up).
  18. (Những kinh nghiệm làm Freelancer trên Upwork) (up).
  19. (Trải nghiệm làm việc từ xa (Remote software engineer)) (up).
  20. (Trải nghiệm làm việc từ xa – đời không như là mơ) (up).
  21. (Chia sẻ cách kiếm 1 tỷ 1 năm bằng nghề lập trình) (up).
  22. (Đóng thuế cho việc làm kiếm tiền từ nước ngoài – Cập nhật 2022) (up).
  23. (My Example Resume) (up).

Non-free Resources (Books & Udemy courses, wait for sales).

  1. Book - Distributed Services with Go: Reliable, Scalable, & Maintainable Systems (up).
  2. Master Microservices with Java, Spring, and Kubernetes (up).
  3. The Complete Golang Bootcamp (up).
  4. Design Patterns in Go (up).
  5. Building Web Applications with Go (up).
  6. Backend Master Class (up).
  7. GRPC Master Class (up).
  8. Working with Concurrency in Go (up).
  9. Working with Microservices in Go (up).
  10. Docker and Kubernetes: The Complete Guide (up).
  11. Terraform for AWS (up).
  12. Infrastructure Automation with Terraform (up).
  13. The Complete JavaScript Course (up).
  14. The Ultimate React Course (up).
  15. React, NextJS, and NestJS: A Rapid Guide (up).
  16. Vue3, NuxtJS, and Golang: A Rapid Guide (up).
  17. Flutter & Dart: The Complete Guide (up).

Notes.

My reference resources and some experiences as a software engineer (60% backend, 30% frontend, 10% ops, working since 2007), it should be a good “birds-eye view” for someone who’re just learning programming, or an overwhelmed junior developer. This list is handcrafted and not generated by AI. Some notes before proceeding with the list (up):

  • This guide is based on 100% free and quality resources curated by me. It’s not mean to be an exhaustive list. It aims to provide just a minimum skeleton that built from the ground up.
  • Avoid sinking time into pointless YouTube videos made by grifters and course/dream sellers, don’t let them exploit your emotions and insecurities for views and money.
  • For someone who’s self-taught, it will take more than 12 months to thoroughly finish the whole list, assumes that you spend at least 8 hours everyday working on it, there is no shortcut.
  • Remember the 80/20 rule: you only need to do 20% (easy things first) to achieve 80% of results (good enough). The rest 20% is exponentially expensive, so tread carefully.
  • Have a Daily Routine (up) planed out in details and stick with it. Cultivate Good Habits (up) and drop bad habits gradually. A good mind will have a smooth life.
  • Just go through the list in a top-down order, one-by-one, and you’re good to go. Stuffs inside parentheses mean optional.
  • For YouTube videos, just blast through them in 2x speed, enjoy the ride, and code along. Beware the fun-nel in some videos.
  • All you need is a large sample size for a comprehensive mental model, so be diligent and keep training. Never stop explore new technologies.
  • Regarding code editor, using whatever feels comfortable is good enough, but Vim motions is a must-have. I recommend Neovim, it’ll be much more enjoyable when you have full control.

(up).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment