Does a math degree give an edge when learning programming? Everything depends on how much effort you put into related subjects.

This is the story of Roman, who is from Ukraine. Today he is a senior Java developer. In mid-2015, he was a student working on a master's degree in applied mathematics. The original story is here. Below you can find the most important parts.

Given the realities of his native country, Roman was certain that an education in mathematics would only earn him good money as a programmer. But his choice to become a Java developer was more random rather deliberate. He didn't want to study only from books or in full-time courses: our student decided that they cost too much money, but offered little benefit.

And then he found our Java course. This was at the end of August/beginning of September 2015.

A Java study plan

As he prepared his learning plan, Roman proceeded from the fact that he did not have time to goof around.

He set a goal: gain knowledge quickly in order to maintain interest in learning, but not so fast that he would overload his brain.

Accordingly, this is what he decided:

  1. Study five days a week (from Monday to Friday).
  2. Over the weekend, do anything except study.
  3. Allocate 4 hours for each study session — after each hour, take a 15 minute break to walk, relax, and make tea.

A total of 20 hours a week. Not bad, huh? In addition, Roman had to go to the university sometimes, because he was still in graduate school.

By December, he had completed half of the course, and decided that he had already learned a massive amount, though there were crisis moments when his brain refused to receive new information, and only a weekend without any programming helped him make progress.

Moving to a new level

Three months after Roman began his studies, he started wondering what more he needed to know in order to get a job. For advice, he turned programmers he knows.

And oh the unfamiliar words he heard, like "databases" (horror!), and much more, let him know that he needed to pick up the pace and do even more. These tips will surely help you too.

  1. Reading books. In Roman's case, "Head First Java", which is recommended for very green beginners, was useful. It helped him better understand some of the nuances.
  2. Networking. You should visit all the relevant programmer hangouts in your city (and elsewhere). Even if a lot is unclear, this is how you immerse yourself in the environment.
  3. IT websites. Media for programmers, video courses on YouTube, forums — you need to delve into all this, and read useful articles form a holistic picture of what it means for a Java developer to flourish.
    Personally, we recommend starting with the Articles, Forum and Chat sections on CodeGym :)
  4. Master related technologies: MySQL, HTML, and CSS and much more.
  5. Create a cool LinkedIn profile for yourself, list all your skills, and actively expand your circle of professional connections.
    Roman shares his experience: "I now have more than 10,000 friends on LinkedIn. This is necessary to start. And it helped [when] a team of Android freelancers was looking to add a newbie and they contacted me."

First failures

Of course, in parallel with his studies, Roman was looking for an internship at companies, and one day he got an interview. He was not ready to convincingly present himself in English and answer all the tech lead's questions. According to him, he "finished [the test task] somehow, though not with all the functionality. After a while, his application was declined, and he decided to move on.

Roman got his first job thanks to LinkedIn, where he was invited to participate in an Android development project. The real work, of course, was more difficult than the tasks on CodeGym, and there was a lot to learn along the way. The team was gradually falling apart, so they weren't able to take the pilot project to a new level, and he had to look for a new job.

Searching for a new job

Where to go? Roman scoured online media for programmers, where he found contact information for suitable companies in his city. He started a massive mailing campaign.

To ensure that everything looked good, he wrote his resume in English. According to him, it was full of a lot of fluff, since he felt he had nothing special to write. An obligatory item is a cover letter (which should also be in English) so recruiters understand what position you are applying for and why. He prepared a response in English for that favorite interview question: "Tell me about yourself." It is very useful.

The interviews were difficult, embarrassing, and uncomfortable, but Roman got through them. At some, they just wanted to chat. In others, doing a couple of coding tasks was necessary.

First offer

After four interviews, two companies declined Roman, but two made him an offer: one for the position of an Android developer, the other for a Java developer. He waffled for a while, not knowing what to do, but eventually he became a Java developer.

A few years have passed and Roman is a senior Java developer, who in his spare time is actively involved in open source projects (here is his GitHub profile) and often shares his useful experience with students in the "Articles" section on CodeGym.