A success story. 20 hours of programming per week, a master's degree, and a personal life - 1After reading about what had to be done, I decided to make a plan for how I should study in order to achieve my goal and finish the courses, because I didn't have time for studying at a leisurely pace. My objective was to learn quickly, but not so quickly as to destroy the desire, giving my brain some time to relax. Because the load that I wanted to tackle would be an obstacle for me.

To start, I'll tell you a little about myself

I'm 27 years old. Before I started learning Java, I studied applied mathematics in the Math Department. It would seem that I should be good at programming, if not excellent. But this wasn't the case for me, because I sabotaged all my courses where programming came up, though I passed through sheer luck — I didn't write any of my own code. So it turned out that I was far from programming. Obviously, in our country you won't make much money with a mathematics education, except as a programmer (Roman is from Ukraine — editor’s note). And that's why I decided to pursue just that. And as it happened, I decided to learn Java. This wasn't the result of any market analysis or a search for the number of job openings, or demand in the labor market. It just happened that way. And when I decided to learn how to learn Java, I came across this course. I didn't really want to learn only from books, but I also wasn't super excited about full-time courses, since they cost a lot of money, but the real benefit is small. So learning online was the best solution for me. After completing the first 3 levels, I realized that I liked the course and could buy a subscription. Moreover, I got a promotional offer and bought mine for half price. This was at the end of August/beginning of September 2015.

My educational plan

After reading about what had to be done, I decided to make a plan for how I should study in order to achieve my goal and finish the courses, because I didn't have time for studying at a leisurely pace. My objective was to learn quickly, but not so quickly as to destroy the desire, giving my brain some time to relax. Because the load that I wanted to tackle would be an obstacle for me. Here's what I decided:
  • I need to study five days a week (Mon-Fri).
  • Over the weekend, I will do anything except study Java.
  • Each session will last a total of 4 hours, with a 15-minute break between each hour, to walk, relax and make tea.
In all, 20 hours a week. Not bad, huh? In addition, I had to go to the university sometimes, because I was still in graduate school. In December, I was already at Level 20 and thought that I knew quite a lot, but I also experienced crises when nothing worked and it seemed that I couldn't go any further. So much so that there came a time when I simply could not assimilate information about collections. Only after a weekend without doing any programming did understanding come.

Moving to a new level

Three months I began my studies, I talked with a friend about what more I needed to know in order to get a job. The unfamiliar words he uttered, like "databases" (horror!), and much more, let me know that I needed to accelerate and do even more. Clearly, knowing Java grammar isn't enough for me to get a job. I began to accelerate in different directions:
  • I bought myself the book "Head First Java". It is recommended in Level 4 of the course. But somehow I wasn't reading carefully and missed this. It teaches the same things, but from a different angle, which helps you understand them better and at a deeper level. I recommend it.
  • I started looking for and going to all the relevant local events in my city, even if I didn't understand much. But eventually I realized that doing this was not in vain. They helped me a lot.
  • I combined my studying with reading programming media to monitor IT salaries, useful events and read articles about developer’s career, etc.
  • I found brief and informative video tutorials about MySQL on YouTube. I recommend them.
  • You also need to understand what HTML and CSS are. There's no way around them.
  • I signed up on LinkedIn, where I started to promote my skills and indicated that I was looking for a job (I might get lucky and be found by somebody). I added everyone as friends indiscriminately, expanding my circle of contacts. To let you know just how much, I now have more than 10,000 friends on LinkedIn. This is necessary to start. And it helped. A team of Android freelancers was looking to add a newbie and they contacted me. I realize that this incident was out of the ordinary, but it happened.

First failures

Of course, in parallel with my studies, I started looking for an internship so I could eventually be employed. I was invited to an interview for an internship. After talking with HR, an English teacher was called over to me, and the two of us had a "conversation". At that time, I wasn't at all prepared, and I listened more than I talked. When asked to tell about myself, I mumbled something, but it wasn't anything special. But when I spoke with the technical lead, I answered some questions and didn't know the answers to many others. When I mentioned that I was studying on JavaRush (the russian-language version of the course — editor’s note), he said that another student from this course had come before me. I was on Level 27, but he was already on Level 34. After we spoke, he said that they would send me a test task, which would decide whether I was a suitable candidate. I finished it somehow, though not with all the functionality. After a while, they wrote to me to say that I'm not a good fit for them... That hurt, but I decided to learn from it and I moved on.

First job

As I already said, about a month and a half after I put together my LinkedIn page, some Android developer contacted me with an invitation to work with a team. Clearly, we're talking about a low-salary position. We met and I got a job offer. Of course, the pay was poor, but I didn't have any other income and was happy to have it. At the end of January, I started Android development in the apartment of one of the team members. Everything was new and different. But someway, somehow, I worked and produced something. It was scary and I didn't understand everything — these were not CodeGym tasks. I had to do everything, read, and learn what and how. I did a test project that could become something more in time. And so it went until May. Then our team began to fall apart somehow. Everyone saw this and started looking for work.

Searching for a new job

Not knowing how to find a job, I decided that I would send out my resume to all the companies in my city. To ensure that everything looked good, I wrote my resume in English, which is the only way to go. Of course, there was a lot of fluff. Because I didn't have much to write, I wrote lots and lots. For each email, I also wrote a cover letter (recruiters love this), where I indicated exactly the position I wanted. It turns out that people often send a resume without a clear indication of position they are applying for. My cover letter was also in English. I totally forgot: you need to have VERY strong English skills. Actually, if you can't read a reply on Stack Overflow, then you're never going to make it. There's nothing for you to do in programming. I prepared a response in English for that favorite interview question: "Tell me about yourself." Let me tell, that was a very useful thing to do. After some time, I received invitations to 4 interviews. My bulk mail to every company was justified. Any company that didn't have the relevant positions usually didn't respond at all. The interviews were difficult. I was embarrassed and uncomfortable, but I went through them. For some, we just talked. For others, I had to do a couple of tasks. For example, I had to write a Java interpreter for the BrainFuck language. This task turned out to be interesting, and I'm glad I finished it, even though I wasn't hired at that company. I was looking for work in either Java or Android. That said, I preferred Java. Mobile development isn't particularly interesting to me. My salary expectations were minimal. I needed to find a job — everything else was no longer important. I was asked about my understanding of databases, about how to create tables for certain situations. I'm talking about SQL databases here. Nobody asked about NoSQL.

First offer

One company wrote to me with a rejection. Then another. There were two companies left: one with an opening for an Android developer, and the other for Java. The Android company called, said I was a good fit, and made me an offer. Victory! I was very happy. But I still hadn't gotten a call about the Java position. I ran around not knowing what to do, so I asked to wait a day to give my answer, so I could call to find out the Java developer position. I called the Java company and said, "I've received an offer, but I wanted to know if you have a decision." I was invited to the office to talk and they told me I would like the result of the conversation. They were right. After our conversation, this second company made an offer, which I accepted. P.S. You need to strive, strive, strive and never give up! P.S.S. I didn't finish the whole course. I stopped at Level 30. And I was on Level 27 when I got the job. I'll actually say that starting from Level 20, you need to look for work and grow in ways beyond Java. Get at least rudimentary skills using project automation tools (Ant, Maven, Gradle). This isn't hard, but it is very necessary. Everyone who liked the article and found it useful, please rate it and leave some comments. Also, follow me on GitHub: romankh3