I received my higher education at MSTU, I studied nuclear reactors and power plants. However, in spite of the positive impression from studies and, in general, quite good prospects, after high school I decided to become a developer. And it turned out! For three years now I have been working as a Java developer, not for a moment interrupting my vocational training. 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 devalued. 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 I liked the most:
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 books on programming, in any case, good, one - an explanation of the topic, then the exercises. 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 this with learning. This helps grow and ask yourself the right questions faster. I was helped by the fact that I started working in various projects rather quickly 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 topmost 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 involved in the development of a micro-service architecture on the Spring Cloud module.
When projecting work for study, you better understand which courses are now desirable to choose, at what place you should ask the teacher, the benefit in the “long” courses there is such an opportunity.
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 own tab. For simplification, I connect IDE and I look in a debag code execution on steps.
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 Golosav, I used the GraphHopper library. I often visited the forum where, in a separate thread, the founder of the product 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’m always “dissecting” everything, carefully studying, emphasizing 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. There is no need to allocate a lot of time for such reading, the main thing is to do it regularly.
If you are a beginner Java developer, here is my personal top must-read book:
From new products I can advise:
I don’t force myself to take all of 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 fill your hand, keep minimalism in the code and not pour out all the theory you have learned. This kind of work reminds me of aikido to me: you know and understand a lot, but you do direct effective hits with the most appropriate means.
Source: https://habr.com/ru/post/433204/