My experience with Java courses for new employees

Hello!

Today, the practice of conducting pre-employment courses is quite common in many companies, I myself once began my career with training, but I was always interested to try myself as a teacher. And this spring, I learned that in our company spring-summer courses will be held following which teams will replenish fighters in a number of areas: Android, Java, Javascript and QA. At the suggestion of the head of the department, I and my colleagues had the opportunity to conduct courses in the direction of Java. I would like to tell dear Habr about the details of this fascinating event.

Selection of candidates




What is required of a potential employee in our department? In short, we use a fairly typical technology stack: Java 8, Spring Framework, Hibernate / MyBatis, PostgreSQL. Therefore, it is necessary to touch on all the key elements listed above, but since the level of applicants will be low, someone may first have to face a number of items, so the courses were supposed (and it turned out) quite dense in content. The only thing we didn’t want to touch on was childish topics such as data types, explanations of class, interface keywords, loops, branching operators, so at the first stage, our staff members organized remote testing with two simple tasks that should convince us that the person at least somehow knows how to program. About 150 applications came to our Java branch, mainly senior students or recent graduates. There were also quite exotic representatives like 40-year-old business managers or students from Africa. When checking introductory assignments, I paid more attention to how a person relates to the design of his work, and not to how sophisticated a person "goes through a cycle through the array." In tasks of the Hello World level, the run-up for this is not too big, and trying to get out you can come across from the person who is checking the perplexed question “Why is it so difficult?”. In general, someone sent screenshots from the development environment, someone inserted pieces of code into a Word document, and someone who was pleased sent a link to github. For this, we move on to the second stage, when letters of happiness with the news of enrollment scattered to their destinations. mostly senior students or recent graduates. There were also quite exotic representatives like 40-year-old business managers or students from Africa. When checking introductory assignments, I paid more attention to how a person relates to the design of his work, and not to how sophisticated a person "goes through a cycle through the array." In tasks of the Hello World level, the run-up for this is not too big, and trying to get out you can come across from the person who is checking the perplexed question “Why is it so difficult?”. In general, someone sent screenshots from the development environment, someone inserted pieces of code into a Word document, and someone who was pleased sent a link to github. For this, we move on to the second stage, when letters of happiness with the news of enrollment scattered to their destinations. mostly senior students or recent graduates. There were also quite exotic representatives like 40-year-old business managers or students from Africa. When checking introductory assignments, I paid more attention to how a person relates to the design of his work, and not to how sophisticated a person "goes through a cycle through the array." In tasks of the Hello World level, the run-up for this is not too big, and trying to get out you can come across from the person who is checking the perplexed question “Why is it so difficult?”. In general, someone sent screenshots from the development environment, someone inserted pieces of code into a Word document, and someone who was pleased sent a link to github. For this, we move on to the second stage, when letters of happiness with the news of enrollment scattered to their destinations. There were also quite exotic representatives like 40-year-old business managers or students from Africa. When checking introductory assignments, I paid more attention to how a person relates to the design of his work, and not to how sophisticated a person "goes through a cycle through the array." In tasks of the Hello World level, the run-up for this is not too big, and trying to get out you can come across from the person who is checking the perplexed question “Why is it so difficult?”. In general, someone sent screenshots from the development environment, someone inserted pieces of code into a Word document, and someone who was pleased sent a link to github. For this, we move on to the second stage, when letters of happiness with the news of enrollment scattered to their destinations. There were also quite exotic representatives like 40-year-old business managers or students from Africa. When checking introductory assignments, I paid more attention to how a person relates to the design of his work, and not to how sophisticated a person "goes through a cycle through the array." In tasks of the Hello World level, the run-up for this is not too big, and trying to get out you can come across from the person who is checking the perplexed question “Why is it so difficult?”. In general, someone sent screenshots from the development environment, someone inserted pieces of code into a Word document, and someone who was pleased sent a link to github. For this, we move on to the second stage, when letters of happiness with the news of enrollment scattered to their destinations. When checking introductory assignments, I paid more attention to how a person relates to the design of his work, and not to how sophisticated a person "goes through a cycle through the array." In tasks of the Hello World level, the run-up for this is not too big, and trying to get out you can come across from the person who is checking the perplexed question “Why is it so difficult?”. In general, someone sent screenshots from the development environment, someone inserted pieces of code into a Word document, and someone who was pleased sent a link to github. For this, we move on to the second stage, when letters of happiness with the news of enrollment scattered to their destinations. When checking introductory assignments, I paid more attention to how a person relates to the design of his work, and not to how sophisticated a person "goes through a cycle through the array." In tasks of the Hello World level, the run-up for this is not too big, and trying to get out you can come across from the person who is checking the perplexed question “Why is it so difficult?”. In general, someone sent screenshots from the development environment, someone inserted pieces of code into a Word document, and someone who was pleased sent a link to github. For this, we move on to the second stage, when letters of happiness with the news of enrollment scattered to their destinations. In tasks of the Hello World level, the run-up for this is not too big, and trying to get out you can come across from the person who is checking the perplexed question “Why is it so difficult?”. In general, someone sent screenshots from the development environment, someone inserted pieces of code into a Word document, and someone who was pleased sent a link to github. For this, we move on to the second stage, when letters of happiness with the news of enrollment scattered to their destinations. In tasks of the Hello World level, the run-up for this is not too big, and trying to get out you can come across from the person who is checking the perplexed question “Why is it so difficult?”. In general, someone sent screenshots from the development environment, someone inserted pieces of code into a Word document, and someone who was pleased sent a link to github. For this, we move on to the second stage, when letters of happiness with the news of enrollment scattered to their destinations.

