Are you dreaming about getting a job in IT, but you feel stuck? You may be constantly working your way through books and tutorials about the technology that excites you (be it JavaScript, PHP or whatever else), but it still feels like you will never be able to get that Junior Developer position you want.

You tried to write a CV, but you ended up with a blank page — there is simply nothing valuable to put there! You never finished your degree, or maybe never even studied anything IT-related. You don’t have cash to get into this expensive bootcamp which promises you a developer position in one month. No one wants to talk to you, and if somebody does, he/she immediately asks you how many years of experience you have! How are you supposed to gain this legendary experience, if nobody wants to give you a job in the first place!?

If you are in a situation like this, worry no more. By my own example, I will show you that there is a way to kick-start your career in IT, no matter how hopeless your situation might seem. Trust me, I did this once and I am currently in the process of doing it again, so I know what I am talking about!

My background

I have been working as a Frontend Developer for more than 3 years now. Although frontend technologies such as JavaScript and React.js used to excite me very much, I feel that my progress has stalled. For a while now, I have been looking for some area I could transition into, in order to continue learning new things. I decided to give myself a challenge and instead of doing something obvious and (relatively) easy, like trying to become a full stack developer (combining both frontend and backend skills into one role), I gave myself the goal of getting into machine learning.

Machine learning is a very interesting and promising but also extremely challenging field. It requires you to not only master another programming language, like R or Python, but also — if you want to approach the topic seriously — forces you to become familiar with all the theory behind machine learning algorithms and — what usually scares off most of the people — all mathematical foundations underpinning these theories.

I didn’t want to only scratch the surface of machine learning, so I decided to attack the mathematics aspect of it head-on. At the age of 26, I started a degree in mathematics. I even moved cities in order to be able to work full-time and study on weekends.

But after long two years of studying, although I felt I was getting quite good at mathematics, I didn’t feel like I was getting anywhere when it comes to machine learning itself — I still didn’t know a single algorithm and never wrote a single line of machine learning code in R or Python. This, combined with seeing impressive CVs of junior data scientists working at my company, seriously impacted my motivation. Even though I had already devoted two years of my life to this goal, I still wasn’t even a bit closer to getting there. What could I do to change it?

What I did

My initiative started really small — I just wanted to find a few people who, like me, wished to learn this stuff. I wrote a post on a Polish Facebook data science group. The response was overwhelming — hundreds of people declared that they would like to join me. Of course enthusiasm of many of those people was short-lived, but in general there was a clear interest in studying machine learning as a group.

So I started such a “study group”. In order to not exclude anyone, I decided that these meetings would take place online, using video-conference software. No matter where you lived, you would have a chance to participate.

We decided to pick a book suitable for beginners and follow it, to give our meetings proper structure. We chose the excellent “Introduction to Statistical Learning”, since it doesn’t assume any previous background in the field or in mathematics. Also, it is available online, completely for free. Each week two or three volunteers would prepare a presentation or a live-coding session based on a chapter from the book.

We also decided to record all of the meetings and to post them on YouTube. This would allow us to easily go back to previous material if necessary, but would also be a visible documentation of the work we put into learning this material. By the way, if you are interested in studying machine learning and data science, you can watch these materials here and join our Facebook group.

Share what you (don’t) know

But how does that relate to you and your situation?

The thing is, if you don’t yet have the skills necessary to start a programming career, the only thing you can do is to study. And there is nothing worse than spending a considerable amount of time on learning a new skill, only to realize, after many months or even years, that you have no tangible record of what you did.

In theory, you now know all the stuff you need, but your CV is still empty. When you study something on your own, you don’t get a degree in the end. You also don’t have any truly impressive project to show off, since building something beyond a basic “Hello world” application requires substantial amounts of time and effort. And — even though you know quite a bit at this point — your knowledge may still be a bit shaky, which, in addition to stress, hurts your chances during job interviews. So, what should you do?

Document and share what you do and don’t know.

If you learn some topic, after you are done, don’t just move on to the next one. Write a blog post. Make a YouTube video. Organize a study group and explain the topic to others. Attend a meetup and give a presentation about what was the biggest challenge for you in learning about this topic.

It doesn’t really matter what you do. Just pick one of those things, or come up with your own. And simply do it. Over and over again.

Why?

Proof

Whatever you prepare — your blog posts, your YouTube videos, photos on Facebook from the meetups you participated in — will be your proof. Gather them in one place. Ideally you should have a single link that leads to what you have collected over the months — just as the link I have posted here earlier. This way there will be no questions.

It is not a proof that you are an expert. It is not a proof that you now know everything about the field. But it is a proof that you are excited about what you are learning. It is a proof that you learned the topics well enough to present them in some form to others. If you do it long enough and stay consistent, it will be a proof that you are very serious about learning this stuff. After all, if it was just a short-lived interest, you wouldn’t be putting so much effort into it. But you are. And you have a proof.

Imagine yourself in the shoes of a recruiter or even a company owner. You are looking for junior programmers. You don’t mind if somebody lacks some specific skills. You just want him/her to be as enthusiastic about the subject as possible, eager to learn more and have sufficient background to actually be able to learn this stuff. Showing off your blog posts or videos, collected over the span of months, will be more than enough to at least start the conversation. On the contrary, it’s not that easy, if the only thing you can share is a spoken promise, that you really have spent a lot of time learning the subject.

Gain recognition

Working in IT is not a popularity contest. Or is it?

Even if you don’t wish to become a developer superstar (but why wouldn’t you!?), gaining some recognition in your local developer circles can only help you. Most companies looking for employees have an employee referral program, where a current employee can recommend some new candidate. This can, again, open some doors for you and enable you to at least get an interview. Quite possibly such a recommendation would also allow you to score some bonus points even before the first meeting. If somebody takes time and effort to recommend you, it must mean you have something valuable to offer.

