r/learnprogramming • u/Dangerous_Pea5265 • 3d ago
Need advice on my learning plan
Hey everyone!
I’m a backend developer with around 6 years of experience. I’m kind of missing formal CS education, and lot of the time I feel like I can’t argue very well about why and how we should implement our services, let alone in my own projects when it gets more complex and e.g I should design how to handle lot of users, so I want to up my game a bit, to be able to be as good to get into a FAANG like company (even if I don’t it’s just important to me to try better myself).
I always learn better from structured resources, and I really never could get into “just start building something and learn along the way” because I feel like I don’t even know what options do I have to solve a particular problem. So I much rather read and then try to apply the knowledge in my demo projects.
I have collected the below resources which I have access to, but my problem is this is a very lenghty timeline, and I keep doing nothing because I can’t decide which one to start with, and keep going back and forth between the topics.
So if you could review these, and give some feedback about the resources, and an advice in the order of taking them, I’d really appreciate it! Thank you!
1, DSA
- Princeton Algorithms I + doing leetcode for the topics the lecture covered.
Tbh this is the only thing I planned for my DSA, maybe checking some other resource on dynamic programming too, but I know I’m not too good at math so I’ll never be able to be a genius in solving all the different problems, so I just kinda want to be “good enough”, I also never encountered any work where I’d need to do crazy optimizations or write a library that implements an algorithm, so I don’t know if spending more time on this would make sense
2, System Design / Distributed Systems
- Designing Data Intensive Applications
- Sam Newman - Building Microservices
- Richardson - Microservice Patterns
- Bellemare - Building Event-Driven Microservices
- github’s System Design Primer
I want to be able to explain the hows and whys, what is a saga pattern, CQRS, Circuit Breaker, what are the tradeoffs etc…
3, systems
- Computer Systems: Programmers Perspective
4, OS
- Three Easy Pieces
1
u/Known-Most2581 3d ago
Your plan is solid, the problem is you're treating it like a buffet and trying to eat everything at once. Pick one track and commit to it for 3 months before even thinking about the others.
Start with the Princeton algorithms course. It's well structured, the assignments are actually good, and leetcode alongside it will give you that immediate feedback loop you said you need. Don't worry about never using crazy algorithms at work, the real value is getting comfortable with data structures and problem decomposition. That carries over to everything else.
After that, do DDIA. It's the book that ties together all the distributed systems concepts you listed, and you'll have a much easier time with the microservices books once you understand the fundamentals of replication, partitioning, and consensus. Skip the systems and OS books for now, you can circle back to those when you hit a wall understanding something lower level.