Skip to content

Instantly share code, notes, and snippets.

@lavantien
Last active May 3, 2024 08:34
Show Gist options
  • Star 42 You must be signed in to star a gist
  • Fork 9 You must be signed in to fork a gist
  • Save lavantien/dc730dad7d7e8157000ddae845eddfd7 to your computer and use it in GitHub Desktop.
Save lavantien/dc730dad7d7e8157000ddae845eddfd7 to your computer and use it in GitHub Desktop.
Modern Software Engineering Resources

Modern Software Engineering

Knowledge and Education should be open and free. Hierarchy and Exploitation must be abolished.

Wayback Machine (archive of the internet), Anna's Archive (open ebooks/papers library), 1337x (archive of all media).

  • Z. (down) Notes below. Avoid all funnel sales and paid bootcamps at all cost, if you spent money, there's something wrong, and you're just feeding the scammers and grifters while wasting your time and resources. Also don't forget good OpSec, self defense gears, and physical/mental strength.
  • A. (go) Development Environment (10 items) (Linux, Neovim, Dev Tools, Languages, Configs, Security, and Dotfiles).
  • B. (go) Complementary Subjects (287 items) (Linguistics, English, Security, OpSec, Psychology, Anthropology, History, Philosophy, Economics, Business, Cooking, Xenology, and Self Defense).
  • C. (go) Fundamentals of Science and Technology (137 items) (Logic, Physics (Classical/Quantum Mechanics, Thermodynamics, Electricity, Relativity, Electronics, Electromagnetism, Optoelectronic, Semiconductor, Fusion), Mathematics (Calculus, Linear Algebra, Probability/Statistics, Group/Category/Ring Theory, Applied Math), Game Theory, Geology/Geography, Business, Biology, Medical, MCAT, and Their Applications).
  • D. (go) Computer Science and Competitive Programming (215 items) (CPU/OS/Linux/CMake, Git/Vim/Cronjob/Regex, Object Oriented/Functional Programming, Lua/Python/JavaScript/C/Haskell/C++, Data Structures and Algorithms, Artificial Intelligence, Design Patterns, Database Design, Networking/Security/Encryption/Cryptography, Distributed Systems, and System Design).
  • E. (go) Low-Level Programming (10 items) (Assembly/C, Embedded Systems, Interpreter/Compiler, Control Theory, and Robotics).
  • F. (go) Game Dev and Digital Arts (224 items) (Game Theory, Worldbuilding, Game Design, GDevelop, Lua/Love2D, Python/PyGame, TypeScript/KaboomJS, JavaScript/Canvas/Phaser, C/Raylib, Godot, C++/OpenGL, C#/Unity, Unreal Engine, Aseprite/LDtk/Tiled/Krita/Inkscape, Gimp/Blender/Kdenlive, BeepBox/LMMS/Audacity, and GodSVG/Pixelorama/SpookyGhost/KennyAssets).
  • G. (go) Fullstack Dev and Backend Engineering (333 items) (Figma/JS/TS/Vue/React/NextJS, Java/Spring, Go/Pprof/DevContainers/Testcontainers, Python/Django, Bun/HTMX, C#/DotNet, PostgreSQL/MongoDB/SQLite/Supabase, REST/GraphQL/GRPC-Protobuf/NSQ/NATS/Kafka, NGINX/Certbot, Docker/Kubernetes/OpenTelemetry/Prometheus/Grafana, AWS/Jenkins/Ansible/OpenTofu (Free Terraform), Angular, Dart/Flutter/Android, and Rust).
  • H. (go) Optional Practice (32 items) with other stacks (Zig, Svelte, PHP/Laravel, Ruby on Rails,Swift/Vapor, Cobol/Mainframe, Others, CNCF IoT Edge Computing, Data Science/Machine Learning/Large Language Model/PyTorch, and CTF/Reverse Engineering/Hacking).
  • I. (go) Preparation for Job Search and Realities of the Industry (75 items) (Head Ups, Pathways, Resume, Interview, and Reflections).
  • J. (go) Pet Project Ideas (20 items) and advice on open-source contribution.
  • K. (go) Interview Questions (50 items) that I've been asked (Fundamentals, DS&A, Go, JS, and React).
  • L. (go) Interview Preparation Template (7 sections) (Frequent questions, how to avoid traps and answer them properly).
  • M. (go) Example 7-month SWE L5 Plans with 100K SLOC project and Some non-free resources (4 sections and 76 items) (books & Udemy courses, wait for sales).
  • N. (go) Streamlined Noob to SWE L7 Roadmap (46 + 576 items) with 10 milestones (Effective Training, Frontloading Method, Foundations, Fundamentals, Languages, Tools, Game Dev, Web Dev, Infrastructures, and Production-grade Software).
  • O. (go) Productive Daily Plan (2 sections) for NEETs (Daily normal days and Uposatha/Sabbath days).
  • P. (go) Philosophy in Action (3 sections) (Internal Analysis, External Influences, and Layman's Primer).
  • Q. (go) Chess Practice (25 items) (Fundamentals, London, CaroKann, NimzoIndian, and Bullet).
  • R. (go) Speedcubing Resources (39 sections) (Rubiks, Big Cubes, Blindfolded, and Side Events).
buddhistanarchism

(a manifesto).

Hierarchy is inherently problematic because it will always have the problem of asymmetries: power and information, and thus, will inevitably lead to corruption and exploitation.

Copyright Law is a capitalist mechanism created for the perpetuation of domination and monopoly. All form of knowledge and education should forever be open and free without any restriction.

"Wage slavery refers to a person's dependence on wages or a salary for their livelihood, in a world where the distribution of and conditions for these wages is determined by a specific class."

It's just rebranded feudalism, where the elites own all the lands and means of production, most wealth are inherited, self-made is a myth created to gaslight the masses, while slavery becomes systemic. "Butttt, you can choose your employer." Good luck saying this with a hobo, a neet who for years cannot land a single job, or a minimum wagie. The vast budget (thievery via taxes) in the army, wars, law enforcement, consumerism propaganda, and entertainment industrial complex is solely for protecting the system and to make the population dull and indulging. The elites, meanwhile, prepped for the worst with their underground cities and luxury New Zealand villas. They can just safely farm the population, and everything is going as planned.

"A wise man should avoid unchastity as a pit of glowing charcoal. If unable to lead a celibate life, he should not go to another’s wives." - KN Snp 2.14

(up).


A. Development Environment

B. Complementary Subjects

C. Fundamentals of Science and Technology

D. Computer Science and Competitive Programming

E. Low-Level Programming

F. Game Dev and Digital Arts

G. Fullstack Dev and Backend Engineering

H. Optional Practice with other stacks

I. Preparation for Job Search and Realities of the Industry

J. Pet Project Ideas

Try to build them yourself without watching tutorials. I gathered some these on the internets, not all are my original ideas. If you want to work with an open source project, contact their team first and see how it goes. Please don't spam open source projects fishing for contribution, it's just not worth it and you only degrade yourself, only if you're using the software and run into problems, then try report the issue and contact the maintainer first. Build ones that are not too basic and you can explain them well. Also check the project based learning list.

  • 1. Something that you are interested on or have a need to solve, your personal website, discord bots, tools and mods for hobbies or video games you're playing, emulator, memory trainer, repertoire trainer, maze solver robot, automated irrigation system with an app for calibrations and monitoring, sudoku solver, ant simulator, genetic algorithm visualizer, invent a new board game, schema generator, or just simply automate and sync your daily repetitive tasks (up).
  • 2. Try to create something that will help people, make the world a little bit better for somebody (up).
  • 3. A fully functional text editor that support undo/redo, search/replace, tables, and drawing (up).
  • 4. A free blog/writing collection website with headless CMS (up).
  • 5. A statistical analysis and solution website that based on the United Nation's 17 Sustain Development Goals (up).
  • 6. A peer-to-peer messaging app (up).
  • 7. A habits, health, and nutrition tracker (up).
  • 8. A free course website (Netflix clone but instead of movies you deliver educational content) (up).
  • 9. A content/project management system with task synching and scheduling (up).
  • 10. A 4chan clone (up).
  • 11. A multi-threaded web indexing spider (up).
  • 12. An e-commerce website/app (Amazon clone) that integrate with map, payment, and delivery (up).
  • 13. A decentralized peer-to-peer (not blockchain) barter transaction app with proper backend system that can support a large Anarchy society (up).
  • 14. 3D Printing hardware and software (up).
  • 15. A grid gallery portfolio website with pure HTML/CSS and host on GitHub Pages (up).
  • 16. A personal project/habit/income/expense planner from scratch with NextJS (up).
  • 17. Code 15 classic games from scratch with ECS using Rust/Bevy and Aseprite/LDtk (Street Fighter, Pokemon-like RPG, Shoot 'em Up, Bomberman, Tower Defense, Graph Visualizer, Pacman, Tetris, Galaga, Asteroid, Arkanoid, Frogger, Snake, Cellular Automata, and Pong) (up).
  • 18. A turn-based 2D RPG with physics-based-slingshot-combat from scratch with Defold/Krita and release on Steam and Google (up).
  • 19. Setting up a production-grade REST API with tests, autho/en, caching, migration, PostgreSQL database, and GitHub CI in Go from scratch with Docker/Pprof and AlwaysData/Oracle Cloud Free Tier hosting (up).
  • 20. A fullstack market app for mutual aids with distributed system in Go, NodeJS, GRPC, NextJS frontend, and Docker/K8s/OpenTelemetry/Prometheus/OpenTofu/AWS (up).

K. Interview Questions

  • That I've been asked (Fundamentals, DS&A, Go, JS, and React) (up).

  • 1. (DSA) Explain and compare Procedure, Object Oriented, and Functional Programming.

  • 2. (DSA) Explain the concept of array, linked list, tree, hash map, stack, queue, and priority queue.

  • 3. (DSA) Explain DFS, BFS, and their practical applications.

  • 4. (DSA) Implement a string reverser, palindrome checker, prime number checker, or reverse a linked list.

  • 5. (DSA) Solve an array problem.

  • 6. (DSA) Solve a dynamic programming, a medium string manipulation with trie, or an easy graph problem (up).

  • 7. (JS) Explain hoisting, scope, and closures.

  • 8. (JS) Difference between var, let, and const.

  • 9. (JS) Explain DOM manipulation; how to center a div both horizontally and vertically.

  • 10. (JS) Explain class, arrow function, map-filter-reduce.

  • 11. (JS) Explain async and await; list and explain some ES6 features.

  • 12. (JS) Explain Node's single threaded event loop model.

  • 13. (JS) Explain callback and promise.

  • 14. (JS) Implement word count.

  • 15. (JS) Implement an event emitter from scratch.

  • 16. (JS) Implement map-filter-reduce from scratch.

  • 17. (JS) Implement promise and async/await from scratch; resolve chain promises.

  • 18. (JS) Implement signal from scratch (up).

  • 19. (React) What's the difference between function component and class component.

  • 20. (React) What are props and how children prop works.

  • 21. (React) How Virtual DOM works.

  • 22. (React) Explain all built-in React hooks; explain react router.

  • 23. (React) Best practices of using Redux, Store, State Management, Context and Redux Middleware.

  • 24. (React) How to use GraphQL with React; the difference between REST and GraphQL; the n+1 problem.

  • 25. (React) Implement a listing page in React with TDD using a public API.

  • 26. (React) Build a virtual DOM from scratch (up).

  • 27. (Go) What's the difference between ACID and BASE; explain in the context of PostgreSQL and MongoDB.

  • 28. (Go) Which features of PostgreSQL/MongoDB did you use; drop all required data in PostgreSQL.

  • 29. (Go) How to use JSON data in PostgreSQL; how to store money and discounts in PostgreSQL/MongoDB.

  • 30. (Go) Explain normalization and indexing.

  • 31. (Go) How to read 10gb of data from PostgreSQL; how would you read a 10gb file with Go.

  • 32. (Go) What's the difference between HTTP, TCP, UDP, WebSockets, and GraphQL.

  • 33. (Go) Explain HTTPS; what's the difference between certificate and public key.

  • 34. (Go) What's the difference between symmetric and asymmetric encryption.

  • 35. (Go) Name and explain some important services in a cloud platform; cronjob scheduling.

  • 36. (Go) How to scale with and without a cloud platform; how Kubernetes works.

  • 37. (Go) Identify bottleneck in production environment; explain tracing, distributed logging, and metrics (up).

  • 38. (Go) Explain some design patterns that are commonly used in Go.

  • 39. (Go) The difference between parallelism and concurrency; Go's concurrency features and their use cases.

  • 40. (Go) How Go's scheduler works; compare it with the OS scheduler.

  • 41. (Go) Practical ways to use closure in Go.

  • 42. (Go) Explain context package in Go; how would you implement time out; how would you handle errors.

  • 43. (Go) How would you write unit tests in Go; explain mocking and dependency injection.

  • 44. (Go) How would you test a database layer, a service layer, a handler layer, or a third-party callback layer.

  • 45. (Go) Explain common concurrent patterns in Go and their usages.

  • 46. (Go) Explain CAP theorem; how Event Driven works in Go services; orchestrate a micro-services architecture.

  • 47. (Go) Explain producer, consumer, and offset in Kafka; how to concurrently consume and retry.

  • 48. (Go) Implement a task with generics; design and implement an inventory and storefront system.

  • 49. (Go) Implement a parallel URL fetcher with 5 async processes and print a specific field in the JSON respond.

  • 50. (Go) Implement a REST API with a database layer, caching, and rate limiting using only standard libs ((up).

L. Interview Prep Template

I'm looking for a full-time software development job in X (A, B, C; great if remote). Back-end or full-stack regarding anything Go and/or JavaScript (NodeJS, ReactJS, NextJS). I love to work on a quality product or project with proper git workflow, code review, and unit tests. My salary requirements: $X-X/month gross with standard benefits (9-to-5, 13th month pay, full social insurance, health insurance, yearly health check, etc.).

Introduction (up)

  • I'm Lavantien, a Y born in X, and I studied computer engineering at UIT, majoring in embedded systems, and minoring in robotics. Now I'm working mostly as a web developer, I enjoy programming and solving problems. I mostly use Go and JavaScript. I can do front-end but I love develop my back-end skill because there's always something new to learn, like networking, protocols, security, dealing with distributed systems and databases, setting up a robust testing pipeline, and working with third-party integrations and cloud services. During the 7 years of my web development career, I've been involved in some large projects like ETCC E470 and Ackio Mesh, but most of them were small projects and startups where I had the chance to build things from the ground up and participate in the whole development process.

Values that I will bring to the team (up)

  • Good sense of responsibility.
  • When in doubt, I always directly ask questions and clarify with others. I'm open to feedback and welcome criticism.
  • I am good at analyzing problems, reading documentation, and searching for solutions. I always try to find the best ways to save costs and improve profitability for my clients.
  • I have a strong foundation of core programming techniques, data structures and algorithms, design patterns, and networking. I have a robust mental model for debugging and writing code.
  • And I am very intimate with all aspects of backend development and all the nuances of the Go and JavaScript languages. I am very familiar with complex code bases, distributed systems, and third-party integrations.
  • I focus on team objectives. I have a win-win mentality.
  • I love to learn from other people and to constantly improve myself.

Potential incompatibilities with company culture (up)

  • I don't want to speak with anyone unless it's necessary for the job.
  • I don't like to work on a legacy code base or just pure maintenance work.
  • I don't like most of the meetings where people are just bantering and wasting time on what could be just email.
  • I don't like to give vague estimations. I hate it when PMs give unrealistic timelines just to
  • I might come across as being critical, as I don't want to flatter.
  • I love meritocracy. I hate micromanagement, nepotism, cronyism, and favoritism regarding performance reviews.

Description of my favorite project (up)

  • It was a remote international team at Dropezy, a quick commerce app that allows customers to quickly buy necessities like food, vegetables, water, toiletries, etc., applies discounts with a seamless payment process, guaranteed delivery in under 15 minutes, no matter where they are located in supported cities. Our code base is entirely in Go and Flutter. We use GRPC with Protobuf for communication, HTTP callbacks for third-party integrations, and Docker Compose for local development. Our code base is comprised of four monorepos: one for the backend, one for the mobile app, one for the protobuf schemas, and the last one for platform tools like Kubernetes, Terraform, and GCP. I'm fortunate to join in very early in the development process, and I'm also fortunate to be a part of the first production release. My work there focuses mostly on the inventory-order-payment-delivery pipeline, delivery services integration, research on geolocation optimization, writing unit tests to ensure proper coverage, and lastly optimizing MongoDB aggregation pipelines.

Points I would like to clarify with HR (up)

  • Real salary range? Full social insurance? Payment method and frequency?
  • Yearly health checkup? PTO policy? OT policy? Work log?
  • 13th month policy? Project bonus?
  • Who are the clients of the company? What are the domains of projects in the company? What are the sources of funding? How stable is the profitability of the company?
  • What is the longest project in the company, and how did it end up?
  • Layoff possibility? "We can keep the contract but no more salary, or you can write a resignation letter"?
  • Is there nepotism in the company (e.g., HRM is the CEO's wife and CTO is the CEO's brother)? Cronyism? Favoritism regarding performance reviews? Micromanagement?

Questions I would like to ask the tech lead (up)

  • Is there a minimum standard for the code base? Like, regression testing, 80% on the test coverage, or all PRs need to be reviewed and rebase before merging? And what does the CI pipeline look like?
  • Are there sufficient onboarding documentation and a development wiki? How many SLOC in the code base?
  • What are the problems that you expect this position to solve? Could you describe a typical ticket or story?
  • How are stories and tickets divided? What does a typical sprint look like? Timeline and release cycle?
  • How are estimations and decisions made? Evident-based solutions, data-driven approach, i.e., profiling and benchmarking first? Does the team keep decision records?
  • I've heard about the term, but what are your definition of Clean Code? Who decided whose code is cleaner?
  • How many users are the system serving? What kind of architecture? Why chose microservices? What are the network latency between each service and the amount of serialization and deserialization on each request? Are you solving problems you don't have?
  • How does the team evaluate performance? What are the specific metrics? Are there peer reviews?
  • What are the types of meetings? How does each of them go? What does a typical working day look like?

Feedback for the interview process (up)

  • Try to focus on the positive.

M. Example 7-month SWE L5 Plans and Some non-free resources

Two examples of a SWE L5 roadmap with 100k SLOC project in 7 months (using Google Gemini):

The prompt 1

Make a 7-month (2100 hours total, 300 hours per month, 70 hours per week, 10 hours a day) preparation for job seeking SWE L5 plan focus on these subjects, with the emphasize on efficiency and minimal context switching:

  • data structures and algorithms, database design, system design, distributed systems
  • go: composition, error handling, concurrency, middlewares, testings, memory model, garbage collection, containerization-docker/compose, profiling-pprof, tracing-opentelemetry/prometheus/grafana
  • postgresql, mongodb, sqlite, migration, mock
  • restapi-http, grpc-protobuf, grpc-web, graphql, websockets, nsq, nats, authentication and roll-based authorization
  • git workflow with rebase/pull request/review/merge, ci/cd with github actions
  • orchestration and deployment: helm, kubernetes, local deploy with minikube, cloud basics with aws
  • javascript: runtime model, garbage collection, async, fetch, implement js features from scratch, html/css, vue, react, nextjs
  • a complex project: the mutual aid project, where users login via google oauth2 can post offers, request aids, get notified, have category to subscribe to, have a voting based merit system, fraud detection and anti cheat system, there'd be no payment everything will be via barter library economic system, and delivery is arranged between 2 users
  • Tech Interview Handbook, Front End Interview Handbook, FreeCodeCamp's Coding Interview Prep, Principles of Algorithmic Problem Solving, Algorithms for Competitive Programming, Competitive Programmer’s Handbook, Project Euler, Rosetta Code, CSES Problem Set, Blind's 75 LeetCode Problems, Advent of Code

Here's a 7-month (2100 hours) preparation plan for SWE L5 job seeking, focusing on efficiency and the provided subjects with minimal context switching

Months 1-2 (600 hours): Foundational Knowledge (10 hours/day) (up)

  • Data Structures & Algorithms (DSA) (300 hours):
    • Dedicate 5 hours daily to practicing data structures and algorithms on platforms like LeetCode.
    • Focus on problem-solving techniques, time/space complexity analysis.
  • Database Design (150 hours):
    • Allocate 2.5 hours daily to learning relational (SQL) and NoSQL (MongoDB, PostgreSQL) database fundamentals.
    • Understand normalization, indexing, query optimization, and data modeling.
  • System Design (150 hours):
    • Spend 2.5 hours daily grasping high-level system design principles like scalability, reliability, and fault tolerance.
    • Practice designing systems for real-world scenarios with books like "Designing Data-Intensive Applications".

Months 3-4 (600 hours): Go Programming (10 hours/day) (up)

  • Core Go Concepts (300 hours):
    • Dedicate 5 hours daily to mastering Go fundamentals like composition, error handling, concurrency, and memory management.
    • Build simple Go applications to solidify understanding.
  • Advanced Go (150 hours):
    • Allocate 2.5 hours daily to delve into middlewares, testing frameworks (Go testing), and profiling tools (pprof).
    • Learn containerization with Docker/Compose and tracing with OpenTelemetry/Prometheus/Grafana.
  • Messaging Systems (150 hours):
    • Spend 2.5 hours daily understanding messaging systems like NSQ and Nats.
    • Implement them in Go applications for asynchronous communication.

Months 5-6 (600 hours): Databases, APIs, DevOps, Cloud & Frontend (10 hours/day) (up)

  • Databases (100 hours):
    • Allocate 1.5 hours daily to refining your knowledge of PostgreSQL and MongoDB, including advanced features like transactions, indexes, and replication.
    • Learn SQLite for simple data storage needs.
  • API Design & Protocols (100 hours):
    • Dedicate 1.5 hours daily to mastering REST APIs (HTTP), gRPC (protobuf, gRPC-web), WebSockets, and GraphQL.
    • Implement these protocols in Go for your practice projects.
  • Git & CI/CD (100 hours):
    • Spend 1.5 hours daily mastering Git workflow with rebase, pull requests, review, and merge practices.
    • Learn CI/CD principles and implement automated workflows with GitHub Actions.
  • Orchestration & Deployment (100 hours):
    • Allocate 1.5 hours daily to understanding container orchestration with Kubernetes.
    • Learn to deploy applications using Helm charts and practice local deployments with Minikube.
  • Cloud Basics (100 hours):
    • Dedicate 1.5 hours daily to gaining essential cloud computing knowledge with AWS, focusing on core services like EC2, S3, and VPC.
  • JavaScript Fundamentals (50 hours):
    • Spend 1 hour daily solidifying your understanding of JavaScript's runtime model, garbage collection, and asynchronous programming.
    • Learn to build basic web applications with HTML, CSS, and vanilla JavaScript.
  • Frontend Framework (50 hours):
    • Choose a framework (Vue or React) and invest 1 hour daily in mastering its core concepts and best practices.
    • Build a small frontend application using your chosen framework.

Month 7 (300 hours): Final Project & Interview Prep (10 hours/day) (up)

  • Mutual Aid Project (200 hours):
    • Dedicate 3 hours daily to implementing the Mutual Aid project using Go, chosen database, and messaging systems.
    • Integrate user authentication (Google OAuth2), offer/aid posting, notification system, category subscriptions, voting system, fraud detection, and barter library economic system.
  • Technical Interview Prep (100 hours):
    • Utilize resources like Tech Interview Handbook, Front End Interview Handbook, FreeCodeCamp's Coding Interview Prep.
    • Focus on algorithms, data structures, system design, and behavioral questions.
    • Practice problem-solving on LeetCode (Blind 75), Project Euler, Rosetta Code, CSES Problem Set, Advent of Code, allocating 1.5 hours daily.

Key Points for Efficiency and Minimal Context Switching: (up)

  • Create a Detailed Schedule: Allocate specific 1-hour slots within your 10-hour study blocks for each subject, including breaks.
  • Utilize Online Resources: Leverage online courses, tutorials, and practice platforms for efficient learning.
  • Build a Portfolio: Showcase your skills through the Mutual Aid project and smaller practice projects.
  • Participate in Online Communities: Connect with other developers for discussions and feedback.
  • Adapt and Adjust: Be flexible and adjust your schedule based on your learning pace and progress.

Remember, consistent effort and focused learning are crucial for success within this accelerated 7-month timeframe.

The prompt 2

Make a 210 days plan to confidently apply SWE L5 positions out of this list, assuming that I'll spend 10 hours a day working on it and want to minimize context switching, only do one thing a time, here the list of resources (76 items):

  • 1. Udemy: The Complete JavaScript Course 2024: From Zero to Expert
  • 2. Youtube: Golang for Beginners
  • 3. Youtube: Golang Tutorial : Go Full Course
  • 4. GitHub Skills
  • 5. Youtube: Golang Course with Bonus Projects
  • 6. Gokatas
  • 7. Youtube: PostgreSQL Tutorial Full Course 2022
  • 8. Youtube: Rust Tutorial Full Course
  • 9. Youtube: Learn Algebra 1 and 2 in One Video
  • 10. Youtube: Learn Trigonometry
  • 11. Youtube: Learn Learn Precalculus
  • 12. Youtube: Learn Probability
  • 13. Book: Writing an interpreter and compiler in Go
  • 14. Khan: Computer Programming - JavaScript and the web
  • 15. MDN: Curriculum
  • 16. MDN: Getting Start with the Web
  • 17. MDN: JavaScript
  • 18. Youtube: Web Development In 2024 - A Practical Guide
  • 19. Youtube: Node.js Crash Course 2024
  • 20. Youtube: React Course 2022
  • 21. Youtube: React Course 2022
  • 22. Youtube: React Crash Course 2024
  • 23. Coursera: Algorithms, Part I and II
  • 24. FrontendMasters: The Last Algorithms Course You'll Need
  • 25. FreeCodeCamp: Coding Interview Prep
  • 26. Project Odin: Foundations
  • 27. Project Odin: Full Stack JavaScript
  • 28. Project Odin: Full Stack Ruby on Rails
  • 29. Udemy: The Ultimate React Course
  • 30. Udemy: React, NextJS, and NestJS: A Rapid Guide
  • 31. Udemy: Vue3, NuxtJS, and Golang: A Rapid Guide
  • 32. Udemy: Flutter & Dart: The Complete Guide
  • 33. Front End Interview Handbook
  • 34. Tech Interview Handbook
  • 35. Introduction to C++
  • 36. Book: C++ 20 - The Complete Guide
  • 37. Book: Introduction to Algorithms, Fourth Edition
  • 38. Youtube: Errichto's Algo Lectures
  • 39. Book: Principles of Algorithmic Problem Solving
  • 40. Algorithms for Competitive Programming
  • 41. Book: Competitive Programmer’s Handbook
  • 42. Project Euler
  • 43. Rosetta Code
  • 44. CSES Problem Set
  • 45. Blind 75 Must Do Leetcode Problems
  • 46. Advent of Code
  • 47. Book: Let's Go
  • 48. Book: Let's Go Further
  • 49. Udemy: Working with Concurrency in Go
  • 50. Book: Learn Concurrent Programming with Go
  • 51. Book: 100 Go Mistakes and How to Avoid Them
  • 52. Udemy: Design Patterns in Go
  • 53. Midterm Project: Grid Gallery Portfolio Website and start applying to jobs
  • 54. Udemy: Building Web Applications with Go
  • 55. Udemy: GRPC Master Class
  • 56. Udemy: Working with Microservices in Go
  • 57. Udemy: Docker and Kubernetes: The Complete Guide
  • 58. Youtube: Kubernetes 101 Workshop for Absolute Beginners
  • 59. Kubernetes Ultimate Hands-on Labs and Tutorials
  • 60. Kubetools - A Curated List of Kubernetes Tools
  • 61. Youtube: AWS Cloud Complete Bootcamp Course
  • 62. Book: Amazon Web Services in Action, Third Edition - An in-depth guide to AWS
  • 63. Udemy: Backend Master Class
  • 64. Udemy: Master Microservices with Java, Spring, and Kubernetes
  • 65. AWS Workshops
  • 66. Book: A Philosophy of Software Design, 2nd Edition
  • 67. Book: Designing Data-Intensive Applications
  • 68. Book: Distributed Algorithms, Second Edition - An Intuitive Approach
  • 69. Book: Patterns of Distributed Systems
  • 70. Book: Distributed Services with Go: Reliable, Scalable, & Maintainable Systems
  • 71. Book: Cloud Native Go: Building Reliable Services in Unreliable Environments
  • 72. Book: Zero to Production in Rust: An introduction to backend development
  • 73. Udemy: Infrastructure Automation with Terraform
  • 74. Udemy: Terraform for AWS
  • 75. Youtube: Understanding and using NATS Server in Golang
  • 76. Final Project: Mutual Aid

Here's a revised 7-month plan incorporating Go-specific books for a deeper dive into the language, presented in a detailed table format

Month 1 (Days 1-30): (up)

Phase Days Activity Resources Notes
Foundational Skills 1-2 JavaScript Fundamentals Udemy: The Complete JavaScript Course 2024: From Zero to Expert Supplement with MDN Web Docs
Foundational Skills 3-12 Mathematics Youtube: Learn Algebra 1 and 2 in One Video, Learn Trigonometry, Learn Learn Precalculus, Learn Probability Focus on core concepts
Front-End Development 13-14 React Fundamentals Youtube: React Course 2022 or React Crash Course 2024 Choose one based on your preference
Front-End Development 15-16 Project Odin: Foundations Project Odin curriculum Covers HTML, CSS, and Git
Front-End Development 17-18 Project Odin: Full Stack JavaScript Project Odin curriculum Introduces basic Node.js and Express
Back-End Development 19-20 Go Fundamentals Youtube: Golang for Beginners
Back-End Development 21-22 Go Fundamentals (Reading) The Go Programming Language by Alan A. A. Donovan and Brian Kernighan (1 day) Gain deeper understanding alongside videos
Back-End Development 23-24 Go Programming Practice Youtube: Golang Tutorial: Go Full Course Focus on hands-on practice
Back-End Development 25-26 Go Mistakes & Best Practices (Reading) 100 Go Mistakes and How to Avoid Them by Matthew A. Thompson (1 day) Learn common pitfalls and best practices
Back-End Development 27-28 Go Project Development Youtube: Golang Course with Bonus Projects Build small projects to solidify learning
Back-End Development 29-30 Go Compiler & Interpreter (Reading) Writing an interpreter and compiler in Go by Thorsten Ball (1 day) Optional: Deeper understanding of Go internals

Month 2 (Days 31-60): (up)

Phase Days Activity Resources Notes
Algorithms & Data Structures 31-39 Algorithms & Data Structures Coursera: Algorithms, Part I and II Master core algorithms and data structures
Coding Interview Prep 40-44 Coding Interview Practice FrontendMasters: The Last Algorithms Course You'll Need Focus on problem-solving and coding techniques
Coding Interview Prep 45-49 Leetcode Practice Leetcode: Blind 75 Must Do Leetcode Problems Solve essential coding challenges
Coding Interview Prep 50-54 Additional Practice (Optional) Project Euler, HackerRank Further challenge yourself with diverse problems

Month 3 & 4 (Days 61-120): (up)

Phase Days Activity Resources Notes
System Design 61-62 System Design Fundamentals (Reading) A Philosophy of Software Design, 2nd Edition by Eric Freeman and Elisabeth Robson (1 day) Understand key design principles
System Design 63 System Design Fundamentals (Reading) Designing Data-Intensive Applications by Martin Kleppmann (1 day) Learn data-centric design considerations
Distributed Systems 64-67 Distributed Systems Fundamentals (Reading) Distributed Algorithms, Second Edition by Martin J. Fischer, Nancy A. Lynch, and Michael S. Paterson (4 days) Grasp core distributed system concepts
Distributed Systems 68-71 Distributed Systems Patterns (Reading) Patterns of Distributed Systems by Robert C. Martin (4 days) Learn common design patterns for distributed systems
Distributed Systems 72-75 Go in Distributed Systems (Reading) Distributed Services with Go by Shayne Boyer (4 days) Understand building distributed systems with Go
Distributed Systems 76-77 Cloud Native Go (Reading) Cloud Native Go: Building Reliable Services in Unreliable Environments by Martin Fowler (2 days) Learn Go-specific considerations for cloud-native development
Cloud Technologies 78-80 AWS Fundamentals Youtube: AWS Cloud Complete Bootcamp Course Gain basic AWS knowledge
Cloud Technologies (Optional) 81-87 Deeper AWS Learning A Cloud Guru: AWS Certified Solutions Architect Associate Further explore specific AWS services
Cloud Technologies 88-89 Kubernetes Fundamentals Youtube: Kubernetes 101 Workshop Understand core Kubernetes concepts
Cloud Technologies 90 Kubernetes Practice (Optional) Kubernetes Ultimate Hands-on Labs and Tutorials Gain hands-on experience with Kubernetes
Cloud Technologies 91-92 Infrastructure Automation Udemy: Infrastructure Automation with Terraform Learn infrastructure provisioning with Terraform
Cloud Technologies 93-94 Terraform for AWS Udemy: Terraform for AWS Apply Terraform specifically for AWS

Month 5-7 (Days 121-180): (up)

Phase Days Activity Resources Notes
Go Deep Dive (Reading) 121-122 Go Fundamentals Let's Go by Alex Edwards and Steve Kmett (2 days) Review and solidify core concepts
Go Deep Dive (Reading) 123-124 Go Advanced Topics Let's Go Further by Alex Edwards and Steve Kmett (2 days) Explore advanced features and techniques
Go Deep Dive (Practice) 125-129 Concurrency & Microservices Working with Concurrency in Go by Adam Freeman (2 days), Learn Concurrent Programming with Go by Joe Tsai (2 days) Build concurrent and microservice-based applications
Go Deep Dive (Practice) 130-134 Go Design Patterns Design Patterns in Go by Alexander Alekhno (2 days) Apply design patterns to Go projects
Go Deep Dive (Optional) 135-141 Advanced Go Topics (Choose one or two) Pro Go by Jon Bodner, Mark Bates, and Dominik Graf (general advanced topics), Go for DevOps by Brad Smola (DevOps focus), gRPC Microservices in Go by Packt Publishing (microservices focus) Deepen your knowledge in specific areas
Project Development 142-180 Final Project: Mutual Aid Platform Utilize Go and relevant technologies to build the platform Focus on practical application and showcase your skills

Additional Notes:

  • This plan is a guideline; adjust the pace and resource selection based on your learning speed and prior knowledge.
  • Prioritize understanding concepts deeply and applying them practically rather than simply completing resources.
  • Utilize online communities, forums, and open-source projects for further learning and collaboration.
  • Network with other developers and attend industry events to stay updated in the software development landscape.

By following this comprehensive plan and actively engaging with the resources, you can significantly increase your chances of landing an SWE L5 position with a strong focus on Go development. Remember, consistency, dedication, and a passion for learning are key to achieving your goals!


Some non-free resources:


N. Streamlined Noob to SWE L7 Roadmap


O. NEET Productive Daily Plan

Normal days

  1. 7 hours of sleep (11pm-6am); 30 minutes of morning stretching and breath meditation, 30 minutes of night stretching and breath meditation.
  2. 2 sets of 30 minutes of walking meditation; 15 minutes of melee combat (Muay, Boxing, Jiu-jitsu) and weapons training (Knife, Staff, Bow, Gun, Concealed); 15 minutes of alternate-day body-weight exercises:
    1. On Mon, Wed, Fri: Strength, 4 sets of:
      1. upper body: 7 push ups, 2 pull ups;
      2. lower body: 14 squats;
      3. core: 7 hanging knee raises;
      4. rest: 21 breaths.
    2. On Tue, Thu: Cardio, 7 sets of 40 jumping rope reps with a 21 breaths rest.
    3. On Sat, Sun: rest day.
  3. 1 hour of training Pali or English (7am-8am).
  4. Abstain:
    1. from killing any being whether human or animal, abortion, euthanasia, suicide, wars;
    2. from stealing, thievery, slavery, exploitations, fraud, bribery, nepotism, cronyism, favoritism;
    3. from sexual misconducts, assaults, adultery, prostitution, masturbation, hookups, transactional relationships;
    4. from lying, deceiving, cheating, forgery, propaganda;
    5. from alcohol, drugs, smoking, gambling, pornography, overeating, clubbing, partying, etc.
  5. 30 minutes of one meal of vegetables, fruits, and pasture raised chicken eggs; 15 minutes of house chores.
  6. 8 hours of programming (8am-4pm).
  7. 5 hours of gaming, chess, cubing, or researching, writing, and making videos (5pm-10pm) (up).

Uposatha/Sabbath days, average 4 days per month, base on lunar calendar

  1. 7 hours of sleep (11pm-6am); 1 hour morning stretching and breath meditation (6am-7am), 1 hour night stretching and breath meditation (9pm-10pm).
  2. 2 sets of 1 hours of walking meditation.
  3. 2 hours of reading scriptures (8am-10am).
  4. Abstain:
    1. from killing any being whether human or animal, abortion, euthanasia, suicide, wars;
    2. from stealing, thievery, slavery, exploitations, fraud, bribery, nepotism, cronyism, favoritism;
    3. from all sexual activities;
    4. from lying, deceiving, cheating, forgery, propaganda;
    5. from alcohol, drugs, smoking, gambling, pornography, overeating, clubbing, partying, etc;
    6. from meals at the wrong times and at night;
    7. from entertainments and beautification;
    8. from sleeping on high or luxury beds.
  5. 30 minutes of one meal of vegetables, fruits, and pasture raised chicken eggs; 30 minutes of house chores.
  6. 8 hours of programming (10am-4pm, 5pm-7pm).
  7. 2 hours of listening to dhamma talks (7pm-9pm).
  8. 1 hours of reflection and contemplation (10pm-11pm) (up).

P. Philosophy in Action

1. Internal Analysis (Buddhism) (up)

  • 8 external influences: gain and loss, fame and disgrace, blame and praise, pleasure and pain.
  • The keeping of the five precepts and eight precepts on Uposatha days; strengthening Right View and analysis frameworks.
  • The training in Noble Eightfold Path.
  • The training in healthy lifestyle, strength, and endurance.
  • The training in self defense and weapons usage.

2. External Analysis (Anarchism) (up)

  • 8 core aspects of a society: infrastructure, healthcare, welfare, education, council of direct democracy, economics, defense, intelligence.
  • 3 core analyses of hierarchy: mean-end disunity; violent domination, exploitation, and deception; self perpetuation.
  • The abolition of all forms of hierarchy, state, class, slavery, involuntary servitude, exploitation, domination, prison system, and taxation; the uprooting of any chance of re-arising of any form of hierarchy, state, or class; the prevention of any form of upstartism and exploitation.
  • The abandonment of all forms of private property and land ownership or representation, and the protection of personal properties based on usage.
  • Freedom and solidarity; stateless classless moneyless society via library economy; freedom of movement, of speech, of assembly, of horizontal association, of religion, to self defense and to keep and bear arms, of restoration or social sanction or eviction or excommunication of bad people from a community; the protecting of the ecology and the conscious continuous ongoing revolution, of mutual aids.

3. Layman's Primer - A collection of 30 discourses (up)

Read and try to understand and memorize by heart the discourses to develop Right View, what’s right and what’s wrong, what’s to be done and what’s not to be done, and to be able to recall the Dhamma in dire circumstances. Keep the five precepts (understand all the specificities, not break them yourself, not encourage the breaking of them, and not praise the breaking of them) everyday, keep the eight precepts on Uposatha days. Practice the Noble Eightfold Path according to the Buddha’s instructions (pay attention to Right Livelihood as you’re a lay person). Develop the habit of contemplation and meditation (both sitting and walking), see what’s obstructing the mind and what’s nourishing it.

(up)


Q. Chess Practice

R. Speedcubing Resources


Notes

My reference resources and some experiences as a software engineer (60% backend/game/robotic, 30% frontend, 10% ops, working in game dev since 2007, robot engineering since 2015, and web dev since 2018), it should be a good “birds-eye view” for a programmer who want to learn things the bottom-up approach. This list is handcrafted and not generated by AI nor contains any affiliation. Some notes before proceeding with the list (up):

  • This guide is based on 100% free and quality resources vetted and 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. If you found something cool please share in the comment below and I can add it to the list after vetting. Copy/clone/fork this so that you can use the checkboxes.
  • Avoid sinking time into pointless videos made by grifters and course/dream sellers, don’t let them exploit your emotions and insecurities for views and money. This is not a get rich quick course, or get 6 figures salary roadmap, it's just my knowledge base.
  • Practice the habit of always checking official documentations first before watching tutorials, endure the inconvenient in the moment, you'll become much better and more independent in the long run. Take the knowledge and leave, don't worship the educator.
  • For YouTube videos, just blast through them in 2x speed, enjoy the ride, and code along. Beware the sales funnel in some videos and don't waste money on those. Make sure the concepts are well sticked to your mind before moving on or else you're just wasting your time. Use uBlock Origin and SponsorBlock to combat the evil advertisement industry.
  • For someone who’s self-taught, it will take more than 18 months to thoroughly finish the whole Streamlined Noob to SWE L7 Roadmap, 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 plan in mind and focus on a certain niche, for example, if you want to be hirable fast focus on web dev with Go and NextJS, if you want to have a lot of fun and can do useful things right away and can earn money via selling games on Steam then focus on game dev and robotics first. And also participate in free competitions or game jams if you have chance.
  • Have a Daily Routine planed out in details and stick with it. Cultivate good habits and drop bad habits gradually. Please stay healthy in both body and mind.
  • Just go through the list in a top-down order, one-by-one, and you’re good to go. Stuffs inside parentheses mean optional. Numbers in the bracket are total duration in 2x speed and number of video in that playlist.
  • All you need is a large sample size (build a lot of projects) for a comprehensive mental model. It all comes down to muscle memory. And also to have a beefy portfolio of finished projects.
  • Think about the problems in your life or others that you want to solve and try to apply your knowledge.
  • Regarding code editor, using whatever feels comfortable is good enough, but Vim motions is a must-have. I recommend Neovim, but you can also use Emacs, it has great org mode for note taking, it’ll be much more enjoyable when you have full control of your dev environment.

(up).

@lavantien
Copy link
Author

@GaziRiad
Copy link

GaziRiad commented Aug 3, 2023

Thanks for sharing this knowledge, i've practiced JS for a while now but i'm yet uncertain about design patterns and when and where and how to use them. also studied MVC but feels a bit sketchy for me RN. I'm planning to start react since i have a good JS foundation i think and maybe that would make things easier.

@lavantien
Copy link
Author

i'm yet uncertain about design patterns and when and where and how to use them

A good rule of thumb is to start simple, and add things when it's utmost necessary. The same for optimization, beside common coding practices, optimization should only be done after proper benchmarking and profiling.

also studied MVC but feels a bit sketchy for me RN.

Yeah have strong foundation in the stuffs in section B is a humongous advantage. And to get the feel for certain concepts or patterns there'd be no better way than to just build (and actually finish) a lot of projects, either professional or pet projects.

I'm planning to start react since i have a good JS foundation i think and maybe that would make things easier.

Per my observation, React/NextJS + TailwindCSS is a cheat code to getting wed dev jobs nowadays.

@lavantien
Copy link
Author

buddhistanarchism

@lavantien
Copy link
Author

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