They say that people with no technical education have no place in programming. They try to frighten you away from thinking about a career change after you hit 30 years. But what if only at age 30 does it become clear that all your previous knowledge and experience led you to the wrong destination?

In reality, it isn't so scary. Anyone can become a programmer at any age. Here's the story of PielsLie, one of our students from St. Petersburg whose educational background is in the humanities and who worked for 10 years in management and sales.

At the time he wrote his success story, he was 32. In about 5 months, he reached Level 35 on CodeGym. He spent 2-3 months on self-education and writing projects, and a few more months on searching for a job. At that point, he got a good offer and landed a job as a software developer.

STEP 1. Learning

The requirements for the main source of learning were clear: a structured presentation of the Java Core material, a lot of practice, and a large community:

  • during interviews, you may be asked anything about "core knowledge" — from bitwise shifting and casting generics to IO and serialization;
  • practice is mandatory; you can remember stuff in programming if you deeply understand the material and reinforce it through practice;
  • And as for the community: if you solve a task, go ahead and show off in the comments; if you can't solve it, you're welcome to ask questions, but no one is likely to give you a ready-made solution.

In all respects, CodeGym fit the bill for the main learning platform. The graduate recommends boning up by reading books: "This same Schildt best covers the topic at hand, and often lays bare certain points."

Tips for those who are approaching their Java learning with a clean slate

  1. Everyone who starts from scratch finds the journey to be difficult. Not a huge percentage of those who start make it to the end of the course. Your objective is to become one of those who do.
  2. You will experience the greatest enthusiasm after a month or two, when the tasks become more difficult and more interesting. Endure.
  3. The most important thing is to make weekly progress. After taking a break for two weeks, it's challenging to get back on the saddle, but not everyone can write code every day for several months in a row.

Set a target for yourself, measured in hours per week: for example, 15. You can code for 1.5 hours every weekday and another 3-4 hours each day of the weekend, or you can rest for a couple of evenings, but then your "weekend quota" will increase. If you do it this way, then your schedule will be flexible but consistent. Of course, later you will be able to measure your work in terms of completed tasks and projects, but when we're talking about syntax and core knowledge, it makes sense to deal in hours.

In total, it took about 5 months to complete the course (before gaining access to the internship), including vacations and short breaks, and that was achieved with a standard five-day work week that only left free time on weekends and weekdays from 10 PM to midnight.

So if you have a more open schedule or adopt a more rigorous training regime, you could manage much faster.

STEP 2. Self-education

Upon reaching Level 35, for several months he independently explored Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, and RDBMS, and mastered SQL and brought all this knowledge together into a unified whole. Six months later, the student had projects that gave him practical experience using "grown-up" frameworks as well as a Github profile, which he could show if a potential employer requested it.

How to create a personal development plan

  1. Run through job postings for junior/middle Java developer positions (or some other area of interest) and see which technologies and frameworks are mentioned most often.
  2. Dream up and write down some test tasks for them. Set deadlines for yourself to implement them.

STEP 3. Looking for work

This stage was the longest and not as smooth as the previous two.

Submitting an honest newbie resume

After completing personal projects, the student sent out roughly 30 applications for junior/trainee vacancies (through HH, LinkedIn, and staffing agencies), indicating the familiar technology stack in his resume, along with some soft skills and a modest mention of his experience.

This yielded two calls, one of which ended immediately due to his pre-intermediate English skills (so learn English too). Two more companies sent their test tasks. He had one "interview" that resulted in a "we'll give you a call".

Attempting to get an internship

Perhaps you can gain experience through unpaid or conditionally paid internships and somehow gain a foothold in a large IT company? This is a good approach, but as it turns out, not for everyone. The story's author performed the test task, but didn't make it past the final interview.

After this experience, our former student writes that he "became somewhat depressed, and put the whole job search on pause for almost six months." He worked in his former profession and wrote some applications for himself.

This continued until he ran into an acquaintance with whom he shared his failures in finding a junior dev job. At that time, his acquaintance was working as a mid-level developer, but he started out the same way — with self-study.

His friend gave a couple of recommendations (some "cheats", according to the author):

  1. One way or another, get yourself 6+ months of professional experience on your resume: internships, thesis projects, freelancing, remote work — whatever. This will greatly help at the stage when HR folks do their initial screening of the resume pile;
  2. Remove the word "junior" and your expected salary from your resume; just leave "Java developer" and discuss your salary individually with each company;
  3. Try to get the person from HR to divulge the possible salary range before you state your expectations. If a company is offering 5,000-6,500 dollars, and you're willing to start for $2,000, some hiring decision-makers will form a low opinion of you.
  4. Respond to every job vacancy that matches your technology stack, even if 1-3 years of professional experience is required.

And it all worked out.

First offer

After the story's author followed the recommendations, the job search situation improved significantly.

First, out of about 12 new responses, half almost immediately ended either with an in-person meeting, or a Skype interview, or a test task.

Second, HR reps began to reach out on their own initiative — via messaging apps, email, and LinkedIn.

Third, the requirements on profession experience turned out to be somewhat flexible: many companies were ready to communicate with a candidate who didn't fall into the specified range of 1-3 years of work in the corporate world.

The bottom line was one offer for a junior developer position and one for a mid-level position with a probation period. In total, the job search took two months.

You can't write a lot of Java code, then look for a job for a long, long time, and then ultimately have it all come to nothing.

Water wears away stone and, as the author writes, "if a 30-year-old humanities student can pull it off, then you will succeed too. The main thing is not to be afraid of the initial phone calls, test tasks, and interviews. Each 'failure' can be a chance to learn something new about yourself and close any gaps in your knowledge. And every time you will feel more confident."