Craig Walls is a software developer at Pivotal. He’s a popular author and a frequent speaker at user groups and conferences. Craig lives in Castle Rock, CO.
Lynn: You’ve been writing about Spring Framework for a long time. Why have you stuck with it?
Craig: I began using Spring because I could see that it made working with J2EE easier. By encouraging loose-coupling through interfaces, dependency injection, and aspect-oriented programming, Spring made me a better programmer.
And then Spring did something really cool: It kept finding ways to simplify other kinds of programming tasks. It didn’t stop at making J2EE easier…Spring has sought to make the entire Java ecosystem easier.
This means that (among other things) working with security, various types of databases, data integration, and now cloud-native microservices are all areas Spring has made easier for developers. And I’m excited about where Spring is headed now with regard to reactive programming.
Lynn: Where does Spring Boot fit into picture? Do Spring developers really need to learn it?
Craig: While Spring has been making Java development easier, it also has a strong track record of making itself easier. Prior to Spring Boot, developers would be required to write a great deal of configuration code (In XML, Java, and/or Groovy) to instruct Spring on how to wire up various components and capabilities. But with Spring Boot, many common tasks go away and as developers we can focus on writing the code for our applications’ unique business needs.
Lynn: What’s the most exciting thing going on in the Spring community?
Craig: I’m especially excited about the direction Spring is headed with reactive programming, coming in Spring 5. I’m still trying to get my head around all of it, but I love the idea that I can write a non-blocking service using nearly the identical programming model in Spring MVC that I’ve used for years is wonderful.
Lynn: What are some of the most frequent questions you get asked about Spring?
Craig: I’ve been asked several times if I think that there’s too much “magic” in Spring Boot. That is, with Spring Boot auto-configuration, shouldn’t I be concerned that the framework is hiding too much detail and thus making Spring even more confusing? Of course, as a fan of Spring Boot I reply “No.”
When I drive my car, it’s unnecessary for me to fully understand how the engine works or individual components that the engine is made up from. Certainly, there are some people who enjoy that kind of detail, but for me it’s sufficient to turn the key, pump the gas, and steer my vehicle from one place to another. I take advantage of the abstraction (ignition, steering wheel, pedals) trusting that they properly coordinate with the underlying mechanics of the automobile.
The same can be said of Spring, Spring Boot, or any framework or library. In all cases, we choose to use various frameworks/libraries because they save us the hassle of having to do the dirty work ourselves. They provide a consistent abstraction on top of something we’d rather not deal with on a day-to-day basis. It may be useful to understand what is being abstracted (in fact, I encourage it). But it’s unnecessary to stop using the abstraction out of concern for losing context of what is being abstracted.
In short: Trust the abstractions provided by Spring and Spring Boot, trusting that they properly coordinate with the underlying complexities of software development.
Craig: I’m a member of the Spring Cloud Services team. We take the open-source Spring Cloud project and package it as production-grade services in the Pivotal Cloud Foundry marketplace. This frees developers from having to write and maintain their own registry, configuration, and circuit-breaker services and instead lets them focus on writing microservices that take advantage of these services.
Lynn: Where do you see yourself in five years?
Craig: Honestly, I’ve always disliked this question. And as technology advances continue to accelerate, I hate it more. It’s impossible to predict, even with a reasonable margin for error, what the future will look like in 1 year, much less 5 years. Even so, I expect that I’ll still be developing software, working with Spring, and writing and speaking about it as much as I can. In short, I’ll be doing what I do now, only I also predict that I’ll be doing it all very very differently than I do it now.
Lynn: Sorry about the five years thing. What do you wish I’d asked you instead?
Craig: I was hoping someone would ask me about my recent trip to Disney World, but since you didn’t, I’ll keep it to myself. 🙂
[Note: I did ask Craig about Disney World after the interview. He’s quite a good photographer and has gorgeous vacation photos. You should ask him.]