When you are 15-17 years old, it is difficult to understand what you want to do in life. I have been interested in computers since childhood, but I was not sure that I wanted to connect my life with it. “There are a lot of cars and there will be more, there will always be work,” my parents told me. So I went to study to become a car mechanic. I quickly realized that this was not my thing, but it was necessary to finish my studies “for the sake of the crust,” “Otherwise, who will need you without a diploma?” – my parents told me again. I had to ask myself the question of who needs me when I started looking for a job. A diploma without real skills gives absolutely nothing, and I didn’t have any skills. That’s how I found a job as a cash collector—military service and an interest in responsible work helped.
It seemed to me that earning 50 thousand rubles a month when you are 20 years old is cool, especially compared to my former classmates who study at universities, working at most in the evenings. After working for a year, my girlfriend (and now my wife) increasingly asked me questions: “What will you do in the future?”, “So will you work as a cash collector all your life?”… I felt pressure and was angry because there were no answers to them. I did not have. On the other hand, I understood that 10 years would pass, and my salary, as well as my place in life, would not change. I didn’t consider myself stupid and felt that I could develop, but I didn’t know how. I had a developer friend, but I didn’t even think about going into IT – it seemed to me that I needed a special education and in general “programmers are not made, but born.” Everything changed when I met a former classmate with whom I studied at the same college. He said that he has been working as a front-end developer for 2 years and shared the details of his work. I won’t lie, I felt envious. The envy, honestly, was white, and not because he earns much more than me, but because a person with the same basic data has much more prospects in life. “Why am I worse?” – I thought. In my mind, IT was one of the fairest fields of activity, where people are valued for their knowledge, skills and experience, and not for diplomas or connections (a few years later I realized that this is not always the case). It seemed to me that your salary, job and prospects would depend on the time and effort you put into your development (a few years later I realized that this is exactly the case), and this is what I wanted. But I didn’t set goals for myself because I didn’t understand at all whether I would succeed and whether I would be interested. However, I began to study.
I devoted all my free time to studying, spending 4-5 hours on weekdays and 8-12 hours on weekends learning Java. The problem with such training (especially the backend) is that you don’t see the result. You study language constructs, classes, collections and data types, understand everything, but have absolutely no idea how this brings you closer to real work. And when you don’t see results, you begin to lose motivation and faith in yourself. After six months, it seemed to me that I could pass interviews. I selected several companies in order to practice – to understand what exactly they ask and how to behave. The plan was as good as it was naive. To my disappointment, I realized that if there are companies that are not very interesting to me, then I, a person with no experience, are even less interested in them. I applied dozens of times and received refusals everywhere. One day I was called for an interview, which I failed miserably. I realized that knowledge of Java is just the tip of the iceberg. Then I realized that I lacked the “base” – knowledge of algorithms, sortings and data structures. After failing the interview, I was demotivated, but continued my studies, while at the same time continuing to apply for vacancies, and the number of refusals eventually exceeded 2 hundred.
A few months later, I learned about offline evening courses from EPAM, after which they offered successful students an internship, and after the internship, employment. For me, getting there was not the easiest task, mainly due to my level of English, which was poor – when communicating with the recruiter, I could hardly answer simple questions about myself. But I received an invitation. The courses were quite superficial and did not provide any real benefit, but for me it was an opportunity to get a real internship. After 3 months I received an invitation to the “laboratory”. I was faced with a difficult choice – I had to quit my job, losing my only source of income. Moreover, they immediately told me that I would not have a chance to return. I thought this was a very risky step, although now I understand that I had absolutely nothing to lose. At the same time, I believed that this was the chance of my life, and I could not miss it. In order to provide myself with a financial cushion, I had to sell my motorcycle. I accepted the challenge and quit my job.
When the internship began, I was even more motivated and had no doubt that I would successfully complete it. I was the first to arrive at the office and the last to leave, spending an average of 10-12 hours a day on training. I really liked both the work on the real project and the team, which consisted mainly of young guys my age. I also liked the tasks I did, it was very interesting. After 3 months, I was the first to successfully pass the final interview and complete the lab from my stream. I was closer than ever to getting the job, but it seemed like it would have been too easy if it actually happened.
The pandemic has begun. EPAM, like all other companies, closed recruitment and I never received the coveted offer. Moreover, having acquired knowledge and real experience, it seemed that I had rolled back a year and again found myself of no use to anyone, because only rare seniors were recruited on the market. So I was left without a job, without an internship and without confidence in the future. I continued to educate myself and began to apply for all possible Java-related jobs, even those that required 10 years of experience. This strategy worked: a recruiter wrote to me and said that they had a junior position in the company, although it was not published anywhere. I passed the interview and received an offer. A year and a half after the start of training and 300+ refusals for vacancies, I got the long-awaited job.
I continued to develop. I studied new technologies, tried to take initiative and be proactive. The team leader was very pleased with me and after 8 months I was promoted to middle. After another 4 months, my project ended and I changed companies because I wanted to work with foreign customers. I worked on interesting and not so interesting projects, and raised my level of English to a confident B2. In April 2022, I moved to Mexico. I was happy with my job, but after a while I wanted to move to a more developed country. The only option to maintain the current standard of living and live, and not survive, in those countries that I was thinking about is to work in a top company and receive a salary significantly higher than the market. I knew very well about the FAANG and how interviews were organized there, but it seemed to me that this was a completely different level, not for people like me. That in order to get there, you need to be an Olympiad and have a special mindset, and that I will never be smart enough for this, and in general I can’t even solve an easy level problem on the litcode. The idea seemed crazy, and the investment was very dubious – according to the stories of those who have already gone through this path, it takes an average of six months to prepare. Six months for something that is unlikely to be useful in real work, and success in passing an interview is not guaranteed. However, without any particular hopes, I decided to try again.
I was VERY weak in algorithms, as well as in system design. I was lucky enough to meet someone who was already working in the FAANG – I added him on LindkedIn, and he himself offered to help. I needed not so much a mentor as a person who would answer my stupid questions, thereby helping me not to completely lose self-confidence. And the desire to give up everything and the thought that this was not mine arose very often. The algorithms were very slow, especially at the very beginning. There are thousands of problems on the litcode, at the beginning you just get lost in them, and which ones I need to solve were completely unclear. One day I came across the neetcode project, which, perhaps, played a decisive role in preparing for the algorithmic part. I also noticed that in almost every category of algorithms (graphs, sliding window, backtracking, etc.) there are several patterns that, after looking at once, can be applied in the future. The main idea was precisely this – watch 2-3 videos on the topic on neetcode with analysis of tasks, and then try to consolidate the acquired knowledge. Discipline and regularity are very important in preparation, as well as a measurable plan. My plan was that for about 6-7 months I would try to solve 1 medium problem per day, spending at least two to three hours a day on preparation overall. I tried to focus on quality rather than quantity, but it didn’t always work out. The golden mean is important here – if a problem cannot be solved for a long time, then, most likely, it will not be possible to solve it further, which means you should not waste time and go and look at the solution. At the same time, it is important not to give up right away, as if justifying yourself in your head “well, I don’t seem to have any ideas, now I’ll look at the solution, but I’ll save time.” And often there is a desire to solve a problem on a topic that has already been mastered, instead of a new incomprehensible one, you end up with some kind of deal with your conscience – you don’t mess around, and you formally carry out the plan, but in reality this does not bring any benefit. Some topics were especially difficult – I still cannot boast that I have mastered dynamic programming. However, there was progress and after a couple of months I began to notice that I could solve medium problems on some topics. At the same time, the realization slowly began to dawn that algorithms are actually not for the elite and you can learn everything with a strong desire, even if it seems that it’s not your thing at all. This is a skill like any other that requires time, effort and patience. One of the important pieces of advice I received early on was not to leave preparing for the system design and behavioral interview until the very end. I have seen stories on the Internet more than once about how someone “watched a couple of videos on YouTube on system design and that was enough” – I am very skeptical about this – either this is not true, or they were very lucky, or people have been doing this for many years engaged in real work, which was not at all about me. I bought courses, books, watched YouTube, and still couldn’t feel confident enough. I devoted some time to writing stories for behavioral questions and spent several days writing a “correct” resume.
I said earlier that all this preparation was a dubious investment, because everything I prepare for will not be useful in real work. In fact, this is not entirely true – thanks to preparing for the system design section, I learned a lot of new things, and algorithms… I can’t say with confidence that everyone needs this, but for me it definitely turned out to be useful and exciting.
After about 5 months, I decided to try to start taking test interviews. I didn’t feel ready, but I started to burn out. I don’t know how people prepare for longer, but for me 5 months turned out to be the limit beyond which I began to lose motivation and desire to continue preparing. They say that if you can solve a random medium problem in 25 minutes, then you are ready for the algorithmic part. This was not at all about me, but I understood that further waste of time would simply be torture and would not bring any benefit.
During my preparation period, it was as if I was transported back 4 years, where I studied hard every day, without any confidence in whether I would succeed. Believe it or not, my plan for test interviews was once again as good as it was naive! From the list of “not very interesting companies” I compiled, I did not receive a single invitation, even though I responded everywhere with referrals. Perhaps the crisis in the IT sector plays a role here – there are few vacancies, but there are many candidates, or maybe they are simply not interested in me. Still, I managed to receive invitations to interviews from Amazon and Microsoft, albeit from local offices without relocation.
My journey to Amazon ended very quickly – during the screening I came across a task of a similar type that I had never seen, and it felt closer to the hard level. At the very end, I figured out a not-so-optimal solution, but didn’t have time to write working code. A few days later I received a refusal. I had mixed feelings – on the one hand, I did not solve this problem simply because I did not know how to do it, and could hardly influence the result (unlike if I had come across a dynamic programming problem, of which I had analyzed dozens , but still couldn’t decide for myself). On the other hand, the time spent and the fact that I stumbled over the algorithms for which I had been preparing for so long and which I was so afraid of weighed heavily. Microsoft was unpleasantly surprised by scheduling the main interviews on the third working day after they announced that I had successfully passed the screening. I asked for at least another week to prepare – they refused. The interviews themselves left a bitter aftertaste for me – they asked a lot about multithreading, which I’m not very good at, and 15 minutes before the end of one of the interviews I was given a hard task, also with complicated conditions. I didn’t quite understand why this was done, because, of course, I didn’t have time to write working code, and even in words I explained my idea for the solution simply because I had encountered this problem before. At another interview, I was given a tricky problem, it seemed very simple, but in the middle I realized that this was not at all true, in the end I didn’t have time to completely solve it either, the interviewer stopped me because time had run out. The remaining 2 stages went smoothly. Surprisingly, there was no system design at all, at least in the form in which I prepared for it.
A week later, I nudged the Microsoft recruiter, but didn’t hear back. I finally lost hope for a positive outcome and it seemed that everything was in vain. A week later they finally sent me the offer. This did not evoke any emotions in me – I was too tired mentally after a long wait, worries and worries. However, it seems that the goal was achieved.
As a result, I did not accept their offer. But that doesn’t matter. For me, in this whole story, what is much more important is that I realized that nothing is impossible. Just a few years ago, I could not have imagined that I would be able to change my profession. When I succeeded, I never could have imagined that I would be interviewing at a company of this level. But now I know for sure that there are no limits, and everything can be achieved if you have the desire.