There isn’t just one way to become an engineer anymore. These days you can attend a bootcamp, teach yourself, get a degree, or get an internship. I attended a bootcamp but I still had to teach myself during it and just figure things out.

My first company hired me as an apprentice on a trial basis. After I proved myself, they hired me as a full-time engineer. I’m now a published author with one of the biggest engineering publishing companies in the world.

Meanwhile, my sister offered to work for free at a company for the first few weeks, just to prove she could do the work. This just goes to show that there are so many paths open to anyone willing to work hard and learn.

If you didn’t get a CS degree, that’s fine! There are so many other paths to becoming a software engineer. Let's look at a few of them here.

Bootcamps

A legitimate bootcamp is a great investment in your career. When I graduated from college, I felt a little lost on what I wanted to do next.

I’d always loved coding but had never really pursued it. My aunt knew that I was trying to figure out what I should do for my first real career steps, besides internships and part-time jobs in college, and sent me an email about coding bootcamps. This absolutely saved me.

I had never even heard of a coding bootcamp before. I immediately started doing a ton of research. It just seemed too good to be true. I read blog posts from every single student that had been to the bootcamp that I could find online. I read any review I could find. I started emailing students that attended the bootcamp and begging them to answer a few questions.

After I did my research, I decided to apply to Dev Bootcamp. I was so nervous when I got in. I didn’t have the money at the time so I had to take a loan from my parents. I couldn’t even find a reasonably priced apartment in San Francisco, so I was sleeping on a bunk bed with a roommate in a crowded house that had the vibe of Ron Weasley’s house but without the magic.

It was the best thing I had ever done.

Fast forward five years and I’m a senior software engineer. I speak at conferences all the time, I’ve worked at big public companies such as Eventbrite and Pandora. I’ve been interviewed for newspapers and on television several times. I’ve been paid to consult at cutting edge companies, and I’m a published author with the biggest engineering publisher in the world. A coding bootcamp completely changed my life.

But it didn’t work out for everyone that attended with me. I started out with 50–60 students in my cohort. By the time we graduated, about ten graduated with us. Some had stayed behind a cohort to learn a little more. Some dropped out early, while they still got a significant refund. Others decided that engineering wasn’t for them partway through the program when the financial loss was high. Others were asked to leave because they couldn’t keep up.

A coding bootcamp is one of the largest purchases you’ll make in your life. Do your research. Many horror stories exist online of people who paid $10–20k only to find out the bootcamp was a scam or the teachers were inadequate.

A good bootcamp will start with an online phase first, where you’ll learn from your home. It will teach you the basic concepts of programming so that when you get to the onsite portion of the program, you can focus on the tougher engineering concepts with teachers around to answer your questions.

Make sure that you find a program that also has a phase focused on interviewing prep and that supplies you with a career team. This was one of the most beneficial parts of my bootcamp. I got my first engineering job because the bootcamp helped me write out my LinkedIn and make my profile stand out. My first company actually found me on LinkedIn — I didn’t even have to apply.

If you do decide to research coding bootcamps, I recommend you start with the following. bootcamps: HackReactor, App Academy, and Hackbright.

Self-learning

If you have the time and can manage your own time well, this option might be a great fit. It’s definitely the toughest choice because you will need to keep to a schedule and stay motivated.

It’s important to set goals to keep yourself on track. I recommend starting out with free resources before you commit to a more expensive paid course online. Try the freeCodeCamp responsive web design course to start out.

Once you’ve completed a few online courses, start challenging yourself. Don’t just keep following tutorials. Try to build something of your own.

Pick an idea that you’re really excited about. If you’re really passionate about what you’re building, you’ll be motivated to keep going. Do you have any fun websites ideas or command line projects you could try to build? Start small but keep increasing the complexity in your projects. Later on, you can use these projects for your portfolio.

Make sure you carve out a dedicated time each day that you’ll teach yourself how to code. Even if it’s only a half hour every day - that will make a much bigger impact than a few hours once a week.

If you choose to teach yourself, it won’t hurt to find an accountability partner! Try to find someone else who is on the same path as you. Reach out to them once a day and share what you did the day before to push your learning forward and what you’ll do that day.

Apprenticeships/Internships

After I graduated from my coding bootcamp, my first job as an engineer was an apprenticeship with a ticketing startup. The startup had the resources to mentor two junior engineers and I was one of the two selected for the first iteration of the program. I had another offer from a huge tech company at the time that paid much more but I thought it was important to take a risk and prioritize learning.

The apprenticeship taught me more than I ever thought possible in just a few months. I paired with an engineer frequently and the company didn't put pressure on me to produce a ton of code right away.

I was so glad that I decided to take an apprenticeship that focused on learning instead of a more stressful job that wouldn't have focused on teaching me and growing my career as an individual.

The company ended my apprenticeship a month early and hired me full time as a software engineer. I was promoted to a senior software engineer a year and a half later because they had prioritized teaching me and given me individualized attention.

Most apprenticeships and internships are paid and offer mentorship/support. You’ll most likely need to look for programs from larger companies because startups generally don’t have the resources to do these kinds of programs yet.

A larger company will also have a more formalized process which will mean you’ll probably have a dedicated mentor, time to onboard, and more resources. My apprenticeship at a startup was only able to hire me because several senior engineers truly wanted to help grow the career of a junior engineer and volunteered their time.

However, generally the candidates for an apprenticeship or internship have either already graduated with a CS degree, attended a bootcamp, or are generally able to hit the ground running.

My sister taught herself how to code and then told a company she liked that she would work for free for a few weeks to prove herself. They liked her determination in reaching out and they ended up hiring her as an engineer full time even though a huge number of people had applied for the internship.

Since these openings are still highly competitive, it’s very important to make yourself stand out when you apply. If you didn’t attend a bootcamp or have a CS degree, you’ll need to create a great portfolio and resume.

Here's a great blog post on freeCodeCamp about building a great portfolio by Ali Spittel.

Transitioning to Engineering at Your Current Company

At a large public company I worked at previously, many individuals transferred to the engineering team from different teams. Some worked in customer support or in QA.

It wasn’t easy and they still had to teach themselves a lot, but they’re all now working full-time as engineers. They just had to prove that they could do the work and hit the ground running.

This requires you to be able to get your current work done and have the ability to take on extra work in your own time. You’ll need to prove to your company that you can learn fast and you’ll provide benefit. This might mean that you need to work later and on weekends, but it’ll be worth it in the end.

This benefits your company in many different ways because they get an engineer and an engineer that knows how the company works already. If you're working in QA or customer support, you know the product very well already and you know the customer pain points as well. This is a huge asset to a company.

One thing to note is that this won't work if your company doesn't have an engineering team. Ideally, a rather large engineering team so you can have potential mentors and engineers to pair program with when you get stuck.

Anyone Who Can Learn to Code Can Get a Job

I didn’t pursue engineering in college because I thought I wasn’t smart enough. I thought engineering was a field for men and I would be ostracized.

I've now worked as a senior Blockchain engineer, an iOS engineer, a senior frontend engineer, and a senior full-stack engineer. I'm a published author and I've spoken at tech conferences. I have recruiters from Facebook, Google, Twitter, LinkedIn, and Apple reaching out constantly.

If you can stay determined, you can get a job in engineering.

If you enjoyed this post, sign up to my email list here and get my free guide to becoming a software engineer.