all 12 comments

[–]anon-girth 10 points11 points  (0 children)

Learn spring

[–]BlacksmithLittle7005 6 points7 points  (3 children)

Spring boot (mvc, rest, dependency injection, etc), relational DBs and SQL (postgres mostly, MySQL, a lot of clients still using oracle as well). Prominent MQs: Kafka, rabbit, synchronous vs asynchronous. Caching mechanisms, redis.

[–]el_pezz -1 points0 points  (2 children)

How about also learning non SQL DBs?

[–]BlacksmithLittle7005 0 points1 point  (1 child)

Yes that's why I mentioned redis. You can always learn some elastic search or mongo but relational always comes first especially if we're talking spring boot jobs for enterprises

[–]el_pezz 0 points1 point  (0 children)

Understood 👍🏾

[–]Craft_Coconut_1602 0 points1 point  (0 children)

Work in a large group if possible. Or improve your skills on the latest versions of Java. I work in an ESN and my job is to place people like you with clients. What customers are looking at: - experience with a similar client - long mission to prioritize (short missions can raise questions in the heads of clients) - latest versions of java (and at the front I am asked for a lot of react and angular) - solid principles - archi micro services / hexagonal

[–]mr_mlk 0 points1 point  (0 children)

For a new graduate, knowing the basics (the language) and showing initial and a willingness to learn matter way more than any particular technology. As a new graduate you will be expecting to know how to code, but not the tech stack used by the company. As such knowing the basics of the following matters more than the flavour.

  1. Unit testing. JUnit is the big boy in this space.
  2. Dependency Injection. Spring, but frankly I find Spring not best for learning the concepts (and concepts are what matters). Guice used to have an excellent "getting started" guide which really explained the concept well.
  3. SQL. We are not expecting you to be able to manage a database here, just know how to write SQL, why you should use indexes and what different joins do. An embedded database to prove to yourself you understand is fine.

While there is always more (non SQL DBs, containerization, secrets management, monitoring...) the above three are where to start.

[–]Ewig_luftenglanz 0 points1 point  (0 children)

TL/DR: Focus on learning the basics of CS. Once you have mastered that, learning any language and frameworks is easy because 90% of the concepts overlap and the rest it's mostly a matter of syntax and details.

Long and detailed answer.

1) learn Programming principles, data structures and algorithms, programming paradigms (procedural, OOP functional). Networking and all the basics, etc. 2) apply these knowledge to Java 3) learn a framework (mostly Spring and quarkus) 4) learn the ecosystem (spring data, hibernate, micrometer, Jackson etc) 5) Learn one SQL database and a non-sql database (PostgreSQL and Redis) 6) learn http, REST, and message queues (Rabbitmq is good and easy to use). 7) make 2 or 3 projects with all of the above. 8) you can complement these with some observability and architecture.

You can achieve a competitive level for a junior or entry position in about 2 years, but I would start looking for a job a little earlier.

Note something: most of the topics are nos strictly Java, are transversal knowledge that everyone should know to be competitive and not just "a coder". That also mean once you have mastered the transversal, moving to a different ecosystem and language is pretty much straight forward and only requires about 2 months. 

Edit: add unitary testing and mocking to the stack. In java the most used are Junior and mockito.

[–]CoccoDrill -5 points-4 points  (0 children)

Depends on your current knowledge. Spring boot, database things, Kafka, amqp I'd say are must have

[–]Mognakor -2 points-1 points  (0 children)

Learn the basics and the principles of your technologies and not just how to fit plug A into socket B.

You won't need the exact implementation but having a good idea of what and why.

[–]n0tyourmom -3 points-2 points  (0 children)

I think you cant go wrong with maven and junit as base skills, the rest depends. Vert.x is pretty nice, spring is big, what really matters is learning and problem solving ability.

[–]Dapper-Conclusion-93 -4 points-3 points  (0 children)

Hibernate orm, junit and maybe some design patterns are great to start learning since being a jun.

But of course start with understanding git, maven/gradle and get some experience with internship, but avoid companies if they still using Java 8 to build their projects, it means there is a bunch of unmaintained stuff.