How to learn Java development? The experience of Nikita Chernetsov GeekUniversity student
I received my higher education at MSTU, I studied nuclear reactors and power plants. However, despite the positive impression of studying and generally good prospects, after high school, I decided to become a developer. And it turned out! For the past three years I have been working in a Java developer, not for a second interrupting my training for a profession. I will tell you about which teaching methods turned out to be the most effective for me. Not the fact that they will enter one and all. I hope someone will get something useful for themselves.
But back to the beginning. In high school I did not study programming, my faculty was called “Nuclear Reactors and Power Plants”. However, it was there that I laid the most important basis for my current profession: after Baumanka, it is incredibly easy to learn any materials, regardless of format. Therefore, I do not hold the opinion that higher education is depreciating. A person with a high-quality higher education, even from another sphere, always thinks a little better and seizes a little faster.
Energetics did not catch me, because somewhere in the middle of training I understood - my future in IT. Java has always been one of the foremost languages, so there was no particular hesitation with the choice. How was it with the format - when there are online courses, why complicate your life? I quickly signed up for several IT courses, learned a new profession with incredible perseverance, but most importantly - with pleasure. It happened that the only one from the group performed complex homework.
I looked through the courses a lot, here are the ones that I liked the most:
- Java Rush - convenient and intuitive.
- Stepik is an annual program with courses in Java, Python, Haskell, C ++, functional programming, mathematical analysis, and mathematical statistics.
- Otus is an advanced level course in Java, Spring and Machine Learning.
- Faculty of Java-development in GeekUniversity (GeekBrains) - here I am now finishing the last quarter.
Passing several Java courses at once makes perfect sense, since programs differ both in time and in content. Short practical courses are good because you immediately start doing what you need in real work. More detailed programs, as in GeekUniversity, provide additional knowledge on databases, algorithms, and frameworks. It is not necessary to study everything at the same time, it just may not be enough time and effort, but I recommend at least gradually to try everything in the top. And never stop.
The structure of all the books on programming, in any case, good, one - an explanation of the topic, then exercise. The latter should not just be read, but be sure to do it by hand, without copy-paste. Even better - if you work as a programmer and combine it with training. This helps grow and ask yourself the right questions faster. It helped me that I quickly began to work in different projects after the start of training.
In the company "Glosav" I did a system of transport monitoring. Different languages were mixed there, Erlang worked at the very top level of data reception, then the system bus on Kafka, and already behind it - solid Java. Personally, I wrote streaming handlers. In a startup, iVoice developed an automated call center, actively used Kafka. Recently I became a developer at Luxoft, there is a lot of new things for me - we are building an information and referral system for a group of VTB banks, I am working on a microservice architecture on the Spring Cloud module in the project.
When projecting work to study, you better understand which courses are now desirable to choose, at which place it is better to ask the teacher, the benefit in the “long” courses there is such an opportunity.
Alien GitHub Code
Recently, I began to look at a lot of other code on GitHub, study libraries and frameworks, analyze how cool developers solve their problems, adopt their methods.
It happens like this. When I see a difficult moment, I take a piece of paper, a pen, and draw a diagram of classes, variables, and relations. Without a piece of paper on GitHub, this is not very convenient to watch, since for each class you need to open its tab. For simplification, I connect IDE and I look in a performance code step by step.
Of course, most of the "peeped" code was written by Western developers, simply because of the popularity of GitHub. They are all open people, so if you can’t figure it out on your own, you can write and ask them about some moments, they will be happy to answer.
When I worked in Gosav, I used the GraphHopper library. I often visited the forum, where in a separate thread the product founder answered questions from other programmers.
When you manage to work with cool developers, I also pay attention, as they say. Sometimes on courses I notice that the teacher has a stylish, beautiful code. As a result, I’ll always “dissect” everything, carefully study, emphasize for myself the new.
The format of the materials should be as diverse as possible, therefore, in no case should one reject paper books. I, for example, have a large separate shelf with editions on programming. And I always take something with me to read on the train or subway. For such reading it is not necessary to allocate a lot of time, the main thing is to do it regularly.
If you are a beginner Java developer, here is my personal top must-read book:
- Harold Abelson, Gerald J. Sussman “Structure and Interpretation of Computer Programs” is an excellent tutorial for those who start programming. All examples are given in the functional language Scheme, which is especially cool, since you are not concentrating on a specific implementation, but on an idea. In the future, with the solution of complex problems, it is very useful.
- Steve McConnell “Perfect Code”, Robert Martin “Clean Code. Creation, analysis and refactoring " - a classic programming. Perhaps, any person who wants to stay in the profession should read it. There is more philosophy than code, but the value does not diminish.
- Bruce Ekkel "The Philosophy of Java" is a favorite book of all javista. Language, organization, advantages - in general, everything that is necessary to know, until it came to the selection of specific application tools.
- Robert Lafore “Data Structures and Algorithms for Java” - the name fully captures the essence. My advice: pay special attention to algorithms. Believe, it is useful and will help repeatedly.
- Joshua Bloch “Java. Effective programming ” - reminds Robert Martin, but refactoring understands it in Java.
From new products I can advise:
- Gwen Shapayra, Neha Narkhad, and Todd Palino “Kafka: The Definitive Guide” - I personally had to work quite a bit with this software, so I was very happy that this book existed. In general, by O'Reilly Publishers, I often visit their site and follow the news.
- Antti's Laaksonen “Olympiad programming” - there are no actual work tasks here, but from the point of view of brain warm-up, it fits perfectly. By the way, the publishing house "DMK Press", pay attention, makes good and operational translations on programmatic topics.
I don’t force myself to take all these courses or read programming books - I’m just interested in this topic and I see that new knowledge helps me to better perform current work. At the same time, I understand perfectly well that programming is a craft in which you need to tamper with your hand, keep minimalism in the code, and not throw all the theory you have learned. This kind of work reminds me of aikido to me: you know and understand a lot, but you inflict point-like effective hits with the most appropriate means.