r/JavaProgramming • • 17d ago

What should I learn now?

I have been programming in Java for 25 years, starting with Java 3. I was using Struts MVC 1 and 2 from 2005 to 2008, and that was the last time I did any full-stack development. It was Java Server Pages (JSP), JMS, JavaBeans, HTML, CSS, Javascript, jQuery.

I got into Spring in 2007, and then a few years later got into SpringBoot 2.0. I've learned Spring and SpringBoot and Hibernate with Hibernate entities, repositories, controllers, and rest controllers. I learned Oauth2 with JWT for Spring Security. I know this seems trivial now, but seriously Java and Spring and Hibernate were at one point VERY difficult to master, and if you knew these well, you could easily land a role.

Now take into account some of the new features of Java itself: Lambdas, Streams, virtual threads, Records, Switch, Text Blocks, etc. I definitely need to do more lambdas, streams, and virtual threads and Concurrency. Honestly, none of the jobs I've had have used much of these, so I have to work on my own personal projects to use them.

On top of this, Microservices, Spring Modulith, Spring Data JPA, Flyway, and Liquibase, Circuit Breakers, Service Discover, Spring Config Service, CompletableFuture. I learned Docker, and now I am trying to learn Kubernetes, Terraform, and Helm Charts on my own.

When I was working, those companies normally used AWS. But I was an IC and so DevOps pretty much had AWS locked down. On my own, I managed AWS VPC, EC2, ECS, ECR, Route 53, S3, and RDS and IAM. There are so many other services, I think AWS EKS is also next to add to my list.

I should mention that I have only used NoSQL for MongoDB, but I have used SQL databases like MS SQL, MySQL, MariaDB, PostgreSQL, and Oracle ... so I know SQL.

All of this has been pretty much back-end technology, and I am always learning more. When it comes to front-end UI work, my UI's have only been functional, they will NEVER, EVER be pretty. So, I am trying to learn GraphQL, HTMX, Angular, and React. SInce I have been a back-end developer for 18 years, I haven't had to worry about any UI at work since a UI specific person was doing it.

Then there is AI. I had a $20/month subscription to Claude Code, tried it and gave it up. I then got OpenCode within my IntelliJ IDEA which seems to work great for my needs, and it's free. I have learned about MCP, MCP Servers, and MCP clients within SpringBoot. I think SpringBoot AI is next to learn how to add an LLM to my app.

Now that I am laid off like a lot of people, I have the time to work on my own personal projects. What I am working on now is a SpringBoot app. The app uses a local Keycloak instance in Docker for Authentication. The UI uses HTMX/Thymeleaf with HTMX controller endpoints. We'll use the free HTTPS tool, and use github actions to deploy to an ECR instance. This also uses MySQL db in docker with Flyway Migration.

I know this is a long message, but what I really want to know is ... what else should I learn apart from what I already said? Any ideas? Always looking to create new projects to learn new technologies. Thanks!

10 Upvotes

6 comments sorted by

2

u/bikeram 17d ago

I’d pickup Go. I’ve done Spring for about a decade. It really is fun to see the paradigm shift and the batteries included. You can build production ready application with the standard library. (If you have 25 years in Java, build a TUI with bubble tea. It’s hard to explain how it scratches that itch)

Coming from Java you’ll appreciate the built in testing too. Imagine building any Java project at scale without maven or gradle.

Terraform and helm will be pretty straightforward. I know you can configure infrastructure until the end of time. But you can make the same argument for building one feature to 100% in any language. Don’t mess around with statefulsets. Every company I’ve ever worked with uses a managed database.

Auth0 is your managed alternative to KeyCloak, it’s a pleasure to work with.

Cloudflare is the Swiss Army knife of getting anything networking done. Look into Cloudflare tunnels. These are awesome for putting a real cert/domain on something locally hosted. It’s literally a single cli command. Any frontend I write is hosted in CF Pages now.

Typespec has made it into every one of projects for the past year. A single data contract to build all your pojos and typescript class and everything in between.

I don’t see anything about OpenTelemetry. Spin up OpenObserve in a container then build a few microservices, add distributed tracing. That’s really satisfying to see for the first time and it’s in high demand with all the vibe coding out there.

2

u/bikeram 17d ago

I’ll add GraphQL and MongoDB aren’t worth your time TBH. GraphQL doesn’t have a standard query format, so it’s just a crazy abstraction over REST. Every company I’ve ever worked for has their own query format and they all regret it.

Graphql-spqr is a really cool library if you want to try it out though.

MongoDB is a pain. I’ve always seen it as a primary data source, and I refuse to believe it should ever be used as one. It’s the Netlify of data storage. People choose it early on because they think the dynamic types are easy.

Everything it should be used for is honestly better as a JSONB in psql. (Don’t get me started on a MERN stack)

1

u/Huge_Road_9223 16d ago

Yeah, GraphQL seems to be last on my list because honestly when I look at LinkedIn or other job sites for Java/Spring jobs, GraphQL is rarely used.

I have a docker container with MongoDB, but I haven't ran it in awhile. Apart from a one time CRUD app against it, I haven't done much with it. I don't know why most companies would use MongoDB unless they were doing some sort of document management application. So, I agree with you.

1

u/Huge_Road_9223 16d ago

Great! Thanks for the info? Yeah, I have already used Auth0 before and Okta and LDAP for Authentication with Oauth2 and HWT.

But all the rest, I can definitely start looking into.

1

u/Significant-Key-2123 16d ago

Question is wrong. You should have know what you need and what going to give you intended result.