How my developer career went
Then I had experience working in large IT companies. At the invitation of employers from abroad, I moved a lot. For the last two years I have been in Indonesia, before that I lived in Thailand, the Philippines, Vietnam, Mexico, Lithuania. I want to see the world further, but now I see Indonesia as the main location and starting point: my hobbies and interests are connected with life here.
I currently work for the Asian company Snapcart. I have two main working projects. One of them is related to machine learning and BigData: we analyze various purchases on different islands in Indonesia, compile a buyer profile, collect consumption statistics and some other things that are useful for manufacturers and sellers to optimize supplies. The second project is an application that allows people to set goals in terms of weight loss, weight gain and muscle mass, plan their diet and exercise.
So far, my career plans are related to my current place of work, although if there are offers for a higher salary, I will gladly consider them. I have colleagues from Europe, including Russia, Moldova, Poland, as well as Kazakhstan, Singapore, Australia. I like working in an international team: different mentality, different views on technology, more interesting ways to solve problems. This contributes to the broadening of horizons and language practice: at work, I mainly communicate in English, although I also correspond with my former compatriots in Russian. And, of course, the level of salaries is higher: when the ruble exchange rate fluctuated greatly, it became profitable to receive a salary in dollars.
How I study IT: true motivation and sources of knowledge
For me, the best algorithm for learning programming is a specific practical task that has a deadline and payment. Without this, I cannot study programming.
While working in international companies, I began to engage in DevOps, and then at a certain point he stopped being just a programmer and became more involved in application architecture in general. This is how I learned Java and Python, thus changing my specialization. And at my current place of work I write mainly in Golang.
For me, the search for specific projects and vacancies is primary, and knowledge and skills can already be learned and made up for what you are doing. Python is best suited for solving machine learning problems; php can be used to develop not very complex web applications, Golang can be used to create a large number of microservices, and Java can be used to solve specific problems.
There is a stereotype about the Java language that it is outdated. It is not the first year that Java has been “buried”. In fact, the main advantages of this language are that it is very fast and there are a large number of ready-made libraries for different tasks. Therefore, it is suitable for specific tasks solved using specific libraries.
The reasons for the change in specialization were both finance and the desire to learn new things. When a programmer has been working on one thing for a long time, it becomes boring over time. Therefore, IT managers often give programmers tasks outside of their competence to make it more interesting.
When the programmer is not bored, he works much more efficiently. And the broader your horizons, the more you read and the more programming languages you know, the higher the income, which you can apply for when looking for and changing jobs.
What to do if you want to change the programming language
Basically, if a person has learned one programming language, he will learn others if he wants. But not the fact that it is easy. For example, switching from PHP to Java or C ++ is difficult: completely different languages and tasks solved with their help. Therefore, when switching to a new language, you have to devote a lot of time to learning for the first month or two, but this is inevitable. Learning programming is an ongoing process.
I think any programmer can be horrified to look at his own code, even a year ago, and think how he could write such a thing. But with the transition to projects with many services, it becomes optimal to solve problems in different languages.
Naturally, an experienced programmer will no longer start working with a new language at the junior level. In general, the concepts of junior, middle and senior do not speak about knowledge of specific languages and technologies, but about the experience of programming and building IT systems in general. Now I have been working in senior, principal positions for several years.
The transition from PHP to Java was quite easy, because the frameworks and approaches are very similar, PHP seems to be catching up with Java. From fundamental knowledge, understanding of algorithms and architectures for building systems, experience with data, experience with DevOps, and, of course, the horizons acquired in previous jobs helped me.
As for Golang, it is not at all an object-oriented programming language in the usual sense, it uses different approaches to structuring code and data. But the algorithms and structure of languages are similar everywhere and therefore understandable: you remember the differences in syntax, you start using it, and in the process you delve into the specifics. But the brain has to be rebuilt every time.
I do not have universal recommendations for those who work in IT and want to switch to another programming language: we are all different. I work for foreign corporations, where the view may differ slightly from what is accepted in Russia.
If in Russian companies they are more often asked about how the applicant solved typical problems in previous jobs, then in international companies – how he would solve such a problem now based on knowledge and experience.
But in general, the developer can act on many issues independently, without asking managers, and in parallel use some interesting new technologies, studying them in the process.