Should I learn Spring or Spring Boot is the Wrong Question
There exists a lot of confusion about Spring Boot and its relationship to the Spring Framework. Some of that lead to questions like “Should I learn Spring Boot rather than the Spring Framework” or “Do I need to know Spring before I can start with Spring Boot?”.
This article will bring some clarification and also shows you a solution on how to approach the learning path from a better angle.
TLDR; Spring Boot is just a way to rapidly starting new applications using the Spring Framework. It is not a replacement or alternative, just a way of starting quickly. It also makes it easier to dive into the Spring world as it automates much of the tiresome manual configuration of yesterday. You’ll pick up the rest of the Spring Framework on the go anyways - as a by-product of actually building something. Will you know anything? Probably not, but who does?
I’ve been working with Spring for a decade now, and I think the basics aren’t that complicated at all. However, I know from the outside it seems like you must know a lot to get even productive. It is complex, like any other Framework or toolchain out there. There are a lot of modules for many use cases. Yet, you don’t need to know many to get started.
Furthermore, I think many developers are approaching this from the wrong perspective.
The first issue is that many developers think they must truly understand every nut and bolt of a Framework before they can start to build even the simplest application. It’s looking like Mt. Everest and exploring it in theory before taking a single step. It is a daunting task - they buy books or videos and torture themselves by reading thousands of pages or watching hours of videos.
And at the end, they got the “read the book” achievement but actually did not get any further. They still can’t actually code a tiny simple application, not even the simplest of the simplest CRUD REST service with Spring Boot.
Maybe in theory.
But what is that worth?
Your boss or client does not care if you can code it in theory. They care that you actually deliver.
And you can only learn to deliver when you start building applications with it.
A few fallacies are at work here with the binge theory learning.
First, no one does ever know everything about Spring or any topic at all. Not even the masters or devs of it know everything. It is impossible. When you ask specialists in any field, it’s not Spring only, they still think they don’t know enough about their topic. The more you learn, the more you know what you don’t know.
In Spring, we’ve got Core, MVC, Security (several modules), Data, Data JPA, Cloud, and a bazillion more. Do you need to know all of them at a masters level to build a simple Web app?
Second, you don’t need to be a master or have extensive knowledge for starting out and learning. No one, not even the masters did start as masters. All started on the same ground. However, the masters did practice and persist.
They start with the fundamentals.
And then apply them.
In Spring, the core fundamental is to understand what Spring actually does at its core. What real-world problem is Spring Core actually solving? How does it do that?
Nothing more, nothing less.
All the other modules are nice to have stuff. Nonetheless, besides the concept and some basic understanding, you don’t even need to know how to do it in Spring alone as you will pick this up with Spring Boot anyways.
It is everywhere, you can even miss it.
Spring Boot is based on Spring and thus based on the same concept.
Third, you don’t need to be a master to get productive as a developer with Spring.
I’ve met many developers who can develop web apps with Spring MVC and Spring Data JPA but have no clue of Security or Cloud. Yet, they still do their work effectively.
Fourth, massive consumption of resources does only do one thing. A buffer overflow in your mind and the typical result is that you start to procrastinate and after some time just move on. Have you ever wholly read one of those 400-page gorillas?
That’s indeed the most significant obstacle here. IMHO this massive consumption prevents any action. What works best for me is to have an actual achievable goal. It should be a small one like building a simple CRUD app on a topic you know; nothing fancy, just plain old CRUD. You don’t even need a UI for that.
Important is that you have a simple goal and you actually build something.
Depending on your style, you can either now hack away and do research on the go like I usually do or layout a learning plan for you like John Sonmez does.
How could that look like for a developer wanting to learn Spring Boot and Spring starting from Zero?
- Check the concepts from above if you aren’t familiar with them. dependency injection and Inversion of control
- Understand the basics of the Spring Container
- Understand what an application context is in Spring
- Build an easy application with it
- Move to a Spring Boot tutorial
Or get a kick start by taking my FREE Email course for Spring Beginners. You will learn the fundamental concepts of Spring Core and get ready for taking Boot.
Want content like this in your inbox each workday? No BS, spam or tricks... just useful content: