Changing careers is scary. You've invested your time and experience into your current job. It may be draining or have no room for advancement, but the comfort of getting that regular paycheck doing something you know you can handle is alluring. I've been there; I know what it's like to get stuck in a professional rut. This article is the advice I wish I had gotten back then.
Changing careers is about overcoming your complacency and getting out of your comfort zone. It's about saying enough is enough and I don't have to be miserable at work any more.
If you're thinking of changing careers then software development is an excellent choice. The barrier to entry is low: it is common for software developers to lack a related college degree. The pay is high, at over $60,000 in the US for entry-level positions. There's lots of room for advancement, with many senior developers making well over $100,000 in the US. Living outside of a tech hub is not a serious impediment: remote work is common in the industry.
Don't get me wrong, it's hard to change careers. It will take a lot of work. But as a working Data Engineer who spent seven years in college earning two non-technical degrees, I can assure you that it can be done and it is worth the effort.
"The most important step a man can take. It's not the first one, is it? It's the next one."
Brandon Sanderson, Oathbringer
So you've decided to switch careers and become a software developer. That decision was important, but it was also the easy part. The hard part will be dedicating yourself to reaching that goal, even when it feels like you're not making any progress. I mentor people learning to code at SC Codes, many of them looking to change careers, and the hardest part is not understanding how to code. The hardest part is staying motivated to do hard work when the payoff is months away.
The rest of this article will give you a path to follow towards your next career, and hopefully the confidence to stick with it. The most important step you can take is always the next one.
Learn to Code
Obviously you'll need to learn some coding skills if you are going to convince someone to pay you to do it for a living. The good news is that there are tons of amazing resources out there to help you learn to code, many for free.
Deciding on your first language can seem overwhelming, as this is a big investment of your time you are making and you want to make the right choice. The truth is that once you learn your first language it is much easier to learn others, and at that point you'll be in a better position to decide which language makes the most sense given your goals. It's better to just pick a languange and stick with it.
This process will take many months, and you will hit points where you feel like you've learned and accomplished nothing. The key is to push through those moments and keep on working at it. It will come to you.
Think of it this way: you're learning an entire new profession, one that some people take four years of college to figure out. It will take time, but there's no magic to it, just hard work.
Make and Contribute to Projects
This ties in closely with learning to code. While reading about coding can be helpful, the fastest way to learn is by doing. If you want to learn to code as fast as possible, then start trying to build something as soon as possible. You will hit lots of walls where you will need to research what you need to do next, and that's the kind of reading that will stick to your brain.
Aside from accelerating your learning, projects will also be more important for you than someone with a computer science or related degree. This is because employers will have a tough time judging if you actually know how to code if you have no educational or work experience backing your claim.
You will need to prove your coding chops by showing employers your portfolio of completed projects. By putting your projects on GitHub you will be able to show employers that you have plenty of coding experience, even if no one has paid you for it.
Additionally, once you're a bit more comfortable coding you can see about contributing to existing open source projects. This is akin to volunteer work and should absolutely go on your resume as software development experience. I recommend seeing if there is a Code for America Brigade in your area. They do great work in improving communities and are always happy for volunteers to help them in their mission. It's also a great way to meet fellow programmers.
Meet the Coding Community
This can be as valuable as improving your coding skills. While going out and meeting new people can be scary, it will both make you a better programmer and help you get a job.
There are coding enthusiasts all around the US meeting every week to network, socialize, and learn. If you live in a major metropolitan area there will be more meetings than you could possibly attend. Check out Meetup.com and get involved. You should aim for going to at least one meeting a week. These meetings will give you an opportunity to learn about coding, get advice, and find a mentor.
Additionally, these meetings will help you get a job. First off, many of these meetings will give attendees an opportunity to announce if their company is hiring. This gives you an opportunity to hear about unlisted job openings and make a personal connection with someone involved in the hiring decision. As your network grows and people know you are searching for work you can get people to recommend you for a job, which is more valuable than the most finely tuned resume.
Coding conferences are also a great place to meet other developers. Talking to speakers and other attendees will expand your network and provide a great source of advice.
Look for Coding Opportunities at Your Current Job
This is an area that can give you a leg up over recent graduates just entering the work force. You have the potential to add programming work experience to your resume without first being hired by a software development shop.
If there are more technical roles in your company, talk to your supervisor about what it would take to be assigned more technical tasks.
Excel is widely used in most industries, and trying to get assigned complex work in Excel can be a good way to transition to programming. If you're doing Excel work, see if you can incorporate VBA, a programming language for Excel, into your work.
Another option is to identify a tedious or repetitive task at your work that you think could be automated. Build a program to automate that task, even if your boss won't let you program on company time. If something you program is in use at your work then you can rightly claim professional programming experience.
It will be a lot easier to be hired if you can show that you have already done professional programming.
Hone Your Job Hunting Skills
You've learned to program, built your portfolio of programming projects, and expanded your network, now its time to get a job.
As mentioned above, it is likely to be your connections, not your resume, that land you an interview. Having a poorly composed resume, however, can definitely sink your chances. There are lots of resume writing guides out there, but if writing isn't your strong suit there are also professional resume writing services available.
You should have at least a basic website highlighting your experience and showcasing your projects. Your website, itself, can act as an opportunity to bolster your portfolio.
While you should make your network aware you are searching for work, be respectful and do not spam them with inquiries into job openings.
Study the potential employers in your area. This is especially crucial if you live in an area with a small job market. Understand what a company does and what they are looking for before tailoring your resume and cover letter to match the job you are applying for.
Brush up on your interview skills. There are many resources out there about how to prepare for a coding interview, and you should definitely study up before you go in.
Leverage Your Domain Knowledge
Another advantage you may have over a new graduate is domain knowledge. Try to look for companies that make software related to your current career. If you are a janitor look for companies that make software related to facilities management. If you're a nurse, look into electronic medical record companies. Software is eating the world and no matter what industry you are in, there's a good chance someone is making software to support it. Having domain knowledge is a valuable thing for a software developer to have, and employers know that.
Hopefully this is enough for you to take the next step in your software development career.