But even if you are still too inexperienced to land that first job, you will at the very least meet several like-minded people. Many of them will be just a tiny bit more experienced than you. They will almost certainly react positively to what you do, because they still remember the struggles they went through. But, since they are ahead of you, they will also often offer to help you in any way you need — whether it’s recommending great resources, explaining a particularly difficult topic, or solving with you some problem you had during your learning. Getting help completely for free? Sounds good, doesn’t it? And it doesn’t stop there — I got recently invited to a big machine learning conference for free, where tickets usually cost more than one thousand złoty!

And don’t be shy in promoting yourself. Because you are creating something that is actually valuable for other people and because you are an underdog, you will have a lot of leeway in marketing yourself and your content. That happened to me on several Facebook groups, where usually excessive self-promoting is frowned upon. Because I am not a huge company, but simply a guy trying to learn machine learning, I can get away with inviting others to join my study group and watch my videos as much as I want.

Consistency is key

Learning programming is not actually that difficult — it just requires time and patience. There are simply an awful lot of basics you need to go through to start building something notable. None of these basics are difficult in itself, it’s just the sheer amount of material to learn that is overwhelming to newcomers.

The best way to learn programming is simply to not stop. After the first few months of learning you might realize how much there still is to go through. If you get discouraged and “take a break”, there is a high chance you will never go back to learning. Or maybe you will, but after many months you will have to relearn most of the stuff, which — believe me — is even more discouraging.

So you just have to stick to it. Easy to say, right?

That’s where, once again, publishing your work might help you. You probably have heard that in any endeavor it is best to set yourself goals which are very precise, concrete and easily measurable. The goal of just “learning something in free time” is actually very poor. A much better goal would be, for example, publishing one blog post a week. It’s a great goal, because it is very concrete and easily measurable: at the end of the week you either did it or not. This makes it easy to keep yourself accountable.

Approaching the problem like this will motivate you to work harder than you expect. You will often find yourself realizing on Saturday evening that you did nothing to achieve your goal. Instead of watching the next episode of some series, you will instead start working on your article and by the end of the weekend you will be able to mark this week as a success, bringing you one step closer to your goal.

This approach will not only motivate you short term, but also long term. Seeing a long list of stuff you have learned (your proof), will motivate you to keep going when inevitable problems and obstacles occur. After all, you already have done all this work. Quitting now would be such a waste!

Also, if your actions gain some following — say, your blog posts will be actually read by somebody or your YouTube videos will be watched on a regular basis — this will further motivate you to keep going. You will feel accountable to all the people that are watching you. It’s like betting with somebody that you will stick to your goal, but there are 200 people you bet with rather than just one.

You are the only one who can explain it well

Let’s face it. Experts are bored by what you are learning. They have seen this stuff too many times. They forgot what it means to not understand it. So when trying to explain it, it is easy for them to omit certain details or brush over the topic too quickly, unless they have an experience or a great passion for teaching.

But you couldn’t understand this particular topic just a week ago. And now you can. So use that to create the best explanation of the topic possible.

Why couldn’t you understand it in the first place? Did you lack some previous knowledge which turned out to be necessary here? Or maybe all the examples in the sources you have read were too complex? Think about it carefully and write/record/present an explanation that lacks these drawbacks. Ironically, your inexperience puts you in a great position to explain something to others, who have a similar level of knowledge.

Test your knowledge — or have it tested

There will be moments when you will have learned something, but you still won’t be sure if you understand the topic correctly. That’s great!

First of all, the pressure of having to present your knowledge to others, by itself will motivate you to clear up any doubts you may have about the topic. Often during creating your content, you will realize that you didn’t understand the subject that well after all and you will go back to review it at least once more.

Second of all, even if you post something that is wrong, people online will point this out to you immediately. Don’t be scared of criticism, quite the contrary - look for it. In the long run this will make you better at what you want to learn. It’s much better to have your work judged and improve in this way, than to learn in isolation, realizing after some time that your knowledge is actually full of misconceptions.

I mean, come on, it’s not THAT much more work!

You don’t have to become a YouTube superstar. Your blog doesn’t have to be known world-wide. This is not your goal. At least not yet (but who knows what might happen).

That’s why you don’t have to try too hard. You probably have everything you need right now to start. You don’t need to buy the expensive microphone your favourite youtuber has. You don’t need to spend half a year building a customized blogging platform. Just record yourself with your laptop camera, with decent sound. Just create an account on one of many free blogging platforms and choose a blog skin you enjoy.

It’s not THAT much more work. You will have to study this stuff anyway. You will have to learn it well anyway. You will have to be able to explain it to somebody anyway. So why not spend a few hours on Sunday afternoon, and write down something you have learned this week?

Don’t worry if what you end up with is not perfect. Just post it. And next weekend do it again. And again. And again.

If you feel that this is still too much work for you, set another, more modest goal. Maybe one post every 2 weeks? It doesn’t really matter what you do, as long as you can be consistent with it over long periods of time.

And now… get to work!

So there you have it. This is my recipe for kick-starting your career in IT. It’s not a guide on how to become a developer in one month. It will require time and constant effort. For sure, it will not be easy.

This is something I wish I did when I was learning front-end development and now I am trying to apply it in order to switch to a machine learning career. It is already showing a great promise — I get invited to conferences, people even start to recognize me here and there, but what is most important — I finally feel like I have a realistic chance to do something that probably will be the most difficult switch in my entire career. I hope this advice will work for you as well, no matter what are you trying to accomplish. If and when it does — feel free to reach out to me and share your incredible story!