VMware offers training and certification to turbo-charge your progress.Learn more
Just starting your dev career? Check out this last report on the JVM ecosystem. Simon Maple, Andrew Binstock, and many others have done developers of all skill levels a great service with this data.
<@snyksec>Mirror mirror on the wall, which is the most popular Java web framework of them all?— Simon Maple (@sjmaple) October 19, 2018
<Mirror> We live in a Spring-world. In fact, the average application is more likely to use Spring than not! 54% of apps use Spring Boot/Spring MVC/JHipster.https://t.co/2dkjt6xauK pic.twitter.com/KcMYWew6Jk
I'm a long-time Spring developer, and I've advocated for it for the last 10 years. It's no surprise how widely adopted it is. Spring Boot dominates the Cloud Native Java ecosystem. Download numbers keep growing at unseen rates. In fact, according to the survey, there are more people developing using Spring technologies than not. It's a great time to be a Java developer!
I could be happier though, so let's get to the reason of my concern. Take a look at the tweet below:
So easy for me to jump on the "next thing" and forget that folks are always entering our field and learning the first things. Here's a great @digitalocean tutorial on SQL queries ... https://t.co/t65H4BXMMm— Richard Seroter (@rseroter) October 18, 2018
Based on the report, 38% of respondents are younger than 35. Almost 1 in 5 younger than 30. And while I love to talk about how Reactive development patterns can make your applications more scalable (amongst other things), I do have to tell myself that there is a huge number of folks that are just starting their careers in software engineering. These folks need introductory topics, not black-belt level training.
How is the Java community doing at engaging these emerging developers? I believe that the overall JVM ecosystem with its communities and vendors - with myself included - have been doing a less than optimal job and this might not be a popular opinion. I believe we have more work to do to make technology accessible to new and fresh engineers. Consider the data from the aforementioned report: only 1% of respondents are under the age of 21 and to me this is troubling. According to the US Bureau of Labor Statistics, around 5% of software developers and programmers are 24 and younger which hints me that the 1% needs to at least double.
I'm not proposing any long-term fixes in this post other than having a mindset that is inclusive of all ages. But I do want to share some of the essential assets that can help developers get their collective head around Spring and Java. These videos and articles are excellent resources if you're just now starting software development. If you have heard of Spring - but also have no idea what it is or does - these are for you, and remember, it's ok to be an apprentice.
My first recommendation would be to start understanding the basics of Spring Framework and Boot.This video does a great job at that:
The video contains a good amount of information condensed in less than an hour. Consider that time as an investment you are making in yourself. As a personal tip, I often watch these videos at 1.25x speed and will slow it back to 1x when the content is more complex.
If you watched that video, you certainly heard the word 'Maven' a few times. I remember a point in my career where Maven was starting. I also had doubts on what it is and what it does. Here's a quick 5 minutes primer on maven:
Your application needs to store data somewhere.A database is a great place to do that. As @rseroter mentioned on his tweet, the team at Digital Ocean has done a pretty good job at introducing SQL and MySQL in this blog.
I'm sure that if you're starting with these videos and blog, you might think that there's a lot of magic happening behind the scenes. That is a good thing!
Most of the work done in Spring Boot (which helps you bootstrap Spring applications) was done so that the barrier to entry is much lower. Especially when compared to 'traditional' Spring. The value proposition for Boot is even better when compared to older Java EE servers.
How does Spring Boot do this? Boot makes a few decisions for you. This abstracts massive amounts of complexity.
Finally, my personal favorite: Bootiful Development with Spring Boot and React
At the end of this tutorial you will have a working application with a React frontend and Spring on the backend. As a plus this tutorial also includes authentication with Okta.
For those looking to get involved in contributing to Spring Boot, the github repo might be a bit overwhelming. In fact, you might be asking yourself: how can I possibly get involved here? We have a tag just for this scenario: ‘first-timers-only’. We will occasionally tag issues in the repository with this label to indicate we'll help you if you're a brand new contributor to the project and facilitate your onboarding with the tech. Here’s an example: https://github.com/spring-projects/spring-boot/issues/14599. Most projects also use an
ideal-for-contribution label to help existing contributors find issues that we really want help with.
This is a callout to all of you seasoned Spring developers. How can we make the Spring community more inclusive for the younger generation? People need to feel comfortable about starting today with Java technologies. I want to help, let me know if you also do!
If we do this right, the next JVM report show that the JVM ecosystem has evolved to include a more diverse range of developers. And more voices means that more points of view are represented, which makes our software collectively better.
I would love to see what you have used to learn Spring, so let's collaborate on the comments.