JavaRush /Java Blog /Random EN /What do you need to know to become a Java Junior, and wha...

What do you need to know to become a Java Junior, and what do you do about it?

Published in the Random EN group
The requirements for potential Java developers are constantly changing and difficult to keep track of. Is it enough to know only Java Core to become Trainee? How well do you need to understand Spring and Hibernate for a Java Junior position? Is it worth learning databases, sorting and searching algorithms? And since CodeGym students often worry about these questions, we decided to ask our graduates who are already working as Java Juniors or intern in companies as Java Trainees. Note that 13% of respondents were lucky from the first attempt to get the position of Java Middle bypassing the Junior stage. What do you need to know to become a Java Junior, and what do you do about it?  - 1Respondents shared information about which technologies they needed to pass the interview, and which ones they used in the first year of their first job related to Java.

Everyone needs Java Core

The term Java Core is quite broad. This name means both the elementary syntax of the language and such a complex topic as multithreading. Actually, the CodeGym course is mainly dedicated to Core. What do you need to know to become a Java Junior, and what do you do about it?  - 2Java Syntax. Fundamentals of the language. All these data types, operators, loops and branches. Naturally, 92.4% of the job applicants rated their knowledge of syntax as “good or excellent”. However, 7.6% of respondents managed to become a Java Trainee with average syntax knowledge. However, this should be assessed rather as luck (or boasting of the respondents :)). Of course, everyone who claims to be a programmer should know the syntax of the language. Object-oriented programming (OOP).Everything in Java is made up of objects, so OOP can be considered one of the most important topics in the language. The object-oriented approach may seem strange at first, especially if you have previously studied only procedural languages, but it is not difficult to relearn objects. The biggest difficulties for beginners are caused by levels of abstraction and their independent distribution - a novice programmer must be able to correctly compose a hierarchy of objects, understand what the interface will be responsible for, and what can be put into an abstract class, create an inheritance ladder, and so on. As usual, this difficulty is solved by practice. The majority of respondents, and this is 80.3% of those who got their first job, knew the principles of OOP well and used them constantly. In the first year of Java Junior and interns, 78.8% of those surveyed used OOP principles very often, 12. 1% - from time to time. 7.6% of listeners rarely used them - these guys were mostly engaged in unit testing and various small tasks. That is, of course, they also used classes or objects (no way in Java without this), but rarely made up class hierarchies. collections framework.A collection is a collection of individual objects presented as a single entity. Java has a very sensible Collections Framework for representing collections. Collections are based on popular data structures - lists, ordinary and connected, sets, hash tables. So when studying collections, it would be nice to get to know data structures more closely. The main difficulty in studying collections is to understand and remember the principle of their work. If you understand how an element is accessed, retrieved from the collection and added to it, then you begin to understand where to apply this or that structure. It comes with practice. But, fortunately, far from all of the huge number of collections are actively used in real work. 80.3% of respondents noted that they knew the collections well or even perfectly beforeWhat do you need to know to become a Java Junior, and what do you do about it?  - 3Exception Handling. An exception is an out of the ordinary situation that can occur while executing your program. All exception classes are subtypes of the java.lang.Exception class. The exception handling mechanism greatly simplifies the process of finding errors in programs. Usually, students start using exceptions quite early, say, on CodeGym On CodeGym, this topic is raised in the first Java Syntax quest. Almost all CodeGym graduates who got their first job knew how to handle exceptions, and, of course, used them during their work. I/O Streams Java.The very first programs written in Java usually contain something like System.out.println("Hello world"). Often, beginners understand that the println method prints a string to the console, but they have no idea why System and out are there, and how they work. A little later, it turns out that Java performs input and output operations using streams, a continuous stream of data. Threads are not the easiest topic to understand and are not used very often in newbie work: only 22.7% of people who got their first Java Junior/Trainee job said they use I/O threads a lot, 31.8% - from time to time, 25.8% - rarely. So just under 20% didn't use them at all during their first year as a Java developer. During their studies, 18.2% had no particular difficulties with flows and knew them perfectly, 36. Multithreading (Java Multithreading/Concurrency).Perhaps this topic causes the greatest misunderstanding among novice developers. Although multithreading in Java is very well implemented, it is difficult to understand, and problems can arise even when writing the simplest programs (for example, multithreaded “Hello, world”). Many employers understand this and do not require a deep understanding of multithreading from beginners, hoping that it will come with experience. Only 12% of respondents noted that they knew the topic at a good level before receiving the first offer, while almost 32% of respondents admitted that they knew nothing about this topic at all. The majority, 56.2%, said they "had some idea" about multithreading. So if the difficulties of working with threads seem insurmountable to you now, these numbers can reassure you. Nevertheless, if you want to gain a competitive advantage in an interview, this topic can be your forte. On real projects, newbies are also rarely allowed to work with threads. So, 15.1% of novice programmers did not encounter Java Multithreading at all in their work, and 39.4% did, but rarely. Often in the first year of operation, only 9.1% of respondents had to work with multithreading. Lambda expressions. Lambda expressions and hints of functional programming appeared in Java 8, but newbies don't use this handy tool that often. 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 the surveyed graduates knew Lambda expressions well before receiving their first job offer, and 48.5% rated their knowledge of the topic as “close to zero”. At the same time, over 85% of new programmers said they used lambda expressions in their first year. In fairness, we point out that a low percentage of those who know this topic may be due to the fact that in CodeGym lambda expressions are so far only presented in the new Java Syntax Pro quest andarticles . Thus, we can safely say that knowledge of Core Java is simply necessary for any potential Java Junior and even Trainee. Of course, some topics, such as multithreading, are acceptable to know a little less, but Java syntax, OOP and collections should be firmly rooted in your mind.

