User Brian
Brian
Level 41

"I vowed not to tie my life to Java" — The story of software developer Anzor

Published in the Success Stories group
We know that CodeGym students want to hear the stories of those who are already working in IT. We've taken matters into our own hands and launched a series about developers from various countries and companies, who completed our Java training. This story is about a software developer named Anzor Karmov (he learned Java in Russian-language version of our course). Since high school, this guy was fond of coding in Pascal, but he didn't plan to become a programmer. He eventually learned programming on our course and has now been working as a backend developer for several years. Anzor tells us how he did it."I vowed not to tie my life to Java" — The story of software developer Anzor - 1

"I will never touch this horror"

In high school, I was fond of programming and the Pascal language. I had a tutor. I entered university for a degree in Business Analytics. This course of study included classes in programming, including learning C# and Java. I remember when I vowed not to tie my life to Java: my teacher didn't explain the basics to us. The learning materials seemed to presume a bunch of prior knowledge, so a lot was unclear. Everyone was assumed to know programming already. That's when I thought, "I will never touch this horror." My IT journey began when I passed a job interview at a company that had deployed an ERP system from Microsoft. They had two kinds of employees in their IT department: developers and consultants. The consultants played the role of testers and product managers, while the developers, unsurprisingly, developed. I was hired as a consultant, but my resume indicated that I studied Pascal in school. Based on this, they suggested that I become a developer. We coded in the C#L language, affectionately referred to as "feces", some sort of "descendant" of Pascal. When I more or less got my bearings in this space, I realized that this is, roughly speaking, the very lowest place a developer can work. Not because the company was bad, but because the language we used was so very narrowly applicable. It was simply unrealistic to expect to apply that knowledge elsewhere. I thought, if I'm a developer, then I need to learn something more universal and widely applicable.

"When I abandoned my studies, I chided myself for being so lazy."

In choosing which programming language to study, my short list came down to C++, C#, and Java. From what I read on forums, I concluded that C++ would be difficult for me and would take a lot of time to break into this topic. I settled on Java, probably because I came across this course. I studied the programming language for about a year and a half. My boss "helped" me a lot: he was a powerful demotivator in my job, but he definitely motivated me to learn Java. He was a bad boss, and I wanted to get away from him as soon as possible. But it took me about 1.5 years to realize that I wanted to leave, the same amount of time I spent on self-learning. I studied in various ways. I formulated a plan: without question, my job had to be change and I had to learn Java, but I couldn't consistently devote time to this endeavor for a year and a half, and I couldn't study every day. I had short breaks for a month or two, and there were also months when I studied actively. The schedule looked something like this: I woke up much earlier than usual, studied, went to work, studied something there if I was not super busy, returned home, and then studied again. When I gave up, I chided myself for being so lazy, then "close cooperation" with my boss inspired me once again, and I returned to my studies with fervor. I remember that each new level was harder and harder than the previous one. If the first levels took about a week, then closer to the middle I spent about a week solving a single task. The thought of giving up all this entirely never occurred to me, because this was the only time in my life when I had resolved, no matter what happens, I will reach the end. I adopted this motto: if you hammer at something for a long time, then sooner or later, something will work out. I usually got stuck on the tasks, but since all the solutions are posted somewhere on the Internet, it wasn't difficult to find the one I needed. When it was completely unbearable, I just grabbed the ready-made solution and pasted it. By the way, I had a practice project. When I was going to a tutor at school, I wanted to write a game called Sea Battle. This was my design: you play with the computer and enter the address of a target cell in the console, and the computer displays whether you hit, missed or destroyed a boat. And in like manner, the computer shoots in response, and you let it know if it hit, missed, or destroyed. Then I got stuck on the fact that I couldn't get the computer to fire more intelligently after hitting a multi-cell ship. When a human player hits an opponent's ship, then on the next turn he or she will shoot either above or below, or to the left or right of the previous hit. I couldn't get the computer to shoot that way, because I probably didn't have enough brains. At some point I thought that I should finally finish implementing this game. I sat down, wrote the code, and overcame that previous sticking point. Even before Level 28, I went to an interview. Afterward, I decided it was too early for me to do this. I realized that I didn't know frameworks, and I didn't know how to work with a database. I faced a choice: either study everything to completion on CodeGym and learn frameworks, or start going to interviews. I decided to look for a job.

