About six months ago, I started a new position as a software engineer.

It's my first full-time developer job ever. And landing it was the culmination of two intense years of learning.

Before I started my job search, I completed freeCodeCamp's entire curriculum – all while working full-time as a teacher.

During all of this, I learned a lot about setting goals and achieving them.

I also learned how to withstand the sting of repeated rejections and failure that come with the career change.

I decided to write about my journey changing careers – from teaching to development – for two reasons.

First of all, I get asked about it almost every day on social media. And this article can serve as a definitive resource for people who want my advice.

The second reason I'm writing this is that my journey was a winding one. This isn't the “completed a bootcamp in 12 weeks and got my first job in tech," story. I think this might serve as encouragement for you if you're also struggling to get your first developer opportunity.

So without further ado, here is my advice to you.

Learn what opportunity is out there – then learn accordingly.

Some of you might be able to afford taking time off work and just focusing on learning. But for those of you who can‘t, you want to start working on real-life stuff as soon as possible.

In order to do this, ask yourself questions like: Where would you like to be in 1-2 years? Which companies do you find interesting? Where would you like to live and work?

Based on your answers, research the market. Look at job postings for those companies you listed, or in the country you want to live.

Or if your dream is working remotely, look for remote jobs that strike you as interesting.

Once you've found all those job postings, start listing down all the skills they ask for.

Then put all this through the filter of your own preferences. This will give you a pretty good list to guide you through your learning journey.

When you're setting goals, you need to know exactly what you want. If you stretch ambitions too wide, you risk losing focus.

An example of this: learning programming languages.

Sure, it's good to know more than one language. But if your priority is getting a job quickly, the most important thing is to focus on the programming principles that go beyond any particular language. And at the same time you need to learn those marketable skills that will make you employable as soon as possible.

Start gaining experience while you learn, in whatever ways you can

One of the biggest issues faced by new developers is lack of experience. Companies want you to have 1-2 years of experience, but if no one wants to hire you, how can you get that experience?

My advice is to start gaining any sort of experience as soon as possible while you are still learning.

While I was doing the freeCodeCamp curriculum, I came across 1millionwomentotech, an online program aiming to bring tech education to women and non-binary people.

I was interested in taking the courses, and they were looking for volunteers, so I signed up both as a student and as a volunteer.

It was an incredible learning experience. And not only I got training out of it, but I also had my first real-world experience of working at a remote organization. I made friends, and got an excellent reference letter at the end of my volunteering.

If you have the opportunity to intern, this is also an excellent way of getting work experience as soon as possible. Not everyone has the privilege of being able to do an unpaid internship, but there are also many paid internships out there.

I was an Outreachy intern and it was one of the most amazing experiences of my life. Outreachy is a program that organizes paid internships with free and open-source projects for people who are underrepresented in the tech industry. I loved it so much that I am now an Outreachy mentor for LibreHealth!

Other options to get hands-on experience are:

  • Building your own projects, alone or with a buddy,
  • Contributing to Open Source projects (you can help fixing bugs or write / translate documentation), and
  • Freelancing. You can start by building websites for your friends' and family's businesses. It will help you become confident with your skills and also add to your portfolio.

It‘s important to start doing this while you're learning. Because the best way to really cement your knowledge is to actually use it in real-world scenarios.

Start interviewing as soon as possible.

Interviews are learning experiences. You can find out what you want and don't want in a company just by how an interview goes. Also, the more experience you have interviewing, the less nervous you get.

I started applying for jobs before I felt 100% ready, because I knew that I would never feel 100% ready.

Apply even if you don't meet all the requirements, and get ready for your interview.

If you're nervous about being under-qualified, don't be. Leave that to your interviewers to decide.

If you made it to the interview, then they are definitely interested in you.

Take notes of what they ask, and prepare questions for the interviewer as well. This is your opportunity to learn what companies are looking for, and how you can prepare yourself to provide that to them.

Also, keep in mind that the interview goes both ways: they're evaluating you, but you should be evaluating them as well. It's a two-way street, and knowing this should help you feel more confident and less stressed during the interview itself.

Talk to as many people as you can who have accomplished what you want to accomplish.

If you know someone who got a job after learning on their own, ask them questions! Be specific.

Vague questions are less likely to give you valuable information since every person's journey is different. But if you're specific you can get valuable insight.

For instance, people often ask me "how did you go from teacher to developer?" I find it's a very difficult question to answer and the answer is kind of useless. It's just my personal story. (You can read it in detail here if you want.) And so many aspects of it are extremely unique to my personal circumstances.

But if someone asks, "how did you fill your knowledge gaps with X skill?" I can give them more useful information, point them to resources, give them examples that they can put into practice, and so on.

Don‘t underestimate the skills you DO have.

When you're changing careers, remember: you might be a junior at programming, but you do have lots of valuable experience and transferable skills.

If you have worked at all in your life, you have technical and non-technical knowledge that can be applied to many situations at your new job.

Many junior developers are career changers who've had jobs before. They were probably good at their old jobs, and have life experience that sets them apart from other candidates.

These career changers are also usually motivated enough that they took a big chance to learn a whole new set of skills. This shows great personal strength, and it makes you stand out as a candidate and a potential asset to the company.

Your previous experience, even if unrelated, is valuable! You just have to find a way to repurpose it and use it to your advantage in your new career path.

Be ready to fail, get up, dust yourself off and try again. MANY times.

If you don't fail at things, you will never succeed at things. Learning to do anything in life means getting it wrong many times before finally getting it right.

Don't worry about rejections. Learn from them, take note and move on. Remember that persistence is your best friend, and you will eventually get the job if you just keep at it long enough.

You can do this.

I think that pretty much whatever you want to do in life is accomplishable.

The level of difficulty might vary depending on your starting point. But the more you put yourself out there and talk to people, the more insight and connections you gain, which will help you in your journey.

Thanks for reading this, and best of luck.

And if you want help staying motivated as you apply for jobs, you can join my Telegram group, Junior Devs.