Course program


We identified the core topics as Java Core:

Lesson 1.

Introduction. A short story about the history of the language, a little about the work of the JVM and cross-platform, the principles of OOP (three whales, SOLID, KISS, YAGNI) and the tools of a modern Java developer (IDE, CI, VCS, bugtracker).

Comment: The topics are quite diverse, but they, in our opinion, give a good “entry into the topic”. I’ll add from myself that the part about OOP is rather difficult in the first lesson, but its presence allows you to refer to it later when checking homework or future lectures.

Lesson 2.

Exceptions, input-output streams, serialization.

A comment:here all the topics complement each other pretty well, you can demonstrate the closure of threads in the "classic style" in the finally block and show an analogue with try-with-resources. Wrapper streams like DataInputStream and DataOutputStream are a simple and intuitive example of the Decorator pattern, so there is an opportunity to refer to the first lesson.

Lesson 3.

Collections.

A comment:everyone who has ever undergone a technical interview knows that collections cannot be avoided, because here lies a whole storehouse of nuances that allows you to determine the level of specialist knowledge at the Junior-Middle-Senior levels. Apart from the internal structure of data structures, topics such as: classic comparison of ArrayList vs LinkedList, “key” HashMap problems (how to lose value, types of collision resolution), types of iterators (fast-fail vs fast-safe), and special collections like EnumSet are discussed. During the lecture I often refer to the posts of tarzan82 , I really like the visibility and consistency of presentation.

Lesson 4.

Multithreading.

A comment:This lesson provides the basics of writing multi-threaded code, introduces the most popular problems (livelock, deadlock, starvation), as well as the conditionally “lower-level” (Thread, Runnable) and “upper-level” parallel APIs (java.util.concurrent), with synchronized and thread safe collections.

Lesson 5.

Java innovations 8.

Comment: since Stream API, lambda expressions and functional interfaces are actively used on projects, there is a need to talk about innovations and modern approaches to data processing in the same collections.

Lesson 6.

Summing up the Java Core block.

A comment:Generics, Reflection API, Enum, and everything that was mentioned, but was not discussed in detail in previous classes, fall into this block. The format is more in the form of a “question and answer”.

Sessions 7 and 8.

Spring Framework and Hibernate.

Commentary: Get Started style brief review with useful links and study recommendations, it will not be possible to achieve a special depth for 1 lesson here if you wish. Each framework deserves a separate course.

Classes 9-10.

SQL Basic

Comment: in the final lessons, the basics of writing SQL queries are explained, connection algorithms (hashjoin, merge-sort join, nested loop), how to write queries more efficiently are explained.

Total


The desire to conduct courses was expressed by two more colleagues, so for the right to conduct a particular topic, we dragged a straw. In parallel with the lectures, all students were given a task (desktop application and Spring-based web application). Based on the results of the courses of some guys, we recommended for an interview, so we had three new Junior Java Developer, which successfully rolled into the project.

In order for the topic to be fully revealed, I will describe a number of problems that we encountered:


1. Initially, the group consisted of 18 people, the main time of training fell on June, when the students have a session. On the one hand, time is not the best - those who have problems with studies will not be able to devote proper time to courses, on the other hand, the additional load served as a natural filter from lazy people. After all, where is the guarantee that after employment problems with studies will not force an employee to score at work as well? The question of the time of the meeting is very debatable, it did not depend on me and other teachers. The entire course was held in the mode of 2 lessons per week.

2. Checking homework took place according to a number of criteria:

  • Does the writing correspond to what is in the assignment. At the same time, the freedom of implementation remained with the student himself, i.e. describes the necessary functionality and some set of technologies that are recommended to be applied. How and what to use, the student must figure it out on his own. Naturally there were bonuses for originality.
  • How well the student understood the object-oriented approach. Often, Java beginners draw from Pascal / C ++ a procedural style expressed in an abundance of static methods, just not to create an object.
  • Compliance with Java Code Conventions. Alas, at first you have to devote a lot of time to this, otherwise the eyelids twitch from reading the code.
  • Deadline. Here we were quite loyal, because they themselves were recently students, but those who passed earlier had preferences.

Students sent the assignment to the post office, then I or my colleagues wrote a small cover letter in response, in which they reported the verdict (work accepted or not) and gave some comments on the shortcomings. Such iterations per task reached as much as 3, we did not set any limits. It was found out empirically that even if you pay special attention to a lecture of some common mistake or show best practice, there will still be a group of people who will miss it. Thus, the presentation of the lecture became a handy reference book where you can poke your nose to send offenders for education.

3. Judging by the number of questions, the greatest difficulty was caused by parallel programming (maximum number) and OOP (minimal - no questions). With the first, everything is clear, the topic is very deep and it needs to be addressed separately. A large amount of information immediately gets into my head, in which there are a lot of nuances, it is not possible to digest right away. With the second, more interesting, because for the most part, the principles of object-oriented programming are expressed in sentences of a recommendatory nature, in simple human language, without reference to anything specific, then, in my opinion, at the first meeting, students do not take it too seriously and try to wait for material with code listings , where in their opinion there is a visible practical value. True, as soon as it comes to practice, it is here that the greatest number of problems.

Also popular now: