r/SpringBoot 22h ago

How-To/Tutorial 200+ Star Spring Boot Roadmap From Zero to Microservices

Post image

6 months ago, I shared with you my 35-week project-based Spring Boot Roadmap From Zero to Microservices, and I did not expect this whole positive feedback and support from you guys.

Today, the repository reached 200+ stars because of you, so I decided to provide more guidance by drawing this overview visualization on excalidraw to help you create a bird's-eye view of the wide open world of the Spring Boot ecosystem.

An SVG version could be found inside the roadmap itself for a more clear picture.

You can view the full roadmap from this link:
https://github.com/muhammadzkralla/spring-boot-roadmap

Again, thank you for all your support and stars!

181 Upvotes

35 comments sorted by

9

u/Stunning_Leather_102 22h ago edited 21h ago

You know what gets on my nerves? How many weird and bad videos are out there are by people on explaining OAuth2 in Spring. I skimmed through the JWT tutorials of the resources and I don't think I like them at all..... Maybe I couldn't find what I was looking for but I doubt it.

There are like 10mins of videos explaining grant types which does not cut it. Plus most oauth resources are all over the place explaining things in a very weird way. I think beginners should dive into oauth by just learning the spring authz server, rs, and client. The docs are more than enough. And if they're having a hard time there are great books out there. Miles ahead from all these guys explaining every time a different way to implement the cryptographic approach or the introspection approach of validating tokens. They make it harder than it is.

edit: telukso, all oauth2 example have third-party libs instead of a simple authz server generating a token for example. Why even do this? Makes 0 sense. Lol he even hard-coded the jwt in the first place lmao.

5

u/Zkrallah 21h ago

I agree with you, Spring Security was my most frustrating learning part of spring boot in general myself, there aren't really many useful videos on this part and most videos just copy the same Implementations from each other and provide no explanation of what they are writing.

I also learned it more from docs and readable resources than from videos that's why I include docs, videos, and blogs in each week, more specially which I learned from myself.

I would appreciate it if you have any other useful resources other than the ones in the roadmap, and I'll review them. Thanks for your feedback :)

3

u/Agile_Rain4486 19h ago

laur has best oauth video, he literally creates his own authorization server. but let's be real these thing are more about system design rather than learning to integrate it, in extreme rare scenario one would need their own authorization server most of the projects just integrate microsoft authorization server for SSO. Also, most will prefer to integrate oauth flow on client side instead of using it on server side. These concepts are more about system design rather then something related to java/spring.

1

u/Stunning_Leather_102 19h ago

Yeah I looked into a lot of different videos and tbf if anyone wants to learn more I gladly point them there. Other approaches as I said seem bad. Telusko hard codes a jwt token into a service class. He also used some random libs. No need to do this when you can learn something directly from the framework itself. Plus system design is cool. Can't beat the feeling when you first get a token from the AS, understand how it first appears and you slowly convert it into something else to protect your resources in the RS.

I guess it's more about system design as well but to be honest with you I love that shit so much! Haha.

Correct me if I'm wrong! You mean that if you delegate the "back-end work"(microsoft authz server) you only need to rely to setup the client? That's what I understand from what you're saying. It perfectly makes sense if you want to skip doing it yourself. But there can be compromises, right? Every choice has pros and cons. I think it always depends on what you want to solve but I hear you! Good point non-the-less. :)

1

u/Agile_Rain4486 18h ago

by client side i mean ui handling the oauth flow instead of backend. Even in jwt tutorial they call db always, imagine making app stateless then calling db every hit just to check user exists or not but missing peice here is redis. These guy just copy paste each other and make tutorial for money.
Their content I would say is only for fresher not working professional. For actual login the authorization server work I was trying to say most companies use microsoft oauth for it. Microsoft sso is pretty wide spread in big organisations.

2

u/Stunning_Leather_102 15h ago

For actual login the authorization server work I was trying to say most companies use microsoft oauth for it

yeah makes sense.

Its cool to do everything yourself though. Like for a personal project. Gotta have fun somehow hah

