Hello! Today we’ll talk about the development path of a Java developer and what he must know in order to be in demand. Any developer at an interview can “fail” a candidate for a position. For example, he will start asking questions about specific topics that he encountered in the current project. But it's okay not to know everything. The fact that you do not answer some questions is also normal. Generally, every Java programmer should have a basic knowledge of development. So, let's look at what technologies are considered “basic”.
It should be in your first place to understand what Spring is: what a Spring container, beans, DI, IoC and so on are. So to speak, understand the very philosophy of using Spring. Further study of Spring frameworks will take place based on this base. It may be worth creating your own small application, to which you will gradually add new technologies you have learned.
Earlier we talked about JDBC technology as a technology for creating a connection to a database. In general, the “naked” use of the technology may not be found in projects now, so it may seem that learning JDBC is not necessary. But it is not so. By looking at the bare bones of JDBC, you can see the technology at a lower level and understand its problems and shortcomings. Once you start learning Spring JDBC, you will understand what exactly this framework improves, optimizes and hides from our eyes.
As with bare-bones JDBC, this framework improves the use of an existing technology, in this case Hibernate. If you consider using Hibernate without Spring, you will understand exactly what the benefit of using Spring Hibernate is.
Earlier we talked about JPA and how it is only a specification for which there are various implementations. Among these implementations, Hibernate is the closest to the ideal. Spring has its own ideal implementation of JPA, which uses Hibernate “under the hood” and is as close as possible to the ideal of the JPA specifications. This technology is called Spring JPA. By the way, it greatly simplifies accessing the database. You can learn JPA only without learning JDBC, Hibernate, Spring JDBC, Spring Hibernate. But in this case, your knowledge of connecting to a database will be very superficial.
With this technology, we can display the web interface of our application to users and allow the interface to communicate with the rest of the application. The technology can also work without display, when there is some application responsible for display, and you interact with this application using requests and responses using RESTful technology. To better understand information about Spring, in addition to articles and lectures on YouTube, you can read several books. I really liked the book “Spring in Action” by Walls Craig. Unfortunately, in Russian there is now only the third version, which is considered outdated. I advise you to read version 6 if you know English well. Another great book on Spring is “Spring 5 for Professionals.” It's harder to learn and more like a Spring bible that's better to keep handy than to read from cover to cover.
This technology greatly simplifies the use of Spring. I put it at the end of the list for a reason, because it hides a lot under the “hood” and for a person unfamiliar with regular Spring, many points may not be obvious and incomprehensible. First, for a better understanding of how the Spring frameworks work, you should use regular Spring, and then all the higher benefits of using Spring Boot. I also advise you to familiarize yourself with Spring Security and Spring AOP. But unlike the technologies above, deep knowledge of these two is not needed now. This technology is not for beginners. During interviews, juniors are not asked about them (except perhaps for one superficial question). Read in general what these technologies are and how they work. Throughout this article I have repeatedly mentioned reading books. On the one hand, this is not necessary. You can become a programmer without reading a single book, having studied everything you need from articles and training videos. On the other hand, at the moment the competition in the market for novice developers is high, which raises the bar for the required initial knowledge for a beginner. Therefore, the more you know, the faster you can find your first job, impressing the interviewer with your level of knowledge. Thank you all, and may Java be with you .
1. Basic algorithms
The first thing you should take on when you start learning programming (this applies not only to Java) is an analysis of the basics. For example, algorithms. There are an infinite number of them, and you shouldn't spend entire years trying to learn as many algorithms as possible: most of them won't be useful to you. The required minimum knowledge can be obtained from the book “ Grocking Algorithms ”. This will be enough to start the journey, but if you wish, you can learn with the help of the book “ Structures and Algorithms ” or “Algorithms in Java” by Robert Sedgwick and Kevin Wayne. I also advise you to improve your knowledge of the basics of computer science. This can be done in JavaRush using the CS50 course .2. Java Syntax
After learning the basics of algorithms, we must learn Java syntax. After all, we are all learning to be Java programmers here, aren’t we? The JavaRush course is perfect for this. In the process of performing numerous tasks, you will become fluent in Java syntax and will write/read Java code without much thought, as if it were your native language. JavaRush is practice, and in addition to it, you also need to look at the theory to understand what exactly you are doing. To do this, you can read books, for example one of the following:- “ Head First Java ”;
- “Java for Dummies” by Barry Bird;
- “Java. A Guide for Beginners” Herbert Schildt.
- “The Philosophy of Java”, Bruce Eckel;
- “Effective Programming”, Joshua Bloch;
- “Java. The Complete Guide”, Herbert Schildt.
3. Programming Patterns
Programming patterns are some repeatable patterns that represent a solution to a problem within a frequently occurring context. Among them there are basic, simple templates that every self-respecting programmer should know. To understand this topic, use the book “ Head First. Design Patterns .” She will clearly explain basic programming patterns. But the book talks a lot about Java , so at the time of studying the book you need to master this programming language. For a deeper dive into patterns, you can also read “Object-Oriented Design Techniques. Design Patterns” from the Gang of Four ( Gang of Four: a team of authors that includes Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides - editor's note) . After studying this topic, you will begin to see patterns virtually everywhere in your code. Pay attention to this, especially the patterns used in Spring , as this is a popular question in interviews.4. Programming paradigms. Code cleanliness
Besides standard programming patterns, there are various principles and paradigms that you need to know ( SOLID , GRASP ). It is also necessary to ensure that the code is clean and readable. Everything you need to know on this topic is in the book “ Clean Code ” by Robert Martin or try the book “Perfect Code” by Steve McConnell.5.SQL
Our next step is to study the language of relational databases - SQL . Databases are where the information (data) of a web application is stored. A database consists of many tables (the address book on your phone is the simplest example of such tables). You can read more about databases in this article . For Java developers, the area of responsibility is not only the Java application, but also the database with which it interacts and where it stores data. In relational (the most common) databases, all interaction occurs through a special language - Structured Query Language, or SQL. To understand this topic, it will be enough to read one of the books:- “Learning SQL”, Alan Bewley;
- “SQL”, Chris Fiaily;
- “Head First SQL” by Lynn Bailey.
GO TO FULL VERSION