Interviews with our VCIs: Nico Rampelbergh

Today it’s time to introduce you to our last VCI, Nico Rampelbergh. Nico is a Java consultant at Faros. He has 20 years of experience in the world of Java, from J2EE over Spring to Spring Boot, in roles varying from software developer, technical lead, architect, and Spring teacher.

Nico, when was the first time you came into contact with the Spring framework? And what was the context in which you started using Spring?

“It was a very long time ago, I think it was even Spring 1.0.0. That must have been about 15 years ago, those were the early days of Spring. I came into contact with Spring while I was working on a project for a client. I still remember that story vividly. This client did not want to use Spring at all, and they still were not using Spring last time I heard. They worked with pure J2EE applications only, and that’s their choice of course. But for this particular project we were working on, the senior developers on the project convinced the client that this project wouldn’t work with a J2EE application. The application needed to function standalone because it was supposed to handle big volumes of data, which would cause their single 2EE container to die quite quickly. Eventually, the client allowed us to use certain components of Spring. They were very strict in which components we could use and which ones were off limits. For example, we weren’t allowed to use AOP (Aspect-Oriented Programming), which is basically the whole principle the Spring framework is based on. They went quite far in controlling that we remained within boundaries, even if Spring’s internals went outside of that box… And that’s how long it’s been since I came into contact with Spring for the first time. (laughs)”

How come that client was against the use of Spring?

“I don’t know if I would call this client against Spring. Spring is actually based on Rod Johnson’s book ‘Expert One-on-One J2EE Design and Development’. Rod Johnson didn’t like the J2EE standard, and wrote a whole case against it in his book. The book came with a CD that contained the first version of Spring. It was a dependency injection framework with the advantages that Spring still offers today, and on which the whole Spring ecosystem was built. They decided to use the J2EE standard with Oracle, so they made that choice back then and stuck with it. They are still happy with their choice last time I heard from them, and they use it consistently throughout all their projects. Which is good actually, because I always tell my students: whatever choice you make, be consistent. Unless for a very good reason, like our project.”

How do you experience working with Spring during your day-to-day job? Do you see certain advantages or disadvantages?

“Spring made a lot of things easier. With the J2EE standard, you had to write a lot of code to develop your application’s base. What Spring does very well is making your life easier. The framework is written in a way that it provides hooks that allow you to plug into, and you only write the core of the things you need in your application. All integrations that were added later on made it even easier to develop an application.”

“Spring Boot makes your life a lot easier as well, because there’s no need to find out dependencies anymore. But sometimes Spring Boot takes it somewhat too far, in my opinion. It starts making decisions in your place, and these are barely mentioned in the documentation, or even not at all. I recently experienced that firsthand: we were working on a project for our newest client, and we were integrating caching with Spring Boot. We forgot about one little detail which caused an error, but Spring doesn’t mention any issues on startup. Instead, there’s a whole fallback system that is usually quite handy, but one of the last steps in the fallback process is that Spring provides its own implementation for caching, and that’s not what I wanted at the time. Most people won’t care about that because the final product works, but I made a whole configuration only to discover a different cache manager during debugging. You will discover things like that if you test your application thoroughly, but I personally find that Spring Boot takes it a bit too far with their fallback system sometimes.”

If you had to pick a favourite feature of the Spring Framework, which one would it be?

“Hmm… I don’t think I have a favourite. What I like the most about Spring is the whole concept of making things easier in a consequent way. They have implemented database integrations over the years, and there are many types of databases available. But these implementations are all quite easy to find and use, and you still have plenty of choices to customise what you’re developing. I haven’t even worked with half of what the Spring universe has to offer because it is so big, so it’s impossible to pick only one favourite feature… So I would say I’m a fan of Spring’s ‘core’, actually.”

How do you see the Spring Framework evolve in the future?

“Well, I don’t have a crystal ball. (laughs) But most of all, I think we can say that after 15 years, Spring is definitely here to stay. We even see Spring’s principles being applied to other technologies, like .NET. As long as Java is a popular language to develop applications in, the Spring framework won’t disappear. And that’s a great advantage.”

Can you give us a useful tip for people who want to get started with Spring?

“Attend the Spring Core course! And I’m not saying that because I want to advertise the course. I have attended many courses during my 20 years in the field, and most of those weren’t nearly as good as the Spring Core course. The labs for example are really well-designed. What I find particularly great about the labs is that the same assignment is compiled in 3 different formats: one rather vague version which makes solving it more difficult, one intermediate version, and one easy version that shows you the different steps you need to take to solve it. If you don’t have a lot of time or just don’t feel like it, you can choose to go with the easy version: just follow the steps described and you’re done. If you’re in for more of a challenge, you can go for the intermediate or the hard version. And if a student has trouble making things work, the labs make it quite easy for the instructor to see where the problem is, which means we can help our students quickly.”

“I actually only attended the Spring Core course after I had a couple of years of experience with Spring already. I decided to attend the course to obtain the certificate, and to eventually start teaching the course myself. Even though I already had quite some experience, I still learned a lot of things from the course. I think that’s because you have 4 days time to learn things in a structured way. And structure, that’s something that really works for my brain. I encountered things during the course that I was already familiar with, but the course made me understand the why behind these things, which is very important. So if you’re looking to make a career out of Spring, I would recommend you to invest in yourself and attend the course, or to look for a company that is willing to invest in the course for you.”

Before we wrap up, could you give us one last tip for people who have worked with Spring before, but want to take their knowledge to the next level?

“If you’re working with Spring a lot, I think the next step is to either transfer the knowledge to others by becoming a teacher, or to start contributing to the Spring framework. That’s not very easy, I know that. We’ve tried to contribute to the framework with Faros as well, but all of the libraries usually already have a group of people working on it already. But you could also contribute by writing documentation or a blog post, for example. If you do it often, you could become a Spring ambassador, which will bring you into contact with other people you can learn from again. A win-win!”

The Campus, Charlotte Van Rompaey 17 June, 2021
Share this post

When to join an AWS Discovery Day