A senior Java developer and Java tutor at Learning Tree International programming courses.
What does a potential Java junior need to know to get their first job or even qualify for a trainee position in a good company? What tools will help a Java programmer reach the next level? Which technologies should you study, and which ones are better to hold off on?
There is no standard answer to these questions, just as there is no single action plan that would suit absolutely everyone. Some companies are striving for development, constantly introducing new technologies and testing the capabilities of new versions of the language, while others stubbornly cling to old ones. There are also middle options, and perhaps these are most of them.
I get asked this question so often that I decided to write an article that I can then refer to in order to answer it. In addition, it will be useful not only to those who ask me personally but also to everyone who has already decided (or did not decide in any way) to connect their lives with Java programming.
To answer the main question of the article as completely as possible, I relied on:
Core Java usually means the basic foundations of the programming language. It contains the following components.
Java syntax is a kind of ABC of this language. Students learn it by doing, like little children learn to read and to write. The most difficult concepts here are the principles of programming, such as loops and branches. They could be tough for absolute beginners, but usually after coding some tasks, future programmers start to get a feel for them.
Before they get their first job offer as a Java developer or Java trainee, 92.4% of programmers know Java syntax on a good or excellent level. What about the other 7.6%? They knew it on an intermediate level and were lucky enough to get a trainee offer. However, it’s pure luck. Every applicant must be fluent in Java syntax, and thank goodness it’s fast and easy to master.
Java and OOP are almost synonyms because everything in this programming language is an object.
If you’re used to procedural programming, it can be tricky at first to rearrange and think in object style. However, in fact, OOP is not so difficult. Moreover, it is a very beautiful concept. It’s important to write a lot of code and at the same time think about how object hierarchies are built.
The main subtopics of OOP are class inheritance, interface implementation, abstraction of data and behavior, encapsulation of data and class implementation, polymorphism, and virtual methods.
Most (80.3%) of the people who get their first Java-related job have known OOP principles well and used them all the time.
However “good knowledge” sometimes can have different definitions depending on your experience. “I read about OOP and used inheritance and encapsulation. I thought I knew it well, but I realized that I seemed to know something before, but did not understand the nuances. A real deep understanding of the levels of abstraction and how to use them came to me only during the work as a Java trainee on a big project,” said Andy, who now works as Java junior for one of the international outsource companies.
According to the CodeGym Portal survey, 78.8% of Java juniors and trainees use OOP in their job very often, 12.1% from time to time, and 7.6% of trainees use them rarely (usually they work with unit testing and different small tasks).
A group of individual objects represented as a single unit is a collection. Java provides a collections framework for different collections. Collections are based on popular data structures: lists, regular and connected, sets, hash maps, and so on. So while studying collections, it would be nice to get a little more familiar with data structures as well.
The main difficulty in learning about collections is figuring out how they work and when to use which structure. It comes with practice. In addition, of the entire multitude of structures in real work, only a few are constantly used. As a tutorial, it can be useful to recreate your own version of the collection. Almost all (96.9%) Java juniors and trainees use the collection framework on their first job, and 80.3% of respondents have known collections at a good or excellent level before getting their first job offer.
An exception is an abnormal situation that can arise when your program is executed. All exception classes are subtypes of the java.lang.Exception class. The exception handling mechanism significantly simplifies bug catching processes in programs. Usually, students start to use exceptions pretty early, and this topic definitely deserves your attention.
Exceptions are used by every Java trainee and Java junior in their jobs, and interviewers ask questions about this mechanism very often.
Java performs input and output operations using streams. A stream is a kind of continuous flow of data. In Java programs, you need to read or write data pretty often. It is not the easiest topic for beginners, and sometimes it is not used often in newbies’ work (it really depends on the project they work at). Well, 22.7% of people who got their first Java junior/trainee job said that they use I/O streams often, 31.8% from time to time, 25.8% rarely. So a little less than 20% haven’t used them at all during their first year in a Java developer’s role.
Here we’ve got the most advanced core Java topic of all. Almost all students have difficulties with understanding and using multithreading, but later, when they reach zen in the art of juggling with different threads, programmers begin to understand how well this technology is implemented in Java and how effective it can be.
Nevertheless, if it is very difficult for you, multithreading is the topic you don’t need to delve into at first. Thus, only 12.1% of respondents noted that they knew the topic at a good level before their first offer, while 31.8% admit that they did not understand anything about this topic at all. The majority (56.2%) of those surveyed said they “had some idea” about multithreading when they started. Hence, multithreading can be your competitive advantage in Java junior interviews. It is up to you to dive deep into it or get initial ideas. Solve some coding problems and focus on other topics.
During the first year working as a Java trainee or Junior developer, 9.1% have used multithreading often and 36.4% from time to time, while 39.4% used it rarely.
Java lambda expressions appeared in Java 8, but beginners often ignore this convenient tool. Lambdas extended Java, making the functional programming concept available in this language. A lambda expression is a function that can be created without belonging to any class, and you can pass it as an object or execute it on demand. Only 22.7% of respondents have known lambdas well before their first job offer, while 48.5% estimated their knowledge of the topic as “close to zero.” At the same time, over 85% of new programmers said that they used lambda expressions in their first working year.
Thus, we can say that knowledge of core Java for any potential Java junior and even trainee is a must. Of course, you can get an offer if you know all the topics perfectly, and multithreading and lambda expressions somewhat less. However, these topics can become your competitive advantage when looking for a job. All the same, you will most likely need to work with both.
In my practice, I met guys who got work knowing only the basic concepts — Java Syntax and OOP. Most often they became Java trainees, but sometimes I came across someone with almost zero Java junior skills. On one hand, they were lucky: They realized their dream of becoming a programmer and could learn directly from work tasks. On the other hand, employers quickly realized that their skill level was weak, and for a long time they received the same type of monotonous tasks, which was often frustrating. My advice to such programmers is to grow faster until you are tired of all this. Solve practical problems, read — and move on to the next stage.
Where to learn core Java topics
One of the most controversial questions in learning any programming language is whether students should learn standard sorting and searching algorithms. One side insists that all efficient algorithms have long been written and included in libraries. Hence, anyone can just use them.
Their opponents are sure that writing algorithms on their own is an excellent exercise in programmer thinking, and besides, it is a test for its presence in a student. I am more likely to belong to the latter, especially given the fact that at Java junior interviews they are often asked to write one or another algorithm, sometimes even on a piece of paper. Although knowledge of algorithms is not related to knowledge of Java as such, I recommend all future programmers work on this topic. It will not be superfluous.
Another thing is that during the real work of a programmer, you most likely won’t need the bubble sort algorithm and the like. It will be much more important to know in which libraries the standard algorithms can be found. In the survey, 69.6% of students claimed that they knew and coded sorting and search algorithms at a good and average level before receiving the first job offer.
We have already addressed the topic of data structures when we talked about Java collections. Again, I consider it necessary to understand their architecture in order to know where and what to use, and why. Therefore, I often ask my students to write their own class for this or that data structure.
Again, while working, everyone usually uses standard data structures, and not all of them.
GeeksForGeeks is a huge online community where you can find a lot of lectures and exercises for algorithms.
Every good programmer can test code, and not only their own, so learn how to write unit tests for your code. Sometimes newbies neglect unit testing and prefer
validation type (if you already tried to write code, you know what I mean). Remember unit tests are much more useful than doing checks using console output. Unit tests are also the first thing companies typically trust new developers to write. According to the survey, 57.5% of respondents used JUnit before their first successful Java-related interview, and more than 83% had already used unit testing in their first job year.
Where to learn unit testing
Well, find a tutorial (for example this video tutorial below or this text tutorial) and then create tests for all your code!
Some employers expect future programmers to know a number of tools and libraries that help in their work.
More than half of respondents have known these technologies before getting their first Java-related job. All newcomers have used JSON/Jackson at their job, and most of them used JDBC (84.8%) or log4j2 (83.3%). Two-thirds of respondents have used servlets during their first year as Java juniors and trainees.
While studying, I recommend that you devote time to log4j, JSON, JDBC (together with SQL and database tools). However, the other technologies from the list and the libraries can be useful too.
Where to learn utility libraries and useful components
Some time ago, no one demanded knowledge of frameworks from a junior, let alone a trainee. Times are changing, however, and some companies won’t get into it if you don’t have an understanding of these technologies. Learning to work with them on your own is very difficult, although possible. However, in this case, I would recommend finding courses and doing it with a mentor.
Where to learn Spring/Hibernate
As I said previously, the best way to learn Spring and Hibernate is to find courses with a small team and a tutor, but that’s not always possible. I have found some interesting resources for learning them.
Design patterns are well-proven solutions for solving some specific problems. If you don’t know them, you give your future employer a headache. Take the time to read about patterns and apply them in practice. It’s the same story with architectural patterns, for example, MVC. I always ask my students to create some programs using MVC. It becomes much harder, but after that, they know how to use it.
Also, it would be beneficial to read about simple and well-readable code, according to KISS, DRY, and SOLID principles. To be honest, they are easy to understand, but it takes time to use them in practice. That’s why, when I interviewed applicants for junior positions, I never required applicants to have a solid knowledge of these principles, realizing that they come with practice.
Where to learn and read about patterns and principles
There are technologies and skills that most IT pros should have in their arsenal. They are not directly related to Java, but I will still mention them — it is not difficult to study them at the initial level. Additionally, it is better to do this before you start work because at that point you will not have time for them.
Where to learn build automation tools, application servers, and non-Java
Hmm … Looks a little scary, doesn’t it? On the other hand, if you love programming, are interested in technology, and are determined to become a programmer, then there’s no need to fear.
Work step by step, practice, learn, and may the force be with you.
Create your free account to unlock your custom reading experience.