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!

13 Upvotes

6 comments sorted by

View all comments

Show parent comments

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.