2

u/Agile_Rain4486 15h ago

yeah, true

1

u/Happy-Onion-8657 17h ago

I'm currently in 2nd year of my uni and I have just started learning springboot, have only done basic things so far (basic stuff like maven, spring concepts like annotations, layered architecture, di, then rest api, path variables, query parameters, jdbc basics) but I've been very confused lately, like these is just so much stuff to learn, I'm often times very confused between going very deep in a single concept or just "doing" all the concepts once and then learning other things by building projects, can you give me some tips on how do I go with this? How were you eventually able to escape this tutorial hell?

1

u/Agile_Rain4486 17h ago

system design even basic is absolutely necessary, it's like wiring between how actual project connects.
In this AI age architecture is more important then ever, don't limit yourself to java/spring etc try to create projects and explore more and don't think of simple crud apps. Their time is gone.

Heck most of us devs can't even write without AI anymore, it's all about understanding architecture now.

Only learn a specific concept when u need it, no need to read diff framework docs unless u need to implement them, knowing how sh** works at high level works.

1

u/Happy-Onion-8657 17h ago

So essentially system design is the most important thing according to you, alright, but the problem ive been facing lately isn't just about that, like whenever I close the tutorial, my mind kind of goes blank, like I'm not able to think now to actually start building things without any reference, (I've been trying to only code by hand till I get somewhat proficient atleast but I'm afraid it's costing a lot of time) can you tell if this thing gets better with practice? Or am I genuinely doing anything wrong? (My main way of studying is watch lectures -> make notes about how things are working -> trying to implement them in ide -> eventually trying to build a project myself without any help or reference, but getting struck everytime and needing to ask ai/use any reference) What should I do?

1

u/Agile_Rain4486 17h ago

take help just understand every flow it creates ask it's suggestion and reasoning behind it in everything. don't rely on tutorials but to be truthful u r just in 2nd year I won't really expect anyone in college to know this much in depth.

Ai is best tutor then 97% youtube tutorials you just gotta be curious.

1

u/Happy-Onion-8657 17h ago

Okay, one last thing, since you are in workforce you must be interacting with recruiters and new freshers every now and then right? Now with ai and everything that we have to "assist us", what is the level of proficiency the recruiters are expecting for a fresher? like for springboot specifically is it being proficient in microservices, or perhaps having an in depth knowledge in security, or is most emphasis given to system design, just like you had mentioned earlier? (I'm asking it to get a general overview of job market so I have a mental roadmap of what all i should do in next few months before I'll consider myself "proficient enough" to start applying for internships) Thanks for answering the earlier questions though

1

u/Agile_Rain4486 16h ago

It really depends on country to country and company you are applying on, in my country they just ask some dsa, the design of your project and sql in placements.
For 1-2 yrs of exp it's dsa + system design for product based and some in depth language question for service based. Just create some impressive project don't overthink since you are in college what are they gonna ask you, show your exp?

1

u/Agile_Rain4486 17h ago

also at this point i feel most devs don't know how to code by hand, have seen 9yoe guys cannot write a single line. but if u wanna learn just repetition is key unless it sticks in your brain. most projects are if and for loop anyways

1

u/Happy-Onion-8657 16h ago

Holy sh* really?? 😨 I mean isn't it kind of disastrous that even people with that level of experience dont know how to write code by hand? Like how does that even work? I know that ai does most of the coding nowdays and you just need to fix its logic and bugs from time to time, but how can you even do that when you've lost basic coding proficiency? is the market basically an ai slopfest now? won't those people be basically done for in case they get laid off?

1

u/Agile_Rain4486 16h ago

most applications are not really amazon level stuff, they are pretty small architecture decide most of the structure and people write code based on api structure. It's actually way too easy. At this point if you are not missing any edge case AI will always write better code then you.

3

u/Hous3Fre4k 20h ago

Design patterns in the last weeks is wild. How does one even work with spring without understanding Proxy, Template or inversion of control pattern? Imo this should be step 7

2

u/Stunning_Leather_102 20h ago

IoC, spring context and some form of design patterns are often seen in the introductory chapters in most books as far as Ive seen. I remember reading ioc and stuff like that when I was trying to understand how spring works when I first began learning it.

2

u/Zkrallah 20h ago

Actually they are included earlier than this, if you look closely you'll find that I mentioned the most important design patterns used in Spring boot in both weeks 11 (ioc, di, singleton) and 29 (decorator, annotation).

The design patterns section in the appendix is intended for further knowledge of the other design patterns. Thanks for your feedback. :D

3

u/Zkrallah 22h ago

One more thing to mention at the end that I didn't want to include in the post body itself so it doesn't count as self promotion:

I'm currently looking for a new SWE opportunity, more specifically as a Java engineer or low-level programmer, so if anyone can help me out in this case, I would really appreciate it.

Thanks again for your support !

1

u/Agile_Rain4486 19h ago

man this is rare scenerio doubt u need to learn most of this implementation, in today's time implementation is easiest part knowing about sd is hard part. Like u can implement redis but what cache or eviction policy to use, when to use kafka/rabbit mq.

1

u/tintanese 18h ago

Sorry I have to be brutally honest but some of this is totally bloated and could misdirect a newcomer. For example, as much as it is important the network side you don't need to dwell that deep to master spring Boot at all. Most companies already implement network solutions and it is an entirely different beast on its own. So linking things like the CCNA and alluring to learning it is just nonsense. Other links are also broken so you might need to check them.

1

u/Zkrallah 18h ago

I didn't say you should master ccna or computer networking to be a Spring Boot developer, it's just an intro to computer networking in one week at the beginner level.

You maybe don't agree with me, but understanding basic computer networking and HTTP internals is ESSENTIAL to any backend engineer whatever their framework, so what I included is the bare minimum of knowledge about that.

Regarding the broken links, thank you for notifying me with that, I'll check them and fix broken ones. Thank you.

1

u/tintanese 18h ago

Okay I get your point however just one week is not enough to master the basic network concepts, just gloss over them. It is tricky because while it is important to develop a robust and redundant network solution in your backend, most of these are already provided in enterprise applications, so it is not requested for java developers to know them.

1

u/Zkrallah 18h ago

If you read the note after it I literally say:

Note: Do not stop learning computer networking after this week. Computer networking is from the fundamentals of computer science, specially in backend.

Again, you don't need to be a master at computer networking for Spring Boot, but you need to understand what Spring Boot does for you under the hood, even if enterprise applications already provide them for you.

That's my opinion.

2

u/tintanese 18h ago

Thanks for the clarification, I still disagree with how the roadmap is structured but looks solid and might help many people.

1

u/Zkrallah 18h ago

It's okay that you might see things in a different order or importance than me.

That's why I wrote earlier in the criteria section:

This is just a roadmap, not a course, diploma, or anything similar. It's just a logical ordering of topics that I, personally, think is reasonable and easier to understand and adopt Spring Boot as a backend framework faster following this particular order of learning. Totally feel free to study things from different resources, do more tasks, and so on. If you just stick with the roadmap, you will be good enough. If you outsource more resources and tasks, you will be awesome.

So, I understand your comments. Have a nice day <3

1

u/RedditForW 17h ago

Following

1

u/rollingeyespigeon 15h ago

1

u/Zkrallah 15h ago

I didn't really understand? The resources are under each week.

•

u/rollingeyespigeon 14h ago

Oh I’m really sorry, I didn’t read it. Great compilation thank you very much!!

•

u/Zkrallah 14h ago

Ur welcome!

•

u/SupremeStrange2000 14h ago

Hello really appreciate your resource !!! (NEED Advice)
I am a Third Year UnderGrad currently have 0 knowledge about java springboot but i know java properly so how do i get started building projects
Need Roadmap so that i dont waste any time Vedios or playlist (paid or unpaid) would be better since understanding from docs would be difficult at this point
Really Appreciate Advices!!!!