"At some point, I had a breakthrough and everyone started calling me"

When you learn Java, you have two options: go into back-end development or Android. So, I simultaneously began to learn Android. I wrote a couple of primitive applications. One was a number game, and the other was a calculator. My first interviews didn't go well, because I still did not understand or know many things. I determined to go back to attending interviews more than six months after my first interview (which was an epic failure). When I was much less educated about Java, for some reason I got plenty of invitations to come in for interviews, but after a while, when I leveled-up my skills, they stopped calling. This lasted for about six months — six pretty painful months. A feeling that all this was in vain crept in. The plan was simple: I will continue to study and sooner or later I will be called for more interviews. On my blog, I started posting answers to questions that might be asked in an interview. I collected information, studied it, and began to post it. Some guy wrote to me, thanked me for my posts, and offered to help me with resume writing, if needed. He gave me feedback on my resume, which I corrected. But for some reason, I still wasn't being invited to interviews. I associate this with a lull in the market: most likely, employers didn't need anyone in June. "Then at some point, I had a breakthrough and everyone started calling me." There were several interviews. For example, there was a group interview where we had to prepare answers on pieces of paper, and then they called on the would-be developers in turn to give their answer. The third was an interview with the company where I work now. It's called Loyalty Factory. It began as a startup. The company develops marketing tools designed to increase brand loyalty. Our product is a marketing toolkit that we make for different brands, mainly for restaurants, but it is also suitable for gas stations, beauty salons, and shopping centers. The product consists of a CRM system and a mobile app. So if the client is a restaurant, then we make a mobile app for it. The restaurant's customers download the mobile app, and the restaurant owner gets access to the CRM system, making it possible to see the target audience and send out offers as part of various promotions. In the app, the target audience gets the ability to accumulate points and redeem them for certain rewards. One of our standalone modules enabled integration with payment gateways. We entered the international market far ahead of the quarantine, but the quarantine is exactly what generated that massive demand for home food delivery. Many restaurants needed the ability to allow customers to place orders through a mobile app, and many of them turned to us. Our clients who weren't taking advantage of the food delivery module asked us to customize it for them. This helped them keep their business going during the quarantine, since restaurants could only survive by making deliveries."I vowed not to tie my life to Java" — The story of software developer Anzor - 2

"I took a medical leave of absence at work, and did nothing but eat, sleep, and work on the test task."

I probably got the job here thanks to my cover letter. This was my hundredth resume submission. I was in a foul mood, since no one was inviting me to interview anywhere. In my cover letter, I outlined all my pain and sent it. The recruiter told me later that it was the most touching cover letter in her life, and that it was probably the reason why I was summoned for an interview. After the interview, they gave me a test task: write a program with a web interface that tests an Android app over Wi-Fi. My program was supposed to display which tests succeeded and which ones failed. I was given one week to complete the test. It was the busiest coding week in my entire life. I took a medical leave of absence at work, and did nothing but eat, sleep, and work on the test task. Finally, I finished it and submitted it. After some time, the recruiter called me and said that I had done the test so well that they weren't going to wait for any other candidates. I went there to become a Java developer, but it turned out that this vacancy had been filled, so I was offered to become a tester who would write automated tests. In our test department, no one knew Java except me. I was told that there was a system for manual testing the mobile apps. It was a program with a web interface: you go to the web interface, connect the test application to the test session, and then you see what needs to be done. My first task was to replace the tester who clicks in the test session. Everything got kicked off a short time later: I automated my first test case, then there was the second, and a third... Unfortunately, my brainchild never saw production, because the mobile apps were taking off much faster than I could adapt autotests for them. Later, I was given a second automated testing project — to test the web interface. I had to cover the in-house admin panel with tests. I started writing a program from scratch to test it. When I was finishing my third project, I was offered to move to the department with server developers and write code for them. I was delighted by this. In this department, I began to make some minor improvements, and became acquainted with the system. I was a little afraid of each new task. I was anxious that I wouldn't be able to cope. In the end, everything worked out. Now I am the lead for the team that handles backend development for the mobile apps. One of my subordinates, who is also my cousin, also studied on this Java course. I have been mentoring him. He is currently a junior dev. You might say that I motivated him to study. This training helped change my life for the better, and I wanted to share this opportunity with my loved ones."I vowed not to tie my life to Java" — The story of software developer Anzor - 3