Algorithms and data structures

There is a constant debate about the study of sorting and searching algorithms. On the one hand, the best algorithms have long been written and included in the libraries of all popular programming languages, including Java. And they can be legally used without the bother of writing your own code. However, experts who train programmers still recommend that every novice developer train his brain by writing all these bubble algorithms, merging, binary search and the like. Firstly, these algorithms are a kind of litmus test of a programmer's skills (namely, not knowledge, but skills) and a person's understanding of what programming is in principle. If your brain is already well-wired for this kind of work, you will write algorithms relatively easily. And yet, you should remember: you need algorithms for brain training ... and in order to to pass an interview: the corrosive Senior developers who conduct them are very fond of tormenting applicants with requests to write this or that algorithm. But in the work, the majority (48.5%) use standard library algorithms, effective and proven, while 16% of respondents did not use sorting at all in their first year as a programmer.What do you need to know to become a Java Junior, and what do you do about it?  - 469.6% of graduates say that before receiving the first job offer, they were well versed in sorting and searching algorithms and could write them on their own. What do you need to know to become a Java Junior, and what do you do about it?  - 5We already touched on the subject of data structures when we talked about Java collections. Yes, it is better to understand them in order to know where and what structure to apply. Making your own data structures in the image and likeness of library ones is a great exercise that will help you understand them better. You can, for example, try to write your own version of ArrayList or offer your own singly linked list (the usual LinkedList in Java is doubly linked). What do you need to know to become a Java Junior, and what do you do about it?  - 6During their work, novice programmers used mainly standard data structures.What do you need to know to become a Java Junior, and what do you do about it?  - 7

Unit testing

The JUnit library is responsible for unit testing in Java. In fact, unit testing can be started almost at the very beginning of training. At least when you take on your first independent project, even a very small one, you better already own this tool. Writing unit tests is not that difficult, although there are nuances. Learning JUnit does not take much time, but the benefits of knowing it are enormous. You can cover your own and other people's code with tests. Very often, newcomers are assigned to write unit tests for colleagues, so this can be useful directly in a new job. 57.5% of respondents said they used JUnit before their first successful Java interview, and over 83% already used unit testing in their first year.

Utility Libraries, GUIs and Useful Components

We asked how well CodeGym graduates were familiar with a number of tools, some of which were also studied in our course.
  • Servlets are Java software components that extend the capabilities of the server.
  • JDBC is a platform-independent standard for interoperability between Java applications and databases. JDBC is implemented as a package java. sql is included with Java SE (Standard Edition).
  • log4j is the most famous message logging library. It allows you to write library calls in java code, and then flexibly customize it without changing the already written code.
  • Jackson/JSON. JSON (JavaScript Object Notation) is a hugely popular open standard file format and data interchange format, and Jackson is a high performance JSON processor for Java.
All of these tools are very useful and often used at work, and most students have not neglected them when preparing for an interview. This is especially true for Jackson, which was encountered by 72.7% of applicants for the position of a Java programmer, JDBC - more than 78% of respondents tested this library. Almost everyone used these technologies in their work. Java developers don't come across the GUI very often. We asked a question about JavaFX: only 18% of respondents came across this technology at work.What do you need to know to become a Java Junior, and what do you do about it?  - 8Two-thirds of the respondents worked with servlets, a slightly smaller number of respondents tried them during their studies. It also turned out that some of the Java programmers who started working came across projects such as Apache Commons (a set of libraries focused on all aspects of reusable Java components) and Guava (a set of open source common libraries for Java, mainly developed by Google engineers). ).What do you need to know to become a Java Junior, and what do you do about it?  - 9


Previously, Java Junior was not expected to know Spring or Hibernate. But times are changing, and today this is sometimes expected even from Trainee. Learning these technologies on your own is not easy. Even if everything seems clear, students often forget what's what very quickly. Sometimes even applications written on your own in Spring are not a panacea. Only active work will help. However, before a successful interview, a third of the respondents were familiar with Spring at a good level, and 45.5% understood it moderately. The situation with Spring boot is somewhat worse (36.4% did not know it at all), and almost 44% of the surveyed CodeGym graduates declared good knowledge of Hibernate. What do you need to know to become a Java Junior, and what do you do about it?  - 10At the same time, almost 88% of newly minted programmers used the main Java framework during their work, 83% - Spring Boot, 81% - Hibernate.What do you need to know to become a Java Junior, and what do you do about it?  - eleven

Build Automation tools and application servers

Most of the CodeGym graduates surveyed have tried project builders. Most often it was Maven (40.9% tried it in practice, another 30.3% used it from time to time, and 12.1% used it constantly during their studies). In working with Maven, I had to deal with 72.7% (often), 7.6% (sometimes) and 3% (rarely). As for Gradle, the situation is somewhat worse. Only 22.7% have practiced with this faucet, and most of them have just tried out the technology. Almost half of the respondents used Gradle in their work.What do you need to know to become a Java Junior, and what do you do about it?  - 12Ant lost its position a long time ago, and this was reflected in its popularity among our graduates: only 3% of respondents bothered with it. And 12% of those who answered the questions had to work with him. Among application servers, Tomcat is in the lead, more than 77% of respondents figured it out during their studies, 11% tried GlassFish, 12% - JBoss. The popularity of servers among those who are already working looks similar. Only 31.8% of the job applicants had no experience with Tomcat. Also, CodeGym graduates during the first year of work as a programmer tested such servers as WebSphere, Jetty, Netty, Wildfly, Weblogic.What do you need to know to become a Java Junior, and what do you do about it?  - 13

What else?

The vast majority of respondents even before getting their first job:
  • have an understanding of HTML, CSS and JavaScript;
  • worked with databases, knew SQL;
  • almost everyone used Git and GitHub;
  • tried to work with pure XML.
All these technologies were useful to them in their future work. From a Java programmer, and from any other, by default, they are expected to be familiar with all of the above. It is acquaintances, not deep knowledge. So we recommend sometimes to digress from Java and broaden your horizons by studying these technologies. Also, some of the respondents noted that at the interview they were expected to have knowledge, at least theoretical, of design patterns, architectural patterns, as well as the rules of good taste in programming (all these KISS, DRY, SOLID). More often than not, however, only definitions sufficed in interviews: those who conducted the interviews were well aware that real understanding of such things comes only with constant practice. Were they useful at work? Of course they came in handy.What do you need to know to become a Java Junior, and what do you do about it?  - 14


We hope we didn't scare you too much with the number of technologies that you have to learn. Not all of this needs to be known thoroughly, besides, dealing with all this is very interesting. No wonder you decided to become a programmer, right? So keep learning Java and stay motivated. Good luck! PS If you have already found a job and want to tell us about your experience - welcome to the comments!