This story is about a game developer named Yuri Sharoiko. Before entering IT, he worked in law enforcement and provided security for a bank. He soon became bored by this work and recalled a hobby from his younger days: computer programming. In the end, Yuri learned Java and started writing browser games.
"Ever since I was a kid, I wanted to work with computers"I'm 26 years old. I was born and raised in Novosibirsk (the city in Russia — editor’s note). Ever since I was a kid, I wanted to work with computers, and the whole idea of game development fascinated me. I coded up some text-based quests in C++ and C#, but I didn't shine in my studies (due to my laziness). I wasn't stupid, just unorganized. All this led me to enroll where I saw an opportunity. I had thought about working in law enforcement agencies, so I graduated from the Criminal Law Department at Siberian State University of Railway Engineering (SGUPS), and in the end, I wound up exactly where I wanted to be. In my second year of university, I completed an internship with the Investigative Committee, and so I stayed there. In my fourth year, I was hired. I don't know how it is currently, but it used to be that you could get a job there after your third year. Six months after graduating from the university, I received the rank of lieutenant. I worked for another year and realized that I was tired of all the long nights, guard duty, and lack of social life as such, so I decided to quit. After that, I got a job as part of a bank's security team. This means that I'll omit some details in my story: the NDA is still in effect. There, I maintained some of my desire to re-engineer things. I improved and automated processes. As a result, all these efforts evolved into a relatively large project to create a unified access system for the security department. Although the department consisted of only 50 people, the program (which, by the way, was built on top of notorious MS Access — an approach quite normal for banks, which often do not want to spend money on developing software for the security team) was a bunch of necessary pieces: there was a database, automated creation of Excel and Word files, an Outlook connection, and even text recognition of PDF files via Adobe Acrobat Reader. Thanks to this work, I received a good promotion, but since I was on a security team, I realized that there would not be very many options for further advancement.
"I didn't just study — I devoured the information"Starting in mid-2019, I plunged into an abyss of fatigue and boredom, but my girlfriend reminded me of what I always wanted to do and told me to "give it a try". Why not? — I thought. At that time, given my salary, working hours, and good standing with management, I was in a position to write code at home in the evenings rather than sit in the office until nighttime. So this thought sparked my desire once again and I decided to try. Since I had forgotten everything apart from "cursed" VBA (Editor's note: VBA is a slightly simplified implementation of the Visual Basic programming language built into the Microsoft Office product line), I began by watching YouTube videos and reading Herbert Schildt's book "C++ for Beginners". Incidentally, this is a great book. I recommend it to everyone. At some point, the bank announced a Java retraining program, which I managed to get into. I completed the training in a little over two months. To be honest, it gave me practically nothing, because twice a week for two months isn't enough time to properly cover all the material. The teaching was good, but the topics were passed over too quickly, and there was almost no practice. I would not be completely honest if I didn't acknowledge that this training program was mainly aimed at folks already working as engineers or as part of the bank's IT division. With my zero experience, it was extremely difficult for me. At the end of the "retraining", the bank held internal interviews, during which I finally realized that I didn't know anything. If the bank wasn't willing to hire someone from its own team, it means that the person knows practically nothing. This was December 2019. After some of the interviews ended, I was told about the existence of this Java course. So, when I finally accepted the fact that I wouldn't catch a break with proper knowledge, I registered and began my studies. The active phase of my training was in February-May 2020. It was when we were quarantined in March that I made a complete turnaround. There was no need to go to the office because I was working remotely. The process was arranged so that I could do my job with a delay of one or two days. I didn't just study — I devoured the information, sitting up around the clock. It was normal for me to wake up at 8 AM and start studying. Then after 4 PM, when my brain was already fried, I switched to my remote work. As for motivation, you know, I just understood somewhere inside of me that this was my future. Of course, the support from my feisty girlfriend helped me in many ways to start this difficult path. So I studied for about 2 months. I got wildly exhausted, but in general, I didn't strain my brain too much. For example, if you want to bake something, you will probably preheat the oven to 325 degrees and then increase the temperature, if necessary. You're not likely to immediately set the oven to 450 degrees, because then you would simply burn whatever your making. The same principle applies here. I completed the quest in 2-3 months, after which I began to study all the goodies that employers want (Spring, Hibernate, Tomcat, etc.). By the way, I read the book "Spring 5 for Professionals". There is a sea of information there: of course, sometimes it is difficult to grasp, but in general, everything is digestible. Even YouTube couldn't explain Spring to me any better than this book. I also recommend that you look at the website for the Spring framework. It has tutorials, which are very useful. The most difficult topics for me to learn were buffers, working with files, and bitwise manipulations, but they are used in very few places, and in 99% of those places they are necessary for progress. My difficulty was more with the recursion everywhere. I was just confused, but that's what learning is about: you do something wrong, then you find out how to do it right. You understand the whys and wherefores, and then you stop making those mistakes. After all, you can never learn by doing nothing.
"You don't need to be a genius to have a place in IT"I started looking for a job at Level 28, but I quickly realized that my knowledge was not enough. Then I took a break and in May, once I completed the quest and had read about frameworks, I began the job search again. I think it took at least 10 interviews before I was hired. Nowadays there are a lot of people in IT, but it is becoming increasingly difficult to get through the hiring bottleneck. I would say that three out of ten are typically employed within 1-2 months. The rest take longer, sometimes much longer. But that doesn't mean you should give up on this resource. When I failed my fourth interview, they told me, "Keep going to interviews. You will eventually remember everything, and you will be able to pass an interview and get a job. You'll learn quickly on the job." For the most part, you are asked the same things in interviews. That said, there are also rare exceptions when interviewers might start talking about algorithms. For example, I tried to get a job at a company that implements social projects for the government. On that occasion, I was asked a question about algorithms. I answered it badly, but still followed up with my own question: "Will I really be allowed to work with algorithms?" In response, they said, "Of course not. We have a special team of mid-level and senior developers for that." My interest was piqued, so I asked for further clarification regarding why they bothered to ask. It turns out that this is simply one of the requirement set by management: you cannot work with algorithms, but you must know them before you are hired. During interviews, it is especially important to demonstrate knowledge of Spring, Hibernate, and SQL. It's a small set of technologies, but if you lack sufficient understanding, you'll start spouting nonsense. So if you don't know what you're talking about, a better answer is something like this: "I don't know the exact answer to what you're asking me, but I do know this and this about Spring", and so on. If you do this, then your knowledge, however small, will be noticed. I got a job at a game studio that makes browser-based games (I won't mention the company's name to avoid getting in trouble with management). I develop the back-end part of the game. In other words, I work with databases, write browser add-ons, add features, and connect the back and front ends. I also deal with algorithms. I use Spring (everything is standard: markup, beans, parsers). I work with Tomcat, PostgreSQL, and Hibernate. In general, I perform my assigned tasks to maintain and improve the project to the best of my ability. For now, I'm a junior dev. The first 2 months on the job, I didn't understand anything. With deadlines looming, I made my own decision to work for 12-14 hours a day, and it bore fruit. True, I have a solid mentor (a cool senior dev with fifteen years of experience). He says, "Figure it out on your own. Look at how it works." That is, he doesn't step in to help, and if he does help, then extremely rarely. And you know what? It's right to force a programmer to think for himself or herself. If I hadn't paid my dues by toiling for days from the very beginning, but instead had asked for help with everything, then I wouldn't have been on the path to professional growth. Now I can confidently say that I'm performing tasks at the level of junior developer, and recently I've seen that I'm being assigned tasks that are an order of magnitude higher. For now I'm all about self-development and self-improvement. Programming is a drive. It's new challenges. Don't worry about your salary at the beginning. In six months, it will become decent, and in a year it will generally be excellent. If we are talking about prospects, then you can sit with one place and make decent money, feeling that it isn't for your, fearing to change anything, or you can take a risk. I'm very glad that I wasn't afraid and started working toward my future. After all, I could have continued my previous office drudgery. Ultimately, it seems to me that everyone can have a place in IT. You don't need to be a genius, a scientist, or a great mathematician. If you have perseverance and crave the cutting-edge, then everything is possible.
Tips for beginner developers:
- Watch videos and read. If you're watching a lot of episodes to learn about something on YouTube, try to choose one content creator, since each one conveys thoughts and information differently. If you switch from one YouTuber to another, you could get confused about the same topic.
- Don't try to do everything at once. Especially if you don't work remotely and need to concentrate on your job. Study a couple of hours a day. If you have free time on weekends, do not overwork yourself. You've already been studying for the entire week — it would be better for you to have a rest.
- Try to describe specific skills on your resume. For example, don't write "I know Java" on your resume. That's too vague. Interview questions might stump you if you are asked something that you simply don't know. Do you know Core Java? That's great — write "Core Java" followed by a couple of things that you know really well.