Tips for beginner developers:

1. How to organize your studies

To begin with, I'll tell you about how I studied. I studied in waves. There were periods when I didn't study at all, probably due to burnout. There were periods of a month or more when I didn't do anything. And then a period of recovery would begin. This happened when I realized that if I continued to do nothing, then nothing in my life would change. This conviction led me to wake up at 4:30 in the morning and study a bit before before work. I studied at work. And after work, I came home and studied again. After a while, this naturally led to burnout and doing nothing for months at a time. I didn't give up completely, only because I could clearly see that if I stopped, my life would remain the same. And I didn't like my old life. So I tried not to even allow the thought that I might stop enter into my mind. My motto was "if you hammer at something for a long time, then sooner or later, something will work out." Now, after 4 years, I wouldn't recommend doing the same thing. I don't think everyone will endure such self-cruelty. Working without rest leads to burnout. Stress is beneficial only when stress is followed by some relaxation. So, when it comes to how to organize your studies (as in everything else), I would advise you to study a little at a time, but regularly over the long term. You must relax. Don't force yourself. The brain will only begin to assimilate everything as you rest and sleep. This means you should be equally serious about your studies and your rest.

2. How to look for work

This is straightforward. When looking for a job, your first goal is to get an interview. You will most likely fail. So don't think too much about getting a job right away. To get started, you just need to get into an interview. To make this happen, you need to do only 3 things until you get an invitation somewhere:
  1. Create a resume.
  2. Send your resume to everyone.
  3. Look at the feedback you get. If you don't get many responses, then your resume is like not attractive. Read about how to write a resume, how to apply for jobs, and how to write cover letters. Go to step 1.
After you fail your first interview, give yourself a pat on the back. Mastering a certain body of knowledge and getting into an interview — those are great achievements. The big mistake here would be to give up. Of course, it's unpleasant to get rejected. But everything is going according to plan, and you are much closer to your desired job. Your next goal is to fail another interview. And then one more, and then another... And after each interview, assess what happened. Take a look at your knowledge gaps and make them smaller. You're not in a rush. The main thing is consistent effort and being kind to yourself. You are doing everything right. One day you will receive an offer. This is the destination you are headed for. Your well-deserved offer. You're awesome! When discussing an offer, do not hesitate to ask questions. Ideally, make a list of questions ahead of time. Ask for information about what the workflow is like. What tasks will you be handling? What if you don't feel like working some day and decide to take a break? What if you get sick? Regarding vacation time, can you take all 28 days consecutively, or is that not allowed? Will you have a mentor? And so on. It is better to ask all your questions and agree on everything up front than to get an unpleasant surprise later. Remember, in a job interview, the courting and evaluation go both ways. They need you just as much as you need them.

3. How to get comfortable at work

Be yourself. Don't hesitate to ask questions. Don't be afraid to make mistakes. If you don't understand a lot at first, don't stress out. Everyone is confused at first. You'll start bringing real profits to the company in about 6-12 months. In the meantime, immerse yourself in the process, study the product, and continue your learning.
Comments (1)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Ghiosux Level 17, Chengdu, China
17 April 2021
Exciting! Thank you!